在撰写关于以用户为中心的网页开发的文章时,我进一步探究了代码一致性这个话题。 一致性是我们需要 编码指南 的关键原因之一,也是 代码质量的因素。 有趣的是,我注意到,一致性有三个层次:个人、集体和机构。
第一层:个人一致性
在基本层面上,当我们的组织缺乏标准化(或者我们只是独自工作)时,一致性仅仅意味着对自己保持一致。 我们始终以相同的方式格式化代码,可以从中获益。
如果我们(我们自己)通常省略属性值周围不需要的引号,正如 此类项目证明的那样,完全有效,那么我们应该始终这样做。 如果我们更喜欢不在 CSS 规则的最后一个声明后面加上分号,那么我们应该永远这样做。 如果我们更喜欢始终使用制表符,那么我们应该始终这样做。
第二层:集体一致性
在下一层级,我们假设代码来自其他开发人员或第三方,一致性意味着遵循我们在接触代码的任何地方使用的代码风格。 我们应该尊重并保持与我们接触的文件中普遍存在的代码风格一致。
当我们帮助我们的同事启动一个网站并调整他们的 CSS 时,我们以他们相同的方式格式化代码。 当我们调整内容管理系统的某些核心文件(如果这样可取)时,我们做他们做的事情。 当我们为某事编写一个新的插件时,我们以其他插件编写的方式编写它。
第三层:机构一致性
最后,通常是在更大的组织中达到的一种层级,一致性意味着遵守(或者首先创建)组织的编码指南和风格指南。 如果指南建立良好且执行良好,这种一致性为影响行为变化提供了最大的力量——个人一致性几乎没有提供这种激励,集体一致性只是暂时性的。
当我们通常用空格缩进,而公司风格指南说要使用制表符时,我们使用制表符。 当我们的同事启动他们的迷你项目,以及在提供帮助时,我们发现他们的代码不符合公司指南,我们花时间重构它。 当我们开始一些新的东西,也许基于一些不同的语言,我们启动一个指南设置和标准化过程。
这些一致性级别并非相互排斥
在我们自己的事务中,我们至少应该努力达到第一层级,但我个人在将自己连接到一些外部第三层级标准方面(我遵循Google 的 HTML/CSS 指南,唯一例外是用制表符而不是空格)并详细定义一些补充的第一层级风格标准(比如预定义的选择器顺序)方面取得了很大的经验。
每当我们与其他开发人员打交道时,但只有在缺乏更广泛标准的情况下,我们至少应该努力达到第二层级的一致性,也就是说,尊重他们的代码。 我们触碰他们领域的东西,我们像他们一样编写它。
当我们身处一个更大的组织中时——尽管“更大”从两个人开始就真的开始了——相同的第二层级一致性理念依然有效,但我们现在可以考虑建立标准以在第三层级上运作。 在那里,我们甚至可以将这两个层级结合起来:遵循编码指南,但当我们触碰违反指南的内容,并且没有时间重新格式化它时,我们遵循该代码中普遍存在的风格。
根据我的经验,仅仅意识到这些层级本身就能极大地帮助我们编写更一致,因此也更好的代码。
如果您想了解更多关于编码标准的信息,请查看关于该主题的其他 CSS-Tricks 帖子,如果您想阅读关于它们的一个简短的,非常简短的读物,也许还可以看看HTML/CSS 编码指南小册子。
如果可以的话,我想对此表示不同意。 我想这是可以争论的,但它似乎是完全忘记/忽略标准的第一步。
我的想法完全一样。 它将问题归结为个人一致性,只是不是你自己的。 但我比较不墨守成规; 我使用制表符,因为 1 个制表符比 4 个空格更有效率。 无论是添加、删除还是以其他方式处理。
是的。 是的。 是的。
关于这个问题,我只有这些要说。
:-)
在我们公司,大多数 UI 项目都由特定开发人员“拥有”,我们发现第二阶段对我们非常有效。 我们来自不同的背景,拥有非常不同的编码风格——不仅在格式方面,甚至在模式和库方面也是如此。 在努力达成一致的风格后,我们决定让给定项目的“拥有者”做出关于它的决定,这让我们所有人都感到舒适和一致,并且没有互相干扰。 也就是说,这里只有我们三个人,我怀疑这种做法不会扩展到太多人。
我原本希望你能提供一些数据来支持这些意识形态……这些想法在整个工程界都很普遍,而且它们很有道理,但有没有人做过研究来证明一致性产生质量的假设?
我们实际上浪费了大量时间来遵守风格指南或强迫性地格式化代码,并且当我们仅仅为了纠正他人的风格而破坏他人的代码所有权时,可能会产生敌意——一致性的益处是否超过了这些负面影响?
您是否使用像 stylelint/stylefmt 这样的 linter 或工具来强制执行代码风格? 在现代开发环境中,代码格式化很大程度上由 linter 和构建工具处理。
@Jz,我的理解正确吗?您想知道熵/无序是否实际上是一个问题?
我承认,这很有吸引力,我们应该对此进行研究,但从经验来看,缺乏指南(因此缺乏一致性)会导致大量生产力损失,因为每次我们查看他人的代码时,我们都会浪费时间来定位自己并理解各自的代码。 如果我们经验丰富或纯粹是幸运,这种损失可能很小,但我们可能也都在他人的代码中花费了大量时间,仅仅是因为格式不同。 而这就是经验方面,表明是的,秩序、一致性和指南是有用的。
(我将立即在一致的代码中写上“质量”,但我知道这在某种程度上是一个不同的争论。)
有效运行的代码是唯一“最好的”代码 xD
点赞!
使用 .editorconfig 文件可能会有所帮助
http://editorconfig.org/