您对一系列编码标准或最佳实践有什么好的建议/链接吗?

对于我们这些已编程足够的人,我确信我们已经遇到了许多不同风格的编码标准,您可以在编程时使用这些标准。

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

您可能会为您当前所在的公司或您正在处理的代码的原始作者推导出您的编码标准。 编码样式通常用于特定的程序语言,一种编码语言中的某些样式可能不适合其他语言。 当然,一些编码标准可以应用于许多不同的程序语言。

感谢您的时间。

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

谷歌有一个发布的C ++风格指南,我有时会参考。 只要阅读解释和推理,尽管你最终是否同意某些风格,可能会教你一些你可能没想过的事情。

关于编码标准我最好的建议是:在试图完成工作时不要让他们妨碍。

一个大的官僚机构可能实际上阻碍了项目的进展,而不是帮助实现更好的团队合作。 当人们抱怨没有遵循编码标准而不是代码的实际质量时,那就是过多的监管。

除此之外,从众多建议中选择一个,并尽可能长时间地坚持使用它来构建一个遵循您习惯的单一标准的代码库。

编码标准是好的,但是从头开始编写的公司重新发明轮子的编码标准,或者由单个“先知”强加的编码标准,可能比根本没有编码标准更糟糕。

这意味着:

  • 应讨论并商定编码标准。
  • 编码标准文件应包括每条规则背后的原因。
  • 编码标准至少应部分基于可靠的来源。

我知道标签中的语言来源是:

  • 对于C ++:Sutter / Alexandrescu的C ++ Coding Standards一书。
  • 对于C#:4或5 PDF我发现谷歌搜索C#编码标准:)

Adam Cogan在他的网站上有一套很好的规则。 有编码指南,但还有更多。

Adam Cogan的更好的规则……

编码标准很棒。 我们一直在使用Lance Hunt的C#Coding Standards for .NET几乎没有修改

如果你维护代码继续使用与开发的原始代码相同的标准(没有什么比在代码看起来所有higgildy piggeldy时尝试调试问题更糟糕了)

有人对该post发表评论,建议查看Google C ++指南。 关于这些指南的某些方面的详细讨论发布在comp.lang.c ++。moderated 。

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

我们不认为可用的exception替代方案(例如错误代码和断言)会带来很大的负担。

好像断言是一个可行的替代方案……断言通常用于编程错误和不应该发生的情况,而exception可能在执行流程中发生(有些预期)。

参考参数:通过引用传递的所有参数必须标记为const。 …事实上,输出参数是值或const引用是一个非常强大的约定,而输出参数是指针。

没有评论,关于黄鼠狼的短语非常强烈的约定

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

是的…… 2阶段初始化使事情更简单……如果我有const字段怎么办? 这条规则可能是对例外态度的影响。

仅使用流进行日志记录

哪个流? IOStreams,标准C流,其他?

一方面,他们建议仅在特殊情况下使用宏,而他们建议使用DISALLOW_COPY_AND_ASSIGN禁止复制/分配。 他们本可以用特殊课程来建议这种方法(比如在Boost中)

除非在极少数情况下,否则不要使操作员超载。

如果是数字计算的赋值或算术运算符等等?

默认参数更难以维护,因为先前代码的复制和粘贴可能无法显示所有参数。 当默认参数不适合新代码时,复制和粘贴代码段可能会导致严重问题。

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

请记住 ,阅读任何指南都会给您的思维方式带来偏见。 有时它对你或你的代码没有好处。 我同意其他一些post建议事先由好作者阅读好书。 当你有足够的知识 ,那么你就可以看到指南,轻松找到好点和弱点,而不会在你的大脑中造成混乱;)

如果您计划向现有编程团队引入代码格式化标准,请从团队的每个成员那里获得输入,以便他们“买进”并更有可能将代码编写到该标准。

编程风格与习惯一样难以改变,你必须接受有些人不会在100%的时间内使他们的代码100%兼容。 值得花时间找到(或编写自己的)漂亮的打印机程序,并定期运行所有代码以强制执行一致性。 (当我手动检查源代码更改时,我总是感到不安,这些更改只包括对其他人的代码进行格式化更正;我担心其他人会给我贴上一个挑剔的信息。)

  • Sun Java代码约定
  • Python风格指南
  • PHP的Zend编码标准

问过这个问题 。 我发现接受的答案certificate足以满足我的需要。

但是,我意识到这不是一个“一刀切”的场景,因此线程中有大量信息可能会发现或多或少有用。 值得一读!

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

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

标准中的内容并不重要。 重要的是你有一个,你的开发人员也遵循它。

它没有完全回答这个问题,但值得一提……

我读过Steve McConnell的Code Complete 。 虽然它没有为您提供预先编制的编码标准,但它确实为各种方法提出了许多好的论据。 它会让你思考以前没有想过的事情。

它改变了我的小世界。

编码标准本身很棒,但我认为更重要的是,更重要的是保持你所维护的任何代码的风格。 我已经看到人们为某个类添加了一个函数,并且只针对该函数强制编写标准。 这是不一致的,它很突出,而且,在我看来,这使得“整体”享受课程变得更加困难。

无论何时维护代码,请查看其周围的代码。 看看风格是什么。 K&R支架? 资本骆驼案例方法? 匈牙利? 每个函数之间的双行注释块? 无论是什么,你都应该在那个特定领域做到这一点。

在我离开之前,有一件事我想注意那些相关的 – 命名文件。 我主要是一个C ++人,所以这可能不适用于其他任何东西,但基本上它是_.h或.cpp。 所以,Foo :: Bar将在Foo_Bar.h中。 Foo命名空间的常见事物(即预编译头)将在Foo_common.h中(注意小写常见)。 当然,这是一种品味的东西,但是每个与之合作过的人都赞成这一点。

我认为Code Craft – 编写优秀代码的实践几乎总结了一切

非常受欢迎的是Ellemtel对C ++的规则 。

对于C#,我推荐框架设计指南:可重用.NET库的约定,惯用法和模式(第2版)(Microsoft .NET开发系列) 。

单声道编码指南

这里的答案非常完整,因此我没有指向另一个编码标准文档。 但是,一旦您决定坚持使用一种风格,您应该在整个团队中使用自动编码风格强制执行器

对于Java,有checkstyle和.NET Microsoft Style Cop 。

以下是关于Stackoverflow的类似讨论: C#编码标准/最佳实践

单独的Camel和pascalshell解决了许多编码标准问题