Questions tagged «coding-standards»

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

8
团队内部冲突的Java样式
我是Java开发团队的一员,截止日期为6周。这需要非常非常快地编写大量代码。但是,我们的开发团队具有不同的编码风格。从名称约定到抽象方法的所有内容在我们的团队中都不同。有人知道任何指示Java“标准”的文件吗? 为了澄清,我想知道是否有一个组织会规定例如变量和函数的正确命名约定。这是至关重要的,因为在如此短的期限内,我们不能花时间尝试理解彼此的代码。

9
是否必须水平滚动使代码可读性降低?
好吧 是否认为这是不良做法? IMO,它的可读性较差。我讨厌必须向右滚动,然后向左滚动,向右滚动,向左滚动等等。它使编码更加痛苦,有时使我感到困惑。 例如,无论何时我编码长字符串,我都将执行以下操作... bigLongSqlStatement = "select * from sometable st inner join anothertable at" + "on st.id = at.id" + "and so on..." + "and so on..." + "and so on..."

5
编码标准是否有太多的统一性?
是否有太多的统一性?在我工作的地方,我们当然有一些标准,包括命名约定,体系结构,可利用的框架等。但是最近,我认为应该更多地考虑样式的事情很多。 例如if,使用c#??null-coalescing运算符而不是say == null,在多行对一行中编写语句,而不是缩进间隔等。 在我看来,这开始越来越多地成为个人风格的选择,而不必在团队或公司中保持统一。一个人的想法可能更清楚地阅读了另一个人。这种“额外”的均匀性是否有价值?

5
编码标准的演变,您如何处理它们?
在现有代码库的项目中,您如何处理编码标准/样式指南中的演变?假设您的团队中的某人在编程语言中发现了一种更好的对象实例化方法。并不是说旧的方法是不好的或越野的,而是新的方法不再那么冗长,而感觉却更加优雅。所有团队成员都非常喜欢。您会更改所有现有代码吗? 假设您的代码库大约有500.000多行代码。您是否仍要更改所有现有代码?还是只让新代码遵守新标准?基本上失去一致性? 您如何处理项目编码标准的演变?

3
为什么我们不为枚举,抽象类和结构添加前缀?
C#社区已经无处不在地使用“ I”前缀来表示一个接口,即使是最没有经验的程序员也知道会使用它。 为什么我们不给枚举,抽象类或结构加上前缀(可能分别以“ E”,“ A”和“ S”开头)? 例如,如果我们确实用“ A”标记了所有抽象类,它将提供有关该类型的有价值的信息,尽管可以推断出这种信息并不是立即显而易见的。 请注意,我不主张这种改变,我只是在试图理解为什么我们不这样做。 该线程回答了我们为什么使用“ I”前缀的原因,但没有回答为什么我们不使用其他前缀的原因。

3
“静态”作为关于无状态的语义线索?
我最近在Java中进行了一个中型项目的重构,以返回并添加单元测试。当我意识到模拟单例和静态模型是多么痛苦时,我终于“明白了”我一直以来一直在阅读的内容。(我是需要从经验中学习的人之一。哦。) 因此,既然我正在使用Spring创建对象并将它们连接在一起,那么我就不用去左右static关键字了。(如果我有可能要模拟它,那么它在与Math.abs()相同的意义上并不是真正的静态,对吧?)问题是,我已经习惯于使用static来表示方法不依赖在任何对象状态下。例如: //Before import com.thirdparty.ThirdPartyLibrary.Thingy; public class ThirdPartyLibraryWrapper { public static Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... ThirdPartyLibraryWrapper.newThingy(input); //After public class ThirdPartyFactory { public Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... thirdPartyFactoryInstance.newThingy(input); 因此,这就是敏感的地方。我喜欢旧方法,因为大写字母告诉我,就像Math.sin(x)一样,ThirdPartyLibraryWrapper.newThingy(x)每次都以相同的方式执行相同的操作。没有对象状态可以更改对象执行我要执行的操作的方式。这是我正在考虑的一些可能的答案。 没有其他人有这种感觉,所以我有问题。也许我只是还没有真正内部化OO的做事方式!也许我在用Java编写,但在FORTRAN或类似语言中思考。(由于我从未写过FORTRAN,这会给人留下深刻的印象。) 也许出于论证代码的目的,我正在使用静态作为不变性的一种代理。话虽这么说,有什么线索 要我在我的人一起,以保持它的到来代码知道什么是有状态的,什么不是? 如果我选择好的对象隐喻,也许应该只是免费提供?例如thingyWrapper,听起来好像它的包装状态是独立的,而包装状态Thingy本身可能是可变的。同样,thingyFactory听起来应该是不变的,但在创建时可能会选择不同的策略。


3
在将字符串变量与带有.equals()的字符串文字进行比较时,是否存在关于项目顺序的标准做法?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 每个都有好处,我了解其中的区别,但是什么是最佳/标准做法?又为什么呢? 例如 : "myString".equals(myStringVar) 避免潜在的NPE,并且不需要空检查。(好东西?) 读取的更干净,因为不需要空检查。 如果null不是期望值,则您的程序可能会中断而没有任何明智之举。 然而 myStringVar.equals("myString") 如果null为期望值,则需要进行null检查。(好东西?) 可以使用空检查使复合条件变得混乱。 允许NPE通知我们是否发生了故障。 哪个变体被认为是Java使用的标准,为什么?

3
使用编码标准可以避免的错误
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我正在寻找统计数据(或估计值)来支持编码标准有助于减少错误的说法。硬数字会很好,尽管我没有发现太多东西。我什至研究过各种开源项目的错误跟踪,但是并不是很成功地找到了我需要的东西。外面有人知道我可以找到这个地方吗?还是你们中的任何人对任何存在漏洞的开源项目做出了贡献,而这些漏洞可以通过更好的编码标准来避免?

9
有关代码文档生产率收益/损失的研究
经过大量搜索,我未能回答与软件开发领域中已知的假设有关的基本问题: 什么是已知的: 对足够的代码文档(无论是Doxygen标记,Javadoc还是仅仅是大量注释)实施严格的政策,都会增加开发代码所需的时间。 但: 拥有详尽的文档(甚至API),可以在新手和经验丰富的开发人员添加功能或修复bug时带来生产率的提高(有人认为)。 问题: 保证此类文档所需的额外开发时间是否能被下游生产率的提高(从严格的经济意义上来说)所抵消? 我正在寻找案例研究或答案,可以带给他们客观的证据来支持得出的结论。 提前致谢!

12
布尔逻辑的可维护性-是否需要语句嵌套?
其中哪一个对可维护性更好? if (byteArrayVariable != null) if (byteArrayVariable .Length != 0) //Do something with byteArrayVariable 要么 if ((byteArrayVariable != null) && (byteArrayVariable.Length != 0)) //Do something with byteArrayVariable 我更喜欢阅读和编写第二篇文章,但我想起在代码中阅读完整内容是,这样做不利于可维护性。 这是因为if如果第一部分为假,并且并非所有语言都这样做,则您依赖语言来不评估第二部分。(第二部分如果使用null评估,将引发异常byteArrayVariable。) 我不知道这是否真的值得担心,我想就这个问题提供一般反馈。 谢谢。

6
我应该严格遵守每个HTML和CSS标准吗?
几年前,我认为自己有点像是Web开发人员,了解基本的3种语言(HTML,CSS,JS)和许多PHP。从简单的文本过渡到实际的网站是一件痛苦的事情,因为那里存在所谓的“标准”,这在当时对我来说是非常荒谬的。归结为这件事(减去了IE相关的东西): 那里的标准可以用更简单的方式代替旧的做事方式。但是,当尝试实际实现某些功能(例如,完全基于CSS的布局)时,如果我执行了更简单且仍可正常工作的解决方案,则实际花费的时间要多10倍。如果它呈现相同的效果,那么为什么我要使用更复杂的示例,该示例花费10倍的时间并在更换浏览器后就中断了?这在Freenode IRC中的## php,## css和## js中引发了许多长期的宗教辩论,实际上使我被## css禁止,因为我弄乱了那里的小世界。 我的问题:即使我将标准和编码约定的使用时间延长了10倍,但获得的结果却与简单的相同,我是否仍应遵循这些标准? 对于民意调查标签,那些拥有任何规模(大小)网站的人,您是否遵守所有标准?

4
重做一个返回代表许多不同状态的整数代码的函数
我继承了一些糟糕的代码,其中包括以下简短示例。 这个特殊的反模式有名称吗? 有哪些重构建议? // 0=Need to log in / present username and password // 2=Already logged in // 3=Inactive User found // 4=Valid User found-establish their session // 5=Valid User found with password change needed-establish their session // 6=Invalid User based on app login // 7=Invalid User based on network …

5
将文本标记放在字符串中是否不好?有其他选择吗?
我使用大量字符串,需要大量操作。 例如,我可能会生成这样的字符串: 第1部分船 A节 编程 第2部分用于编程的分区船。 AA 节SQL条目。 该字符串太大,无法手动检查它的每个部分。现在,我需要split将此string分为stringlist几个部分。我可以想到两种选择: 正则表达式: QStringList sl = s.split(QRegularExpression("\n(?=Part [0-9]+|Section [A-Z]+)")); 看起来应该可以,但是有时会漏掉一些异常(即:Section SQL Entries错误地分裂) 否则,我可以做的就是在生成初始字符串时放置一个标记: 🚤💻Part1 船 AA节 编程 🚤💻第2部分用于编程的分区船。 A 第AA 节“ SQL条目”。 这意味着分割字符串将变得容易: QStringList sl = s.split("🚤💻")); 有人告诉我,这些都不是好的样式或编程实践,但是直到现在我还没有讨论它,也没有找到替代方法。 如果您是我的项目经理,您会接受这两种方法吗? 如果没有,您会建议我做为最佳做法吗?

2
C#编程语言中变量的命名约定
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我正在观看有关变量的C#视频。作者在方法内声明了一个变量,并按如下方式命名:string MyName =“ James”; 我的问题是:.Net Framework建议使用哪种约定。是上面示例中的Pascal机壳,还是骆驼皮?

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.