问题标签 [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 投票
2 回答
142 浏览

c# - 我需要一个 c# 不允许赋值运算符重载的设计解释

我真的很想知道c#不允许赋值运算符重载的设计解释。我确信一定有一个超过有效的,我需要知道它。

答案实际上就在这里,这很有意义(谢谢乔恩):

为什么'='不能在C#中重载?

0 投票
2 回答
431 浏览

javascript - Javascript 模块模式 - 失去这个范围

一段时间以来一直在研究 js 模块模式以满足“某些网站”不断升级的需求。本质上,我只需要一种对脚本进行分组/封装的好方法,以及有时需要 OO 模式。

我有一个工作正常的结构,但我对它的某些部分不满意......所以我正在重构它。这是更新的模式:

这会产生一个令人满意的 DOM 结构(通过 firebug 检查)——但我this在一个特定区域中失去了范围 = 在内部调用返回对象的“公共”方法。

在此模式的前一次迭代中,“类”对象是自执行的,并且对的引用this保持不变:

但是,在重构模式中,我希望通过 实例化这些“类” new,以获得对执行顺序的更多控制。

我已经阅读了很多很多关于 js 中词汇范围的相当令人麻木的主题的文章......但没有得出任何结论。

我应该如何维护this更新后的模块模式的范围?

0 投票
1 回答
4557 浏览

java - 泽西岛的身份验证

我想为基于 Jersey0 的服务器/客户端 REST 实现身份验证,但我不确定如何准确地布置代码。

基本上对于每个操作,我都有 2 种方法 - 1 种来自服务器端,1 种来自客户端。

我已经缩小了算法的范围——我将使用带有 HMAC 的亚马逊策略。

问题是如何在代码中进行布局 - 我应该将身份验证(加密/解密代码)添加到每个方法中 - 无论是服务器/客户端还是我应该在双方都有一个“调度”方法来执行加密/解密,然后将执行控制转移到更专业的版本,这样我将有 1 个中心位置在客户端或服务器中完成身份验证?

我愿意听听你对此的评论吗?

0 投票
3 回答
174 浏览

c# - 用布尔值做保险丝

我有很多代码必须在初始化期间运行一次。

我必须以这种方式使用布尔标志,因为它在一个事件中

因为它经常发生,所以我做了一些事情来使这个布尔变量看起来像一个保险丝

所以我这样做了:

如果初始化为false,则查询结果一次返回false,切换为true,后续调用返回true。

当然,它有效,但我只是适度满意,我相信还有更优雅的解决方案。什么是你的?

0 投票
3 回答
291 浏览

c++ - 什么时候应该限制派生类中虚函数的可访问性?

考虑以下代码:

关于这个问题,我听到了两种不同的思想流派:

1) 让可访问性与基类相同,因为用户无论如何都可以使用 static_cast 来获得访问权限。

2) 使函数尽可能私有。如果用户需要 a->Foo() 而不是 b->Foo(),那么 Derived::Foo 应该是私有的。如果需要,它总是可以公开的。

有理由选择其中一个吗?

0 投票
3 回答
212 浏览

python - 将大views.py 拆分成更小的部分

我有一个很大的views.py文件,所以我把它分成views.pyadmin_views.py. 由于函数往往依赖于另一个文件中的函数,所以我做了以下事情:

我发现这会导致循环依赖,并且导入不起作用。解决此问题的最佳方法是什么?我知道我可以将 import 语句放在文件的底部,但这似乎不太优雅。

0 投票
1 回答
1043 浏览

wpf - 为什么 System.Windows.Automation.Peers.AutomationPeer.GetPattern() 方法不使用泛型?

GetPattern()方法的实现是WPF UI Automation system采用 enum 参数实现的PatternInterface,我们通常以如下方式使用它:

从上面的代码来看,Question中带有注释 Line 的行似乎不是强类型的,我们需要将GetPattern()方法的返回值强制转换为所需的接口,然后使用它来调用特定的 UI 自动化。

问题是: 如果使用.Net Framework 中已经存在的GetPattern()方法实现如下,会不会更好:WPFGenerics

  • 在哪里,然后我会在调用该方法时传递所需的接口模式名称,GetPattern<T>并获得该接口实例的强类型,并且也不需要castGetPattern()微软在方法的原始实现中给出了什么想法 enum
  • 在方法参数中使用枚举不会破坏GetPattern()原始实现的可维护性。我会说,当需要支持新的 Control 接口模式时,需要将该模式接口的枚举值添加到名为PatternInterface

我想调用方法并使用以下使用调用通用实现的新代码获取接口模式会更容易和更好:

0 投票
1 回答
4948 浏览

jsp - 如何用数据库中的值填充 jsp 页面中的选择框,以及如果 servlet 将数据发送回调用 jsp 时将其值显示为选中状态?

我是 JSP、Servlet 和 Java bean 领域的初学者。我正在处理一个包含创建用户组的 html 表单的 jsp 文件。我正在尝试使用 MVC 模型开发这种形式。此表单包含 2 个文本框和 2 个选择框。在这些选择框中,您可以选择多个值,一个包含用户的选择框。每当第一次调用 jsp 页面时,此用户选择框将被填充

从数据库中获取的用户名。表单功能是这样的,每当提交表单时,都会调用表单的 action 方法中提到的 servlet。这个 servlet 检查用户是否已经存在于数据库中。如果组

名称在数据库中不存在,则组名和其他表单数据将保存在数据库中,并且回复属性将发送回值为“成功”的 jsp 页面。如果组名已存在,则发送回复属性

返回值为“duplicate”的jsp页面,其余的表单数据也被发送回jsp页面,以便该表单数据将被填充回表单。

这是我的 JSP 文件代码。

根据jsp页面中的上述代码和提到的评论,我对此有以下疑问和疑问。

  • 如您所见,当第一次调用 jsp 页面以及将控件从 servlet 发送回 jsp 页面时,我编写了一些代码来填充用户选择框。此代码包含 java 代码。我认为这种填充用户选择框的解决方案不适合按照 MVC 模式进行编码,即它不是适当的代码设计。我已经读过在 jsp 中编写 java 代码不是一个好习惯。如何使这种编码简短而优化?

  • 请在jsp代码中找到第2行和第3行,即jsp的userbean标签。使用此标签创建的对象仅用于填充用户列表框。我认为这也不是最佳编码。如何使这种编码简短而最佳?

  • 如果输入的组名已经存在于数据库中,则 servlet 将所有数据设置为请求对象的属性,并使用请求调度程序将其转发到 jsp 页面,但在这里,如果您检查地址栏中的 url,则当 jsp 页面显示时,浏览器带有预填充表单它没有在 url 中显示 jsp 页面名称。它显示 servlet 名称。那么如何让他的jsp名称回到地址栏中呢?

  • 互联网上是否有任何链接提供有关代码设计信息的信息以及真实的单词问题和像上面这样的初学者示例?

我需要一些专家的指导和建议来解决这个问题。请指导我解决这个问题。

谢谢你

0 投票
2 回答
2328 浏览

java - Java:扩展 Observable 的类的接口

我正在制作一个程序,并希望将业务逻辑保留在接口后面(这是一种很好的方式,我理解)。我也希望业务逻辑是 Observable,而 Observable 是一个具体的类。

程序的其他部分需要知道业务逻辑 1) 实现了我自己的接口,2) 扩展了 Observable。

我怎么做?

0 投票
1 回答
990 浏览

java - 设计 junit 测试用例 - 每个测试用例的预定义步骤

我有兴趣了解如何设计我的 junit 测试用例,以便它们更具可读性和可维护性。这是问题所在 - 在我所有的 junit 测试用例中,我有一些预定义的步骤要执行,如下所示

问题是如果我要添加一个新的测试用例,我需要确保新的测试用例调用 mockObjectX()、mockObjectY()、mockObjectZ()。有没有更好的方法(一种更易于维护的方法)来设计我的测试用例,以便添加新的测试用例变得更简单?

我认为 @Before 不能使用,因为 mock* 方法接受参数。

我能想到的一种方法是有一个类,其中包含模拟对象 X、Y 和 Z 所需的每个参数值的方法

这减少了编号。每个测试用例需要进行的方法调用次数。有更好的想法吗?