你有什么好的建议/链接提供一套编码标准或最佳实践?

8

对于我们已经编程足够多的人来说,我相信我们已经遇到了许多不同风格的编码标准。

例如 http://msdn.microsoft.com/en-us/library/ms229042.aspx

您可能会根据您所在公司或正在处理的代码的原始作者制定您的编码标准。编码风格通常用于特定的程序语言,某些编码语言中的某些风格可能不适用于其他语言。当然,有些编码标准可以应用于许多不同的程序语言。

感谢您的时间。

编辑:正如我们所知道的,这个主题有许多相关文章,但是C#编码标准/最佳实践在SO上有一些非常有用的链接值得访问。(查看ESV的.NET/C#指南的2个链接-被接受的答案)


2
更不用说这个问题之前已经被问过了,可以看看右边的“相关问题”栏目。我数了一下,有三个。 - George Stocker
可能是[C#编码标准/最佳实践]的重复问题。(https://dev59.com/bHVD5IYBdhLWcg3wVKAb) - BalusC
20个回答

12

Google发布了一份C++风格指南(点击这里),我有时候会参考它。仅仅阅读其中的解释和理论,不考虑是否同意某些风格,也许可以教给你一些你之前没有想到过的东西。


1
Google的代码风格指南很好,但出于互操作性的原因,他们建议避免使用异常。人们应该注意到这一点是针对Google特定情况的,需要根据自己的情况重新评估此观点。 - Nikhil
当然,您不必将标准中的每个部分视为铁板一块。使用对您的团队有意义的内容即可。 - gbjbaanb

8

关于编码规范,我的最佳建议是:在完成工作时不要让它们妨碍进度。

一个庞大的官僚机构可能会阻碍项目的进展,而不是帮助实现更好的团队合作。当人们抱怨不遵循编码规范而不是实际代码质量时,这就是过度的管制。

除此之外,从众多建议中选择一种,并尽可能坚持使用它,以构建一个遵循单一标准的代码库,您已经习惯了。


8
编码规范是有益的,但是公司自己重新发明轮子编写的全新编码规范,或者由单个“先知”强制执行的编码规范可能比根本没有编码规范更糟糕。
这意味着:
- 应该讨论并达成共识。 - 编码规范文档应包括每条规则背后的原因。 - 编码规范应至少部分基于可靠来源。
我所知道的标签中各种语言的来源如下:
- 对于C++:Sutter / Alexandrescu的书《C++编程规范》。 - 对于C#:我在Google上搜索C#编码规范找到了4或5个PDF文件。

6

5

4

如果你正在维护的代码仍然使用与原始代码开发时相同的标准(当代码看起来混乱无序时,调试问题是最糟糕的)


我一直认为这应该是编码规范的第一条(有时甚至是唯一的;))。它绝对应该优先于所有其他规则。 - gbjbaanb

4

在这篇文章的评论区中,建议查看Google C++指南。关于这些指南的某些方面的详细讨论已发布在comp.lang.c++.moderated

有些奇怪或有争议的观点包括:

我们不相信可用的异常替代方案,例如错误代码和断言,会带来重大负担。

好像断言是一个可行的替代品... 断言通常用于编程错误和永远不应该发生的情况,而异常可以在执行流中发生(有一定预期)。

引用参数:所有按引用传递的参数都必须标记为const。…实际上,输入参数是值或const引用,输出参数是指针是非常强的约定。

没有评论,关于鼬语“非常强的约定”。

在构造函数中执行工作:只在构造函数中进行基本初始化。如果可能,请使用Init()方法进行非平凡初始化… 如果您的对象需要非平凡初始化,请考虑使用显式的Init()方法和/或添加一个指示对象是否已成功初始化的成员标志。

是的... 两阶段初始化使事情更简单...如果我有 const字段怎么办?这个规则可能是对异常态度的影响。

仅将流用于日志记录。

哪些流?IOStreams,标准C流还是其他流?

一方面,他们建议仅在特殊情况下使用宏,而他们建议使用DISALLOW_COPY_AND_ASSIGN禁止复制/分配。他们可以建议采用特殊类的方法(如Boost中的方法)

除非在罕见的特殊情况下,不要重载运算符。

关于赋值、数值计算等的算术运算符怎么处理?

默认参数更难维护,因为从先前的代码中复制并粘贴可能无法揭示所有参数。当默认参数不适用于新代码时,代码片段的复制和粘贴可能会导致重大问题。

什么?从以前的代码中复制/粘贴?

记住,阅读任何指南都可能引入您思考方式的偏见。有时这对您或您的代码是不利的。我同意其他帖子建议首先阅读好作者的好书。当您拥有足够的知识时,然后您就能够查看指南并轻松找到优点和缺点,而不会在大脑中创建混乱;)



3

对于Java和其他C系列语言,我推荐使用Sofware Monkey编码标准(当然,因为它们是我的)。

总的来说,保持简单,并为每个要求提供示例和理由。


3
如果您计划向现有的编程团队引入代码格式化标准,请从每个团队成员那里获取意见,这样他们会更愿意遵守并按照标准编写代码。
编程风格就像习惯一样难以改变,您必须接受有些人不会始终将其代码完全符合标准。值得花费时间找到(或编写自己的)漂亮打印程序,并定期运行所有代码以强制执行一致性。(当我手动检查源代码更改时,发现只是为了其他人的代码纠正格式时,我总感到不安; 我担心其他人会把我称为吹毛求疵的人。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接