问题标签 [code-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
702 浏览

c# - 尝试使用会话变量,询问给定的会话变量是否不为空

正如底部描述的情况(使用Webworms而不是Mvc),

由于我可能需要“掌握” Session 变量的实现,几乎在每个 Web 应用程序中,我都构建了一个专用的类来帮助我轻松管理它。

方法如下

这第一个代码块是供使用的,你可以在下一个代码块看到它正在调用的类

我故意使用拼写错误的名称,以避免歧义(没有任何前缀),..这样我可以在智能感知上发现它更容易。

到目前为止,这是 a 的一个实例struct,即“分组”或“捆绑”所有我globals作为一个捆绑包,

因此,当我可能需要存储全局变量时,我会将值分配给CurSesVarStruct必须提供的适当结构变量。

然后,我只需要访问一次会话变量,只提取“变量集合” - object,......因为它实际上是一个会话变量,我保持它的名称不变 -_CurrentSesionGlobals

我尽力描述了背景,但简而言之:

它是作为会话变量之一存储在会话中的结构 - 数据类型 =object 或者您可以说要在会话之间保存的结构的克隆。

所以有了它_CurrentSesionGlobals,我可以通过它从会话中访问我需要的任何值,如下所示:

在将结构存储在之前分配结构Session

然后下一个方法 -ExtrctSesnVar()下面,允许我使用例如:

提取上次会话中保存的变量:

SelectedUercustid实际上也是结构成员之一。

问题

_CurrentSesionGlobals从会话变量中提取。

问题

我怎么能把结果的返回值null

或首先询问我试图提取的object/ a given是否不存在或不存在的条件?Session Variablenull

因为现在有一个异常错误,而我试图获取一个不存在的会话变量的值。

下一个代码块。

这是我添加到解决方案中的一个类,作为每个网站应用程序的助手。

它实际上是一个命名空间。所以负责处理会话变量的类是Sesn

0 投票
2 回答
1051 浏览

c# - 适合一对List的数据类型对象,作为一个容器来容纳两者

在我开始从事的一个新项目中,我自己学习 c#,

其中一种方法,接受List<string>类型数据,作为参数传入。我想知道,现在……需要其中两个列表、两种类型的数据或两组,

就这个例子来说,说我有一个优点缺点,或者..女孩男孩

这些实际上是 2 个独立的元素或对象列表,我需要作为参数传入,并且我希望它作为一个数据类型传递,然后,在方法内部,我将处理数据列表的分离, 所以.. 而不是几个List对象 i, 想(在那里一秒钟, aDictionary将是合适的...)

虽然我只有一个元素(一个项目......每个都是一个List),但在我需要传递的这种数据类型中

我该怎么做才能得到这个结果?

我将尝试说明它:

对于源中的 eace 项目...从源中加载两者

已完成 List Girls + List Boys 已填充,尽管知道您将只有一个女孩和一个男孩 ListObjects,但您如何将它们作为字典传递?

相反,我需要它像

记住的几件事...关于数据的属性,它应该具有良好的性能...自然需要,尽管最重要的是,它应该是适当的/易于安排的,并且适合使用循环进行排序的迭代,并且受到所有类型的影响的统计操作。

  • 问题是,

您将如何实现逻辑,它是我正在考虑的现有数据类型吗?

如果不是,您将在这种情况下实施什么方法来选择/制作数据类型?

0 投票
1 回答
222 浏览

c++ - 从 Objective C 到 C++ 打字头痛

我曾在 C++ 中工作过,但那是几年前,在过去 5 年左右的时间里,我几乎只在 Objective C 中工作过,也许我只是觉得这样做很舒服。

但是,我正在编写一个 C++ json-parser,它在概念上很困难,因为没有像 Objective C 中那样的自然映射。我并不是说它更好,只是说我还没有找到自然映射.

因此,在 Objective CI 中,通常会开始将 json 解析为 NSDictionary,因为它映射得非常好。NSDictionary 是键值对数据类型,其中键通常是字符串(但可以是任何类型),值通常是 NSObject(从概念上讲),并且在 Objc 中,所有内容都继承 NSObject,因此类型是一种“自动多态” “如果你愿意的话。(为任何可能确切知道如何帮助我但如果我不解释 Objc 则不明白我要求什么的 C++ 开发人员提供的解释)。

无论如何,这意味着如果我有一个示例 json-string:

它已经精确映射到一个 NSDictionary,其中第一个值是整数(或数字),第二个是浮点数(或数字),第三个是 NSString,第四个是 NSArray,它保存三个值,在我的示例中恰好是整数,但可以只要它是从 NSObject 派生的,就可以是任何东西。

在 C++ 中,这对我来说更难理解和找到一个好的映射或模型,我想我可以滚动我自己的多态类型来做同样的事情,然后我可以有一个抽象类型的映射并得到几乎相同行为。

但要么我认为我需要编写自己的容器(地图和矢量)或编写自己的“Json 类型”。然而,我有点害怕陷入 Objc 中正确的思维方式,因为它是一种非常不同的语言,并且建立在与 C++ 完全不同的设计理念之上。

也许有更好和更正确的方法在 C++ 中做这样的事情,我只是不知道。所以我的问题是如何在 C++ 中以一种好的方式处理可能具有不同类型的事物。

0 投票
2 回答
2267 浏览

c# - 为什么没有 string.Split(string) 重载?

是否有任何正当理由为什么没有String.Split接受分隔符字符串和要拆分的文本的重载?

然后可以像这样使用

我真的知道,我可以很容易地创建一个扩展方法,但必须有正当的理由为什么没有添加它。

请注意,我不是在寻找如何使用字符串分隔符拆分字符串的解决方案,而是在寻找解释,为什么这样的重载会导致问题。这是因为我不认为它真的会引起问题,而且我发现初学者很难理解为什么我们必须传递一个实际string[]而不是简单string的分隔符。

0 投票
3 回答
314 浏览

objective-c - 编写额外的代码来执行涉及 ivars 的单元测试可以还是应该不惜一切代价避免?

在编写单元测试时我还是个新手,我经常遇到这样的情况,我不知道什么是正确的做事方式。为计划中的设计编写测试我遇到了其中一个引起头皮屑的实例。我的设计:

一个 ViewController 根据用户的输入将消息发送到 dataFetcherClass。(以下代码已更改以保护无辜者)。

这些操作的数据格式相同,它是 dataFetcher 应该从更改中收集数据的位置。所以,在 BusinessDataFetcherClass 我有这些方法:

fetchData 方法异步获取数据,并在完成后发送包含收集到的数据的通知。现在,我想编写单元测试,检查在执行 fetchLocalData 或 fetchWorldwideData 时 ivar _dataAddress 是否已更改。

如果不更改代码,这显然是不可能的。有人会说,这可以通过将 _dataAddress 设置为公共属性来轻松解决,这是一种解决方案。另一种方法是创建一个返回 _dataAddress ivar 值的方法。我对这两种选择都不完全满意,因为它们在两种情况下都迫使我只为测试更改代码,而不是提高实际代码库本身的整体质量。

我选择了第二种选择,并包含了一个方法 -(NSString *) dataAddress; 我的问题(如标题中所述)是这样是否可以?我的设计有问题吗?显然,TDD 的首要目标是避免回归,但我相信提高整体代码质量也是一个重要目标。是否会添加偶尔的绒毛?

0 投票
1 回答
113 浏览

objective-c - Objective-C 的 @synthesize 是否需要为每种类型完成?

我目前在我的 obj-c 文件的顶部有一大堆 @synthesize。

现在我正在为每种类型的变量做@synthesize,所以如果我有2个整数,称为xx,yy,那么我对它们都使用@synthesize等,但我仍然有很多行@synthesizes。

所以我的问题是,我需要这样做吗?

或者我可以把所有东西都放在一条大的@synthesize 线上吗?

是否需要将它们分成单独的@synthesizes?

0 投票
3 回答
296 浏览

c# - 代码的可读性是否证明嵌套的 try-catch 块用于流控制?

此代码检索日志文件的行并尝试在分隔字段之一中查找日期。哪个字符是分隔符可能会有所不同,并且可以在哪个字段中找到日期也会有所不同。它也可以写成不同的日期格式或从 Unix 纪元时间经过的毫秒数。它从列表的底部开始,如果没有找到,它会递归地向上移动,直到没有更多的行可以读取。因此,最简单、最易读的方法(在我看来)是使用嵌套的 try-catch 块,但鉴于它也是一种递归方法,理论上应该会降低性能吗?这是一个糟糕的代码吗?

我可以将一堆 if-else 块与 DateTime.TryParse 一起使用,并为结果添加额外的变量,但这会让我的眼睛流血。代码的可读性是否证明嵌套的 try-catch 块用于流控制?

0 投票
4 回答
3743 浏览

java - 将实例变量传递给实例方法与直接访问它们?

想象一下我有一个带有实例成员的类

此外,我有 4 个实例方法访问此成员。现在我想知道是否有任何真正的优点/缺点可以直接从实例方法访问实例成员或将实例成员作为参数传递给每个实例方法?

0 投票
1 回答
163 浏览

java - 在 Java 中使用 JDEvAn 和 Code-Imp 进行代码重构

我被分配了一个使用 JDEvAn 和 Code-Imp 工具在 java 中进行代码重构的项目。该任务的实际论文是Moghadam/Cinnéide [DOI]的“使用设计差异进行自动化重构”。任何人都可以建议我如何开始或提到的主题的任何教程?

0 投票
2 回答
52 浏览

java - 使用 Reference VS getReference 多次调用同一个对象

我只想问以下哪种情况更好:

或者

由于第一种情况需要导入Documentsecond 不需要,同时 second 需要多次调用getDoc()first 不需要,所以可读性和功能更好