Questions tagged «coding-standards»

编码标准或编码约定是旨在管理软件项目中代码生成过程的规则或准则集。它们通常基于行业最佳实践或公认的惯例。它们包括命名约定,样式,禁止的功能等。

10
您通常将对象或其成员变量发送到函数中吗?
这两种情况之间普遍接受的做法是: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } 要么 function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } 换句话说,通常是将整个对象传递给您,还是只传递所需的字段,这更好吗?

4
魔术字符串/数字的用法
这是一个颇具争议的话题,我想与程序员一样多。但是,为此,我想知道业务(或您的工作场所)中的常见做法。 在我的工作场所,我们有严格的编码准则。其中一部分专门用于魔术字符串/数字。它指出(对于C#): 除了定义符号常量外,请勿在代码中使用数字或字符串的文字值。使用以下模式定义常量: public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; } 有例外:几乎可以始终安全地使用值0、1和null。通常,值2和-1也可以。用于记录或跟踪的字符串不受此规则的限制。当文字的含义在上下文中很清楚且不受将来的更改时,允许使用文字。 mean = (a + b) / 2; // okay WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough 理想的情况是在以下情况下一些官方研究论文对代码的可读性/可维护性产生影响: 魔术数字/字符串无处不在 魔术字符串/数字会被常量声明合理地替换(或在不同程度的覆盖范围内)-请不要因为使用“合理地”而对我大喊大叫,我知道每个人都有不同的想法,“合理地”是什么 魔术字符串/数字被多余地替换在不需要的地方(请参见下面的示例) 在与一位同事争论时,我希望这样做具有一些基于科学的论据,而后者将要声明常量,例如: private const char SemiColon = ';'; private …

9
运算符前后的换行符[关闭]
尽管Sun的Java代码约定建议将换行符放在操作员之前,但许多其他准则也对此表示反对。我看不出任何明显的利弊,因此使用其中一种样式相对于另一种样式是否有优势? String longVarName = a + b + c + d + e + f; 与 String longVarName = a + b + c + d + e + f;

1
如何在生产代码中处理函数名称错误?
我最近在GitHub上遇到了一个Python库。该库很棒,但是在函数名称中包含一个明显的错字。让我们称它为dummy_fuction()应该dummy_function()。此功能肯定是“狂野的”,最有可能在嵌入式系统中使用。 我想到的第一件事是添加具有正确名称的函数的第二个版本,并为下一版本的第一个版本添加弃用警告。 三个问题: 上面的方法会产生意想不到的后果吗? 是否有解决此类问题的标准方法? 弃用警告应保留多长时间?

6
HTML / CSS命名约定(语法)的实际注意事项
问题: 和值中的语法有哪些实际考虑因素?classid 请注意,我并不是在询问语义,即所使用的实际单词,例如本博客文章中所述。命名约定方面已经有很多资源,事实上,这使我对各种语法位的实用信息的搜索变得困难,这些信息包括:-大写,插补(特别是破折号)的使用,要使用或避免的特定字符等。 总结一下我问这个问题的原因: 命名限制的ID和类不自然导致任何约定 命名约定在语义方面的资源丰富,使得对句法方面的考虑变得模糊 我在此找不到任何权威来源 SE程序员对此主题还没有任何问题:) 我考虑过使用的一些约定: UpperCamelCase,主要是作为服务器端编码的交叉习惯 lowerCamelCase,与JavaScript命名约定保持一致 css-style-classes,这与css属性的命名一致(但在选择Ctrl + Shift + ArrowKey文本时可能会令人讨厌) with_under_scores,我个人没见过用过 alllowercase,简单易记,但长名称很难读 UPPERCASEFTW,这是惹恼其他程序员的好方法(可能与选项4结合使用以提高可读性) 可能我也遗漏了一些重要的选项或组合。那么:命名约定有哪些考虑因素,它们导致了哪些约定?

6
有什么充分的理由可以大写SQL关键字?
似乎有很多开发人员通过大写关键字来编写SQL: SELECT column FROM table INNER JOIN table ON condition WHERE condition GROUP BY clause HAVING condition 我想知道为什么人们会坚持这种方法?显然,这是一个由来已久的惯例-但我从未遇到过需要大写的RDBMS 。 就我个人而言,我发现那条呼喊的关键词引起了人们对查询错误部分的注意,这就是为什么我用小写形式写关键词的原因。 尽管如此,仍然有足够多的人使用此约定,我认为我可能会遗漏某些东西,因此是这个问题。

5
为什么Lisp社区更喜欢在函数末尾累积所有括号?
为什么Lisp社区更喜欢在函数末尾累积所有括号: (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive))) 为什么不采用C或Java这样的约定? 好吧,Lisp比这些语言要古老得多,但是我说的是当代的Lispers。 (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive) ) ) 注意:代码段摘自《 Clojure的喜悦》一书。

8
使用预先存在的不良做法还是与旧代码不太适合的良好做法更好?
我之所以这样想,是因为我试图为现有的3rd party软件编写扩展,而他们的数据库却被严重地非规范化。我需要使用他们现有的表并添加一堆新字段。 我可以选择以其设计风格(包含几乎所有属性都放在一个大表中)创建新表,或者一起创建一组新表,并使用诸如触发器之类的其他功能在新表和新表之间同步数据。旧桌子。 我最终选择了使用现有不良设计风格的第一种选择,但是我面临的问题是:采用预先存在的不良做法还是实施与现有代码不能很好地配合的良好做法更好?在某些情况下,我应该选择一个? 注意:到目前为止,许多答案都与缓慢重构错误代码有关,但是我无法做到这一点。该代码不是我们的,供应商经常对其进行更新。我只能在上面建立。

17
如何在C#中命名私有变量?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 什么是C#中私有变量的最佳实践和最普遍接受的命名约定? private int myInteger; private int MyInteger; private int mMyInteger; private int _myInteger; private int _MyInteger; 神秘的其他选择 您使用哪个?为什么?(我的公司对C#来说还很陌生,我想选择一种最“行业认可”的方法来尝试进入我们的编码标准。)

8
在什么时候禁忌在循环中循环?
只是好奇。我曾经遇到过的最多的是for循环中的for循环,因为从Linus Torvalds读取以下内容后: 制表符是8个字符,因此缩进也是8个字符。有些异端运动试图使缩进量增加4个(甚至2个!)字符,这类似于试图将PI的值定义为3。 原理:缩进的整个思想是明确定义控制块的开始和结束位置。尤其是当您连续20个小时查看屏幕时,如果压痕较大,则发现压痕的工作原理要容易得多。 现在,有些人会声称具有8个字符的缩进会使代码向右移得太远,并使得在80个字符的终端屏幕上难以阅读。 答案是,如果您需要三个以上的缩进级别,那么无论如何您都会被搞砸,应该修复程序。 https://www.kernel.org/doc/Documentation/CodingStyle 我认为进入第三层循环对我来说是不可接受的做法,并且会重组我的代码(Primally Qt)。 莱纳斯在开玩笑吗? 是否取决于语言或应用程序? 是否有某些事情绝对需要三级或更多级循环?

7
避免过于复杂的方法-循环复杂性
不确定如何使用这种方法来降低环复杂性。声纳报告为13,而预期为10。我敢肯定,保持这种方法不会造成任何危害,不过,这只是挑战我如何遵循Sonar的法则。任何想法将不胜感激。 public static long parseTimeValue(String sValue) { if (sValue == null) { return 0; } try { long millis; if (sValue.endsWith("S")) { millis = new ExtractSecond(sValue).invoke(); } else if (sValue.endsWith("ms")) { millis = new ExtractMillisecond(sValue).invoke(); } else if (sValue.endsWith("s")) { millis = new ExtractInSecond(sValue).invoke(); } else if (sValue.endsWith("m")) { millis …

3
命名“必要时执行X”方法
命名检查X是否需要完成的方法的好方法是什么?如果需要X可以这样做吗? 例如,如何命名新用户登录后更新用户列表的方法?UpdateListIfNeeded似乎太长了,虽然简单UpdateList意味着每次都可能进行昂贵且不必要的操作。EnsureListUpdated也是一个变体。 C#有一个bool TryXXX(args, out result)模式(例如int.TryParse(str, out num))来检查X是否可能并且可以这样做,但这是稍有不同的。

12
如果长函数具有内部结构,是否可以接受?
当使用支持嵌套函数(例如Python和D)的语言处理复杂算法时,我经常编写大型函数(因为算法很复杂),但是通过使用嵌套函数来构造复杂代码来减轻这种情况。即使大型功能(超过100行)仍通过使用嵌套功能在内部进行了结构合理,仍然被认为是邪恶的? 编辑:对于那些不熟悉Python或D的人,这些语言中的嵌套函数还允许访问外部函数范围。在D中,此访问权限允许外部范围内的变量发生突变。在Python中,它仅允许读取。在D中,可以通过声明显式禁用对嵌套函数中的外部范围的访问static。

21
自我记录代码与 注释代码
已锁定。该问题被锁定,因为有许多离题的评论。它目前不接受新的答案或互动。 我进行了搜索,但是找不到我想要的东西,如果已经提出这个问题,请随时与我联系。 本月早些时候发表了这篇文章: http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/ 概括地说,如果您不编写注释,那么您就是一个糟糕的程序员。我个人的观点是,代码应具有描述性,并且除非注释不能自我描述,否则大多数情况下不需要注释。 在给出的例子中 // Get the extension off the image filename $pieces = explode('.', $image_name); $extension = array_pop($pieces); 作者说此代码应该给出注释,我个人认为该代码应该是描述性的函数调用: $extension = GetFileExtension($image_filename); 但是,在评论中实际上有人提出了这样的建议: http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-programmer/comment-page-2/#comment-357130 作者回应说评论者是“其中的一个人”,即一个不好的程序员。 其他人对自我描述代码与评论代码有何看法?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.