当我阅读此问题时,投票得最高的答案引用了Bob叔叔的编码标准,但这个提示使我感到困惑:可以避免。相反,让代码成为捕获标准的方式。




这在我脑海中反弹,但我找不到合适的地方。如果有新成员加入团队,或者编码标准发生变化,那么信息就会混乱吗?

评论

嗯我试图想象这在大型的跨国公司中如何运作,该跨国公司拥有数百名开发人员,并且代码库跨越了数十年。

@MatthewJamesBriggs:它的效果至少与大多数开发人员忽略的书面标准一样好,或者在最初编写代码时具有不同的内容。

@MatthewJamesBriggs:同意。样式指南应包含足够的信息,以识别以前不推荐使用的约定,否则“复制现有样式”的文化将使一些10岁左右的恐怖分子复活。同样,当偶然形成的团体使用不同且不兼容的标本来推论官方风格时,书面风格指南会指出其中哪个是正确的(或者理想情况下,首先防止团体形成)。而且,如果您数百名开发人员中的某些人不阅读文档,那么在一家大公司中,您可以开除他们以作粗暴的伪造。
尽管公平起见,Bob还说过,您不应该一开始就制定公司范围内的书面或不书面编码标准。相反,每个团队/团队都应该发展自己的团队。

不要编写任何人都不会阅读的文档,而使用linter强制以某种方式执行代码。如果这是开发过程的一部分,那是不可避免的。

#1 楼

原因有很多。


没有人阅读文档。
即使他们读过文档也没有人遵循。
编写一系列实践要比建立一种文化有效得多。当人们偏离标准时,应该通过代码审查过程和/或自动工具来加以纠正。

请记住,编码标准的全部目的是使我们的生活更轻松。它们是我们大脑的捷径,因此我们可以从重要内容中过滤出必要的内容。与实施正式文档相比,创建一种强制执行此审核的文化要好得多。

评论


而且,如果您想强制执行某些操作,则应该有一个强制执行的构建过程步骤,而不是强制执行的样式指南。

–Wayne Werner
16年5月24日在18:35

您确实没有标准的文档,但是在每次代码审查的前几周只是对人们大喊大叫吗?看来您基本上希望初学者对您的编码样式指南进行反向工程。还是更像一个假想的“我认为这就是他的意思”?现在,如果这是关于执行这些规则的自动工具的,那是必不可少的。但我不想费力地制定规则。

– Voo
16年5月24日在19:44



@Voo,如果感觉到问题,为什么还要在代码审查期间大喊大叫?

– Jaap
16年5月24日在20:39

@Jaap我以为夸张很明显..显然不是。不要不对别人大喊大叫,而是要告诉他们他们必须回去解决所有违反的事情,因为他们无法更好地了解他们。

– Voo
16年5月25日在5:49

@Voo:您不需要“反向工程师编码样式指南”。在查看现有代码时,约定应该显而易见。不会立即进入视线的一切都是罕见的,甚至是无法修复的。如果确实有关于很少发生的事情的重要规则,那么当新开发人员是必须编写此类代码的开发人员时,可能值得与他们讨论。交流不能被高估。

–霍尔格
16年5月25日在12:14



#2 楼

还有另一种解释。我不相信这是鲍伯叔叔的意思,但这值得考虑。

不要在文档中捕获编码标准。通过具有验证标准是否符合要求的自动化过程,将其捕获在代码中。已经存在的代码,并标识什么约定和巧合。

将Checkstyle之类的内容合并到提交构建中。这可以强制执行诸如格式和命名标准之类的基本规则,而不是花时间在考虑样式上,而可以将所有这些工作转移到一个愚蠢的过程中,这至少可以保证是彻底的。至关重要,然后严格定义您想要的是什么,如果错误则失败。

评论


实际上,我怀疑这样的事情至少是鲍勃叔叔对该建议的推理的一部分。编码标准的自动化和自动化测试是提高质量的有用方法,我敢肯定,鲍勃知道...

–法律
16年5月24日在13:02

值得一提的是规则6:在最初的几次迭代之后,请团队共同决定。仅凭第3条规则,他似乎就不主张任何编码标准,但是当一起考虑所有规则以及所有第6条规则时,他似乎真的在说:“一开始不要强制采用编码标准。有组织地发展,然后与您的团队坐下来讨论细节。”这与“不要规范您的编码标准”(这似乎是很多答案的本质)有很大不同。

– Shaz
16年5月24日在18:45

如果您阅读了这些内容,我想您会发现这肯定不是他的意思,例如,仅此一个即可告诉您一些内容:2.让它们针对团队而不是公司。

– Bill K
16年5月24日在20:10

请注意,我在回答“为什么我不应该写下编码标准”的问题,而不是“鲍伯叔叔的意思”。这可能与问题的标题背道而驰,但与精神背道而驰。

–汤姆·约翰逊(Tom Johnson)
16年5月26日在6:51

请注意,不提供转义子句的自动编码格式系统(我可以在其中关闭一部分代码)在某些时候几乎肯定会是恶意软件。

– ak牛
16年5月26日在17:24

#3 楼

人们忽视了编码标准文档的真正目的,即解决纠纷。

编码标准中的大多数决定只会对可读性和生产率产生很小的影响。特别是如果您对语言采用“常规”风格,并且语言设计师开始意识到这应该是规范的一部分(例如Go)。会变得非常热烈,并且持续不断,对生产力和团队凝聚力造成了真正的损害。或者可以通过在两个或更多个人的首选样式之间进行无休止的重新格式化来掩盖您的变更历史。管理者可以指出这一点,并转移对文档的不满。您可以用一张纸争论,但不会听您说。

(另请参见无结构性的暴政)

评论


对于处理遗留代码的团队而言,这非常重要。尤其是从遵循一套标准(或不遵循任何标准)的代码过渡到另一套标准时。如果没有参考指南,当代码库中已经存在多种样式时,就无法确定要遵循哪种样式。我认为,不要写下标准的建议是针对从事风险项目未进行风险开发的小型团队的,根据我的经验,这种情况很少见。

– thomij
16年5月24日在14:42

同意一个标准比该标准的实际内容重要得多。如果使用足够长的时间,您几乎可以习惯任何一种样式。

– Mark Ransom
16年5月24日在22:04

恕我直言,争论琐事是无能的标志。解决具体争端不会解决根本问题。

–Jørgen Fogh
16年5月25日在13:05

是的,解决纠纷和保持变更历史不受污染都是巨大的,尤其是当您的团队中有OCD和非OCD开发人员混合使用时。但是,我发现书面标准的仲裁者远不如StyleCop这样的自动化工具有效,它可以制定法律而不会使其成为个人或浪费管理人员的时间。

–埃里克·赫斯特(Eric Hirst)
16年5月25日在19:03

“争论琐事是无能的标志”-我希望这在软件工程中是正确的……恐怕某些非常非常称职的(至少在技术上)开发人员正是最喜欢琐事的人。地狱,这是他们的民族运动。 “法师的论点是无限的”-厄勒·勒古因(Ursula Le Guin)

– Spike0xff
16年5月25日在19:10



#4 楼

因为注释是谎言。

编码标准对应该的代码有很大的影响。代码本身就是真理的最终来源。在这种情况下,真相不是代码行为,而是它所表达的样式。如果您的标准尚未反映在代码中,那么您还有很多工作要做。注释是程序员的个人失败,因为它证明他没有设法用编程语言本身表达代码片段的目的。同样,标准文档也无法在代码库中表达连贯的风格。不得不叹息。)

标准文档并不是一个坏主意,但是我去过编程商店,维护标准文档是某人的全职工作。请,如果您必须保留标准文档,请保留在页面上。但是,如果您已经有了代码,难道没有人能在一天之内将同一文档放在一起吗?

拥有代码标准很重要。拥有说明它们不是什么的文档。

评论


我实际上已经体验了使用“无注释”策略的数十年历史的代码库。尽管它确实鼓励使用很长的描述性方法名称,但在捕获意图,不做事情的理由方面绝对是可怕的,而且我们只能通过让一位原始作者陪在我们身边来摆脱它。

– pjc50
16年5月24日在9:17

+1“拥有代码标准很重要。拥有一个表明它们是什么的文档并不重要。”好,简洁地说。

–大卫
16年5月24日在14:19

@ pjc50我从未听过Bob叔叔鼓励采取无评论政策。他没有教你永远不要发表评论。他教导您,当您发现自己必须被别人理解时应该感到难过。不需要注释的未注释的不可读<已注释的不可读<可读代码。请注意,您提到的注释是完全与代码如何工作分离的注释。标准文档可能会变成脑残检查清单,该清单会在代码审查中打勾。重要的不是让您全力以赴。就是餐桌旁的人理解您的代码。

–candied_orange
16年5月24日在17:43

“新程序员应该花时间看代码,而不是花几天时间阅读多章的标准文档”。不知道您遵循什么编码指南,但是Google的C ++样式指南可以在一小时之内轻松阅读,而且比必须根据现有代码对首选样式进行反向工程要容易得多,这对我来说似乎很恐怖。我读过的所有其他风格指南也是如此。

– Voo
16年5月24日19:47



@CandiedOrange:通常,最有用的注释是描述某些事情未完成的原因的注释[由于没有这些注释,未来的程序员可能会浪费时间尝试实施,后来又撤回了看似显而易见的“改进”变得不可行]。除非人们真的对变量名着迷,否则即使是最出色的可读性代码也无法捕获该信息。

–超级猫
16年5月24日在22:09

#5 楼


为什么鲍勃叔叔建议如果可以避免的话,不应该写下编码标准?仅当他将在此处发布答案时才回答(我们的意见无关紧要),但是...


为什么我不应该写下编码标准? />
如果您要问他是否正确:让我成为(到目前为止)唯一不受欢迎的人,说您没有理由避免这样做。

写信下。但是,我将尝试解释我的原因...

David在评论中建议,斯蒂芬回答的重点不是为什么您不应该编写文档,而是文档的形式。如果指南已在工具中正式化(不仅仅是手工代码审查),那么我可能会同意(法律不需要其他内容时)。请注意,不幸的是,工具通常无法检查所有内容(计算理论不是我们的朋友),因为它们仅限于特定的翻译单元或程序包,或者您喜欢的语言称为边界。

Bob叔叔的措辞并不能使我认为他是在谈论那件事。

我可以不同意这样的高级专家吗?对于引用的帖子中的几乎所有内容,我都会这样做(有关详细信息,另请参见此答案的第二部分)。让我们尝试了解原因(假设您已经知道编码指南不仅涉及较小的格式问题)。


在某些情况下,法律要求书面编码标准。
我确实阅读过文档,但我肯定并不孤单。团队成员可能会随着时间而变化,知识不会存在于5-10年的代码库中或团队成员的头脑中。组织应解雇不遵守内部准则的人员。
编码标准一旦获得批准,就不会经常更改,如果您愿意知道,也可以更改。如果标准发生更改,则您的文档(以代码形式)已过时,因为您的所有代码均未遵循新标准。重新格式化/重构可能会很慢,但是您始终要遵循书面权威指南。
阅读5页文档比检查10 / 20K LOC推断规则要好(BTW您可能会误解),毫无疑问。
具有讽刺意味的是,曾经写过许多有关设计原理和编码风格的书的人建议您不要编写自己的指南,那么如果他给我们扔一些代码示例会更好吗?不,因为书面指南不仅会告诉您该怎么做,而且还会告诉您代码缺少的其他两件事:不做什么和不这样做的原因。对16岁的忍者来说不错,但是组织还有其他要求:必须在公司级别授予(定义)代码质量-这不是一个团队可以决定的事情。他们甚至可能没有能力决定更好的方法(例如,有多少开发人员具备审查MISRA或什至仅了解每条规则的全部技能?)
成员可能会跨不同团队迁移:如果每个人都遵循相同的编码标准,则集成是平滑的,并且不易出错。
如果团队是自组织的,则随着团队成员的变化,这些标准将随着时间的推移而发展-您将拥有一个庞大的代码库,该代码库不会遵循当前公认的标准标准。

如果您在流程之前考虑人,那么我只能建议您阅读TPS:人是精益的核心部分,但程序高度规范。

当然,只有一个团队的小型组织可以让团队决定采用的标准,但是必须将其写下来。您可以在Programmers.SE上阅读Eric Lippert的帖子:我想我们都同意他是一位经验丰富的开发人员,当他在Microsoft工作时,他必须遵守他们的书面准则(即使某些规则可能是错误的,不适用的或无用的)对他。)乔恩·斯基特(Jon Skeet)呢? Google准则非常严格(许多人不同意),但他必须遵守这些准则。对他们不尊重吗?不,他们可能致力于定义和改进此类准则,公司不是由一个成员(或一个团队)组成,每个团队也不是一个孤岛。 >
您决定不使用C ++中的多个继承和嵌套类,因为您的实际团队成员对此不太了解。后来,想要使用多重继承的人必须浏览整个1M LOC,以查看它是否曾经被使用过。这很糟糕,因为如果没有记录设计决策,则您必须学习整个代码库才能理解它们。甚至在那时,如果还没有使用它,那是因为它违反了编码标准,还是被允许使用,但是在以前的情况下,多重继承才是合适的选择?具有重载的方法来提供默认参数,因为当C#中没有可选参数时,您的代码库已启动。然后,您进行了更改并开始使用它们(重构旧代码以在每次必须修改此类功能时使用它们)。甚至以后,您仍然认为可选参数不好,因此开始避免使用它们。您的代码告诉您什么规则?这很不好,因为标准在发展,但是代码库在发展却很慢,如果是您的文档,那么您就麻烦了。
乔恩(Jon)从A队搬到了B队。在学习过程中,他可能会引入更多的细微错误(或者,如果幸运的话,只需花很长时间来理解现有代码并延长代码审阅时间)。完全不同的编码标准。改写?适应?混合?所有这些都同样糟糕。


Bob叔叔


让它们在前几次迭代中进化。


没错,直到您没有标准为止,并且您的组织已为您分配了建立标准的任务。特定于公司。


不,出于上述所有原因。即使您只是想将代码格式化形式化(您可能想对形式化进行的最无用的事情),我仍然怀念着无休止的(无用的)关于格式化的战争。我不想一次又一次地活下去,将它们全部设置一次。


如果可以避免的话,不要写下来。相反,让代码成为捕获标准的方式。


否,出于上述所有原因(当然,除非准则更改时您可以一次性重构所有代码)。您是否要按原样保留代码?您如何检查代码库以了解当前准则?按文件年龄搜索并使您的编码风格适应源文件年龄?


不要立法好的设计。 (例如,不要告诉别人不要使用goto)


正确,准则必须简短,否则没人会阅读。不要重复显而易见的事情。


确保每个人都知道标准是关于沟通的,而没有别的。


不仅要有一个好的标准,除非您只想对次要细节有一个标准。


经过前几次迭代,让团队共同决定。


首先要了解的是,别忘了编码标准通常是一个需要花费很多年才能开发和完善的过程:迭代很少,也许是初级开发人员?真?您是否要依靠一位资深(如果有)成员的记忆? ,例如在C ++中,甚至比Java中更需要公司级标准。
如果您在一家只有一个小团队的非常小的公司中工作,则这种推理可能并不完全适用(鲍勃叔叔的原因可能不太极端)。
您被录用(作为团队)并且您将单独处理一个新项目,然后您将忘记它并继续前进。在这种情况下,您可能不在乎(但您的雇主应该...)


评论


我对此表示反对,因为我认为答案与问题无关,这就是为什么您(特别是Bob叔叔)为什么不编写编码标准,而不是为什么呢?我认为每个人都理解拥有书面标准的优点,但是缺点更难确定,而且当被复查的行业高层提出反对行业惯例的立场时,研究为什么这样做无疑是值得的。

–法律
16年5月24日在13:06

@gnat谢谢你,我不需要为不合主题的帖子投票,不是“为什么X先生做了Y?”在这种情况下是题外话?我们不知道他的原因,他也没有解释,那不应该因为题外话而被质疑吗?您将如何回答这个问题?发明随机原因还是说前提是错误的?

–阿德里亚诺·雷佩蒂(Adriano Repetti)
16年5月24日14:13



@AdrianoRepetti-鲍伯叔叔多年来做了很多解释,因此可以合理地认为某人可能会对他的思维方式有所了解,但是如果需要鲍伯叔叔的直接解释,那是正确的。

– JeffO
16年5月24日在14:45

@jeff是的,如果问题是关于“他为什么这么认为”,那么答案只是一个猜测。如果问题是“对吗?”那么我的个人回答是d ***绝对不行。

–阿德里亚诺·雷佩蒂(Adriano Repetti)
16年5月24日在17:03

“当他为Microsoft工作时,他必须遵守他们的书面指导方针” –你敢打赌我做到了。当然,我们使用了FXCop和StyleCop来防止某些不良图案被检入。

–埃里克·利珀特
16年6月23日在16:41

#6 楼


为使编码标准有用,不得谈论实质性问题;唯一的风格。它应该仅指定那些任意和模棱两可的事物。例如支撑位置,缩进深度,空格与制表符,命名约定等。
样式问题是局部的,而不是全局的。每个团队都应采用自己独特的风格,使其与任务和个性相匹配。这使标准保持简单和轻便。由于所有可能的考虑因素,配置和例外情况,公司标准变得不堪重负。
在团队中,编写单独的编码样式文档的唯一原因是团队产生的代码不符合标准。在这种情况下,您没有标准。为了有效,该标准应由代码本身来表达。如果是这样,就不需要单独的文档。
在旧系统中,团队和样式会随着时间而改变。没有错。旧代码将具有较旧的样式。较新的代码将具有较新的样式。团队应该了解样式及其年龄。每当编写新代码时,无论代码位于代码中的何处,都应采用新样式。


评论


我几乎没有什么困惑:1)要成为有用的编码标准,不应该只谈论格式(圣战的内容,但易于理解的阅读代码),而应避免构造编码模式(以防止常见错误,不易理解语言)功能)和安全问题。这些是编码准则(比格式化问题更有用)。 2)在第1点的前提下,与人格无关(但可能与任务有关),您可以制定一个轻量级的公司标准,使其轻量化是您的责任。

–阿德里亚诺·雷佩蒂(Adriano Repetti)
16年5月30日在8:55



3)代码可能会告诉您该怎么做,但它无法传达您不应该做的事情(除非您想学习整个代码库,即使在那种情况下……也恰好不必使用X构造,或者禁忌?)另一个重要的事情是推理:为什么不呢?为什么呢?事情可能会随着时间而改变,但是您如何知道初始前提是否仍然有效? 4)并且当您是新团队成员并且编写新代码时...您是否学习相同年龄的代码库以保持该编码风格?转移到另一个较新的组件后的第二天,您再次学习代码库(按创建日期过滤吗?)

–阿德里亚诺·雷佩蒂(Adriano Repetti)
16年5月30日9:00



顺便说一句,如果您建议您不要只写下代码格式样式,那么我可能会同意(嗯,实际上不是,但没有那么强烈的理由,除了每次都会不可避免地引起无休止的无休止的讨论的记忆)会完全避免一次),但是您应该明确说明,否则人们会从字面上解释您的单词(请参阅此处的大多数答案和评论)。同样,从这个意义上说,关于“ goto”的观点有点误导(IMO)

–阿德里亚诺·雷佩蒂(Adriano Repetti)
16年5月30日在10:39



#7 楼


为什么我不应该写下编码标准?


有很多原因。以下是一些注意事项:


人们花多少时间花“学习”代码标准只是为了让大量时间投入到整个团队的审查,讨论,文档编制,修订等工作中。代码标准这就像在不断讨论您的“员工手册”-将它多长时间列在团队会议的议程上?????那么留下来的少数人通常无法继续遵守(甚至可能没有阅读过)标准。接下来您会知道,所有用于“保持代码干净”的工作都被浪费了。想要以一种新的方式来做。同样,通过编纂标准可以获得什么??

您应该确保阅读#6:确定。


换句话说,当需要启动一个项目时,只需花一会儿时间即可。然后讨论当前团队正在使用的编码标准的一般规则-并基本遵循它们。这样,您就可以最大程度地提高改进产品的工作量,同时又可以减少编写,查看和记录获取可执行代码所需的“语法糖”所需的工作量。来自编码标准。通常,“可读性”过于含糊-大多数开发人员不会从间距,换行等确切的规则中受益匪浅,但是您可以通过至少设置一些规则来避免不断惹恼开发人员。

#8 楼

我认为还没有足够清楚地阐明另一个答案,那就是这也意味着人们不会盲目遵循规则。这意味着人们必须为他们的设计决策和编码约定提供实际的理由,而不仅仅是依赖于已被写下来证明其事实的事实。

#9 楼

首先,据我所知,鲍勃叔叔是Java的人,这对于理解他的话非常重要。

在Java或C#团队中工作时,如果当前代码是由经验丰富的开发人员,对我来说很容易掌握编码风格并紧跟它。如果我不愿意这样做,也许我不是合适的人选...如果在不遵循样式的情况下没有代码审查或结对编程来接我,那么该公司将

Java和C#以及大多数现代语言已被定义,因此程序员很少会陷入“简单”陷阱。 />
但是,当我开始编程时,我正在使用C(以及后来的C ++)。在C语言中,您可以编写诸如

if (a = 3);
{
   /* spend a long time debugging this */
}


这样的代码。编译器不会给出错误,并且在阅读大量代码时很难发现。但是,如果您编写:

if (3 = a)
{
   /* looks odd, but makes sense */
}


编译器给出了一个错误,并且我很容易将代码更改为3 == a。不允许在=条件或“空if语句”中使用if,则可以使用代码检查器作为构建系统的一部分来跟踪此错误。

我对编码标准的看法发生了很大变化当我离开C / C ++时:我曾经喜欢严格执行的编码标准,而且页面长很多。我现在认为您只需要列出正在使用的工具,并在一些命名约定上让原始团队成员之间达成非正式协议。我们不再生活在由30多名使用C / C ++编写应用程序的开发人员组成的团队的世界里。发展多年。由于HTML / CSS / JScript等的设计存在缺陷,我希望Web UI开发人员仍然需要编码标准。

评论


“编译器不会给出错误”大多数现代的C和C ++编译器支持通过警告或完全错误报告这种行为。 gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

– JAB
16年5月24日在14:30

“首先,据我所知Bob叔叔是Java的人,这对于理解他的话非常重要。”事实并非如此,Bob叔叔撰写了有关C ++的精彩文章,而且他肯定也与C合作了几年。

–亚历山大·特鲁齐(Alessandro Teruzzi)
16-5-24在14:42



@JAB,幸运的是,很早以前(例如,在调制解调器C / C ++编译器之前),C / C ++不再用于新的“业务应用程序”,而现在,它仅主要由C / C ++专家而不是UI专家使用。 (MFC)为例。

–伊恩
16年5月24日在15:40

@AlessandroTeruzzi单元测试将告诉您方法失败。为什么失败是另一回事-即使您对具有这种代码的方法进行了单元测试,也很难找出问题所在。 C ++是最难以调试的语言之一。

– T. Sar
16年5月25日在19:17

我认为这里有一个误解,您不能只听一句话UncleBob并单独进行分析。如果您的SOLID软件具有较小的类,简短的方法和防弹单元测试范围,则编码标准是多余的。如果您的代码较弱,接口庞大,功能强大且覆盖范围很小,那么编码标准可以为您带来一些好处。但是,UncleBob并不建议不要使用它,而是通过协作和重构(从源代码库中删除弱代码)进行口头传播。使您的代码成为现行的编码标准。

–亚历山大·特鲁齐(Alessandro Teruzzi)
16年5月26日在9:09

#10 楼

使源成为自文档编码标准意味着两件事。人们必须查阅代码库并进行审查,才能成为熟练的贡献者。这是非常重要的。与深入研究代码库相比,阅读代码指南是浪费时间。
它承认微小的差异并不重要。达成共识并了解基本原理很重要。保持一致的风格不是追求艺术的追求。它不允许无用的挑衅者惹恼和分散他人注意力。这是关于通过团队中的代码促进沟通。


#11 楼

经常更新且编写得很好的代码标准文档可能会非常有用,但是通常并非如此。标准文档不能反映公司使用的实际编码标准,因为创建良好的标准文档非常困难,甚至很难保持最新。

最好不要编写任何糟糕的,令人误解的编码标准文档,而让代码本身代表这些标准。无论哪种方式,最重要的部分是在代码中应用标准,这不仅需要文档。动机,过程,培训,工具等更为重要。

#12 楼

尚未明确说明的一个非常重要的事情是,编码标准就像语言一样:它们在不断发展。书面的编码标准阻碍了这一工作,如果不是这样的话,它就会不断地过时并且毫无用处。如果您在签到时进行同行评审,则每当有不符合编码标准的内容进入存储库时,这意味着有2个人考虑了此事*,并决定此变更的好处超过了与其余代码的不一致之处。 br />
没有书面标准也消除了繁文tape节,这会阻止公司团队为新项目尝试新的编码标准变体,因为他们想尝试一些东西,或者因为不同的标准在它们使用的某些自动化工具上有实际的应用。可以花在做其他事情上。我并不是说您永远不应该写下编码标准,书面标准肯定有其好处,尤其是如果在不同位置工作的团队使用相同的代码库。

密切相关:编码的发展标准,您将如何处理它们? >

#13 楼

更改它们成为一个主要障碍,人们将安全地遵守法律法规,而不是动脑筋去做正确的事情。

会有一天,标准的一部分无益,并且使代码更糟。有些人会遵守该标准,因为它已被记录下来并且很安全,并且必须遵守规则。想要编写好的代码而不是符合标准的代码的人会感到沮丧和愤怒。会有争论和分歧,而如果不写下标准,就会有探索和讨论。

#14 楼

我认为这里的许多帖子都将编码标准与样式指南相混淆。 br />
应该记录诸如构造#include文件的正确方法并且不污染头文件中的全局名称空间之类的内容,以便在初始编码和代码审查期间将它们用作清单。 br />特别是“不要使用XXX,因为它会导致与YYY的兼容性问题”,在后面的其他代码中,您不会看到示例,因为它不存在。因此,让代码成为捕获标准的方式对于某些类型的标准可能不清楚或完全缺失,因此这不是一个通用计划。在某些嵌入式系统中不使用new不能简单地留为共同的文化知识,因为“信息是文化性的(仅)”与制造标准(如ISO-9000)的基本原理相矛盾,这些标准是这些嵌入式系统的开发人员正在使用的(例如用于汽车应用)。这些重要的事情必须以正式的方式记录在案,签字并存档。例如,C ++显示使用小写名称而不使用CaMelCaSe。那么,为什么有那么多开发人员不遵循源头上的隐含示例呢?标准库的样式和规范教材不是应该遵循的不当样式吗?

同时,人们确实遵循标准库标头的示例来处理不应复制的内容,例如将__Ugly名称用于宏参数和包含文件非重复模式。

因此,拥有东西通常不被视为重要的风格,或者相反,对于项目代码中不应遵循的内容,拥有示例可能并不明确。两者都是对“样式”(或编码约定)最好保留为隐式这一论点的反例。