问题标签 [coding-style]

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 投票
12 回答
24669 浏览

language-agnostic - 具有最小圈复杂度的条件日志记录

阅读“你的/一个好的圈复杂度限制是多少? ”后,我意识到我的许多同事对我们项目的这个新的QA政策感到非常恼火:每个函数不再有 10 个圈复杂度。

含义:不超过10个'if'、'else'、'try'、'catch'等代码工作流分支语句。对。正如我在'你测试私有方法吗?',这样的政策有很多好的副作用。

但是:在我们(200 人 - 7 年之久)项目开始时,我们很高兴记录日志(不,我们不能轻易将其委托给某种“面向方面编程”的日志方法)。

当我们的系统的第一个版本上线时,我们遇到了巨大的内存问题,不是因为日志记录(曾经关闭过),而是因为日志参数(字符串),它们总是被计算出来,然后传递给'info()' 或 'fine()' 函数,却发现日志记录的级别是 'OFF',并且没有发生日志记录!

所以 QA 回来并敦促我们的程序员进行条件日志记录。总是。

但是现在,由于每个函数限制的“不能移动”10 个圈复杂度级别,他们认为他们放入函数中的各种日志被认为是一种负担,因为每个“if(isLoggable())”都是算作+1圈复杂度!

因此,如果一个函数具有 8 个“if”、“else”等,在一个紧密耦合的不易共享算法中,以及 3 个关键日志操作......即使条件日志可能不是真的,它们也会超出限制该功能的所述复杂性的一部分......

您将如何解决这种情况?
我在我的项目中看到了一些有趣的编码演变(由于那个“冲突”),但我只想先得到你的想法。


谢谢你的所有答案。
我必须坚持认为问题与“格式”无关,而是与“参数评估”相关(在调用一个什么都不做的方法之前进行评估可能非常昂贵)
所以当一个在“A String”上面写的时候,我实际上意味着 aFunction(),aFunction() 返回一个字符串,并调用一个复杂的方法来收集和计算要由记录器显示的所有类型的日志数据......使用条件日志,因此人为增加“圈复杂度”的实际问题......)

我现在得到了你们中的一些人提出的“可变参数函数”点(谢谢约翰)。
注意:java6 中的快速测试表明,我的varargs 函数在被调用之前确实评估了它的参数,因此它不能应用于函数调用,而是用于“日志检索器对象”(或“函数包装器”),其中 toString( ) 只会在需要时调用。知道了。

我现在已经发布了我在这个主题上的经验。
我会把它留在那里直到下周二投票,然后我会选择你的答案之一。
再次感谢您的所有建议:)

0 投票
2 回答
2503 浏览

c# - DataGridViewCell 边框颜色

有谁知道如何在 C# 中更改 Datagridviewcell 的边框颜色?

这是我的意思的图片:

Datagridviewstyle http://www.zivillian.de/datagridview.png 图片

Backgroundcolor、Textcolor 和Images都没有问题,但我不知道如何实现Borders。

编辑:我想用 winforms 实现这一点。

另一个问题是第二排的十字架,但那是以后...

0 投票
32 回答
49788 浏览

text-editor - 在当今时代,是否有正当理由在代码文件中强制规定最大宽度为 80 个字符?

严重地。在 22 英寸显示器上,它可能只覆盖屏幕的四分之一。我需要一些弹药来打破这条规则。


我并不是说不应该有限制。我只是说,80 个字符非常小。

0 投票
33 回答
29038 浏览

coding-style - 您对成员变量使用什么样的前缀?

毫无疑问,对于理解代码来说,给成员变量一个前缀是很重要的,这样它们就可以很容易地与“正常”变量区分开来。

但是你使用什么样的前缀?

我一直在处理我们使用m_作为前缀的项目,在其他项目中我们只使用下划线(我个人不喜欢,因为只使用下划线不够说明)。

在另一个项目中,我们使用了长前缀形式,它也包括变量类型。例如mul_是u nsigned long类型的成员变量的前缀。

现在让我知道您使用哪种前缀(并请说明原因)。

编辑:你们中的大多数人似乎在没有为成员变量添加特殊前缀的情况下编写代码!这取决于语言吗?根据我的经验,C++ 代码倾向于使用下划线或m_作为成员变量的前缀。其他语言呢?

0 投票
3 回答
142 浏览

.net - 使用属性初始化时如何格式化多个属性?(。网)

例如:

或者:

0 投票
2 回答
769 浏览

coding-style - 是否可以在代码库中嵌入 Cockburn 风格的文本 UML 用例内容以提高代码可读性?

在代码中试验 Cockburn 用例

我正在编写一些复杂的 UI 代码。我决定将 Cockburn 用例用于鱼、风筝和海平面(由 Martin Fowler 在他的《UML Distilled》一书中讨论)。我将 Cockburn 用例封装在静态 C# 对象中,以便我可以针对代表 UI 工作流程中步骤的静态常量测试逻辑条件。这个想法是您可以阅读代码并知道它在做什么,因为包装的对象及其公共内容通过名称空间为您提供了英语用例。

此外,我打算使用反射来抽出包含所描述用例的错误消息。这个想法是堆栈跟踪可以包含一些英语用例的 UI 用例步骤。结果证明这是一种有趣的方式来实现一个迷你的、伪轻量级的域语言,但无需编写 DSL 编译器。所以我的问题是这是否是一个好方法?有没有人做过类似的事情?


c# 示例片段如下

假设我们有一些 aspx 页面,它有 3 个用户控件(有很多可点击的东西)。用户必须单击一个特定用户控件中的内容(可能进行某种选择),然后 UI 必须在视觉上提示用户选择成功。现在,当该项目被选中时,用户必须浏览网格视图以在其他用户控件之一中找到项目,然后选择某些内容。这听起来很容易管理,但代码可能会变得丑陋。

在我的例子中,用户控制主页捕获的所有发送的事件消息。这样,页面就像 UI 事件的中央处理器一样,可以跟踪用户点击时发生的情况。

因此,在主 aspx 页面中,我们捕获了第一个用户控件的事件。

因此,在 MyCompany.MyApp.Web.UseCases 命名空间中,我们可能有这样的代码:

嵌入在类中的工作流用例可以是内部类或静态方法或枚举或任何为您提供最干净命名空间的东西。我不记得我最初做了什么,但你明白了。

0 投票
3 回答
480 浏览

silverlight - Silverlight 2 中的不可变样式

有人在 Silverlight 2 中找到了绕过不可变样式的好模式吗?

我的意思是,有没有人可以解决这样一个事实,即一旦设置了元素的样式,就无法以编程方式切换它,即这里的第二行将引发灾难性的失败异常:

this.TestButton.Style = (Style)Application.Current.Resources["Fred"];
this.TestButton.Style = (Style)Application.Current.Resources["Barney"];

0 投票
8 回答
14066 浏览

haskell - if/else 控制块的良好 Haskell 编码风格?

我正在学习 Haskell,希望它能帮助我更接近函数式编程。以前,我主要使用具有类 C 语法的语言,如 C、Java 和 D。

我对 Wikibooks 教程if使用的/else控制块的编码风格有一点疑问。代码如下所示:

这让我很困惑,因为这种编码风格完全违反了类 C 语言中推荐的风格,我们应该在同一列缩进if,else if和。else

我知道它在 Haskell 中不起作用,因为如果我缩进elseif.

但是下面的风格呢?我认为它比上面的要清楚得多。但是由于上面的内容被 Wikibooks 和 Yet Another Haskell Tutorial 使用,在 Haskell 官方网站上被标记为“最佳在线教程”,我不确定这种编码风格是否是 Haskell 程序中的约定。

所以,我很好奇哪种编码风格更常用——或者这段代码是否还有另一种编码风格?

0 投票
45 回答
8338 浏览

formatting - 编程风格重要吗?有多重要?

去年我正在对一个团队成员的代码进行故障排除,它缺少缩进和注释。我正在和他谈论这件事,告诉他这不是一个好主意,但他被冒犯了。他比我聪明,或者当然受过更多教育。

从那以后我发现他申请了微软,当他们让他做一个双向链表实现时,他写了没有缩进或评论,说他没有时间担心风格。(这是一封电子邮件提交,需要 2 小时才能完成)

微软没有给他回电话……你觉得他们怎么回应,你会怎么回应?

微软的任何人都可以建议他们在这种情况下会做什么?

0 投票
2 回答
555 浏览

programming-languages - Haskell新手:使用布局与否?优点和缺点是什么(使用示例)

我似乎找不到太多关于 haskells 布局功能的信息,因为我知道它类似于 pythons 格式要求,但它是可选的。如何选择不正确使用此选项?没有它开始是一个好主意,这样我就可以对语言本身有一个坚实的感觉吗?