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

oop - 什么时候上课太长?

什么时候函数太长?我认为是这个问题的一个子集。

确定类太长的几个好的指标是什么?

我正在为一个与外部承包商的项目重新修订一组代码验收指南,并意识到我过去没有涵盖这一点,但将来应该涵盖这一点。

0 投票
5 回答
18168 浏览

c++ - C++:如何设计实用程序类?

但我不知道我是否应该使用静态方法,只是一个标题、一个类或其他东西?

什么是最佳实践?但是,我不想拥有实用程序类的实例。

我想添加如下功能:

0 投票
4 回答
291 浏览

c# - Design of LINQ code

What are your suggestions for designing linq code in project? Especially, I`m interesting in code design of big and complex linq queries?

For example, you know, that you need to write a lot of huge linq stuff, maybe some of your code will have duplicate parts, maybe not, and you need:

  1. Make the code easily supportive - means, if you need to change something . - you are changing one thing, not many

  2. Make the code easy to read - means, if you need to find something - you easily doing this.

You can use your examples, maybe your practice. Maybe some patterns, that you saw anywhere - anything.

Saying linq I mean any linq, linq to sql, linq to objects, linq to xml, etc.

Tnx

0 投票
4 回答
547 浏览

c# - 分离业务逻辑

我有一个定义了属性和方法的客户类。目前它包含与客户相关的任何类型任务的方法。例如,它包含一个方法“InsertOrUpdateCustomer”。此方法要么将新客户记录插入数据库,要么便于编辑现有客户记录。

该类还包含一些客户字段的验证方法。

我认为这不是更好的方法。我想像这样打破它:

我想将此接口实现到另一个类,比如客户:

我想知道:

  1. 在哪里添加插入或更新新客户的方法?我应该创建另一个类还是向上面的类添加方法?

  2. 用上述给定的方式打破我的旧单班是否有益?接口在上面的代码中有什么好处?

  3. 我想删除验证方法并改用验证框架。我是否需要创建一个不同的类“CustomerValidations”来进行验证,或者我应该使用上面的类本身?

0 投票
6 回答
269 浏览

c# - 使用字符串而不是枚举?

使用字符串而不是枚举进行比较是否常见?

0 投票
1 回答
108 浏览

wcf - 防止 WCF 服务中的大量参数?

我正在开发一个基本上是围绕 Oracle 存储过程的包装器的 Web 服务,它目前有 11 个参数。并不是说有 11 个论点,但我觉得应该有一个结构来放置其中的至少一些,以保持良好的架构。所有的参数都需要传递,但是代码的可读性会受到如此长的调用的影响。

该服务是报告我们的客户端应用程序从第 3 方公司成功下载,以便我们可以跟踪我们的帐单(包括客户和第 3 方)。

简而言之,就是 3 Guids、5 ints、an int[]、adouble[]和 a string。两个阵列是平行的。

如果它发生任何变化,后端服务是 .Net 4.0 WCF 服务,但发出请求的应用程序将是 .Net 2.0 Windows 窗体应用程序。

您保证将什么样的业务关系耦合到对象中?知道这是使用 SOAP 传输的最佳方式是什么?

0 投票
2 回答
183 浏览

c++ - 有效地维护略有不同的(记录/非记录)功能

我有许多用于在图上进行社区检测的算法,现在我想将它们可视化。这种可视化要求我“劫持”这些算法,同时它们执行并记录它们正在做什么。具体来说,这意味着将对 a 的引用std::vector<graph_partition>作为参数传递给这些算法,并在算法进行时附加到该向量。

因此,对于每个算法(通常只是函数),我需要为 , 添加一个进一步的参数&std::vector<graph_partition>,并为日志添加一两行代码。

但是,我并不总是想要/需要记录,因此以智能方式执行此操作已被证明并非易事。我曾想过:

  • 为每个算法编写单独的日志记录版本:这里的问题是我会大量重复自己,因为 95% 的日志记录和非日志记录函数将是相同的。你可以说我的代码应该是模块化的,以至于不应该发生重复,但在实践中,除非我有很多微小的琐碎函数,否则我将不得不重复自己。
  • 有一个带有条件参数的函数来决定是否记录:问题是&std::vector<graph_partition>当我不想使用它时我传递了什么?此外(可能是微不足道的)持续评估条件的运行时影响。
  • 一些宏魔法:宏有点邪恶,如果可能的话,宁愿避免使用它们。
  • 默认情况下只记录,如果我不需要它就丢弃:方便但浪费,无论是在运行时间还是空间方面。

任何关于这些的想法或想法将不胜感激。

0 投票
14 回答
18080 浏览

java - 多个 If-else 或 enum - 哪个更可取,为什么?

这是原始代码:

这就是我改变它的方式:

我看到enums代码更长,可能不如if-else代码清晰,但我相信它更好,有人可以告诉我,为什么我错了(或者我错了)?

UPD - 将源代码更改为更针对特定问题。我将重新提出这个问题:使用枚举而不是 if-else 是否有任何顾虑?

0 投票
3 回答
224 浏览

c# - 使用块嘉豪?

我想听听您对以下主题的看法:

想象一下,我们有一个负责实现一个特定目的的方法,但要做到这一点,它需要大量本地范围对象的支持,其中许多都实现了IDisposable.

MS 编码标准说,当使用IDisposable不需要“存活”方法范围的本地对象时(不会返回或不会分配给某些较长寿命的状态信息object),您应该使用该using构造。

问题是,在某些情况下,您可以获得嵌套的“地狱”using块:

如果您使用的某些对象派生自一个公共基础或实现一个interface实现IDisposable. 这当然是以在需要对象的真实类型时必须强制转换所述对象为代价的。有时这可能是可行的,只要施法量不会失控:

另一种选择是不使用using块并直接实现try-catch块。这看起来像:

有趣的是,VS Code Analyzer 会将此代码标记为“错误”。它将通知您,并非所有可能的执行路径都能确保所有一次性对象都在超出范围之前被释放。我只能看到,如果在处理时抛出了某个对象,我认为这永远不会发生,如果确实发生了,这通常表明事情正在发生,你可能最好像你一样快速优雅地退出可以从您的整个应用程序中。

所以,问题是:你更喜欢哪种方法?using不管有多少嵌套块总是更可取,或者超过一定限制,最好使用try-catch块?

0 投票
2 回答
417 浏览

c# - 在 IVR 系统的 apsx 页面中打开/关闭数据库连接

我目前正在开发 IVR 系统,我的问题更多是在基本架构的开发方面和打开/关闭数据库连接。从下面的代码可以看出,在 page_load 中我打开一个连接,传递变量,然后关闭连接。我的问题在于在页面加载期间未设置变量,它们是在调用进入时设置的,位于 Boolean ParseXML 部分中。我需要知道在页面加载期间打开连接的最佳方式是什么,收集完变量后传递它们,然后最后关闭连接。最重要的是如何做到这一点,我尝试了几种不同的方法,但都没有成功。

我最初的思考过程和方法是拆分数据库连接代码,并将它们放在页面生命周期的不同部分。但是我在准确放置它的位置方面取得了零成功。

布尔解析,写入文本文件。但我希望它也能写入数据库。