编写好的代码是每个开发人员的待办事项清单上的一个目标。一开始,我们正在学习绳索并习惯于随处可见的代码,所以我们不会太担心正确或更好的方法——我们只想要代码有效。
然而,当我们开始习惯编码时,“让它发挥作用”就不再那么简单了。然后我们想知道我们所做的是否真的是我们最好的,如果不是,我们如何改进。
如果你想提升和提高自己,你必须把你的编码提升到一个新的水平。本指南将帮助您了解编写好的代码需要什么以及永不回头的心态。
不要停留在大 O
如果您不是计算机科学专业的毕业生,那么您可能没有在Big O 上做过很多工作。Big O 是一种数学符号,允许在假设存在无限输入时测量计算机算法的速度和内存大小。
这是衡量代码效率和成本的一个很好的衡量标准,但除此之外,Big O 无法衡量其他任何东西。它是一种数学工具,用于衡量我们代码的复杂性;但是,它不会权衡人为变量、特定系统要求或我们的软件架构。
我并不是建议你应该忽略 Big O,但你应该把它当作它的本质——一种数学方法,它构成了什么是质量代码的标准的一部分——而不是把它作为绝对的衡量标准。Big O 是衡量代码质量的良好起点,但不要止步于此。你还有工作要做。
以代码持久性为目标
代码持久性是构成高质量代码的最被低估的因素之一。简而言之,它衡量您的代码将在生成和维护生产代码的所有阶段(从功能构思到最终测试和部署,再到重构、调试和新功能的实现)的所有阶段。
想想有多少代码通过了所有这些过滤器并到达终点,更重要的是,有多少代码通过所有新的修订和未来的实现而留在那里。
当某些代码必须部分或全部重写时,这是浪费时间和巨大的障碍,因为没有人知道它做什么或它如何工作,或者因为从头开始编写它而不是试图使其工作更具成本效益。这段代码不是高质量的代码,它不会随着时间的推移而发生变化。
系统可以改变,需求和技术也可以改变,但好的代码无需修改或很少修改就能存活下来。
下次您编写代码时,请坐下来思考“我怎样才能以只需要编码一次的方式解决这个问题?” 解决方案不会像您想象的那么明显。发挥想象力并创建一些很棒的代码。
提高编码的技术解决方案
有大量的插件、附加组件和格式标准,但很可能您将被迫在特定工作中使用特定工具或标准。但不要认为这是一件坏事。相反,限制将迫使您学习新的编码模式并灵活运用您的技能。
这些工具将帮助您组织和统一您的代码,但它们不会为您完成这项工作。你拥有的最好的工具是意识到你在做什么并保持一致。
以下是一些提高代码质量的技术思路:
- 使用棉绒。
- 遵守编码标准。
- 适当地注释您的代码。
- 使用好名字(变量、函数等)。
- 不要忽视适当的测试。
- 利用自动代码审查工具和持续集成工具。
- 分享您的代码并征求反馈(代码审查)。
- 注意项目的大局。
- 与经验丰富的开发人员结对编程。
- 及时了解更新和新库。
- 阅读代码完整和干净的代码。
使您的代码获得技术帮助可能会有很大帮助,但如果您不知道如何正确使用工具,这也会使您退缩。找到可以利用技术知识而无需浪费时间过度设计代码的最佳位置。
编写“人类代码”
凯尔·辛普森 (Kyle Simpson ) 解释了编写“人类代码”的想法,这意味着编写代码时明确地表明它是为我们而不是为计算机编写的。是的,计算机会编译、链接、执行并与代码交互,但是现在有很多抽象层,我们的代码几乎无法翻译其确切意图。所以在这里“保存”一些字符或使用字体连字是没有意义的,因为它们会更快地解析。
这个“人类代码”的想法非常棒。它允许您编写尽可能清晰易懂的程序,并始终考虑我们未来的自己或将处理它的同事。
当然,您应该确保不会降低性能(Big O)和其他因素,例如编码标准,但始终牢记这是给人类的信息,而不仅仅是使某些事情起作用的代码片段。这是一个巨大的心态转变,将帮助您编写更好的代码。
使用常识
换工作的一大麻烦是了解新的代码库。有人不同意吗?我以为不是。在一大堆未注释的新旧意大利面条中游泳可能会令人伤脑筋。但几周后,这一切都开始变得有意义了。
帮自己一个忙,使用常识来了解如何将新代码安装到旧代码库中。您的新代码可以流畅、快速、优雅且易于沟通,但如果它位于错误的文件、错误的作用域或错误的块上,它仍然看起来不合适。上下文很重要;适合新代码的位置很重要。请记住,您正在为您和您的同事编写代码——将代码停在何处可能会产生很大的混乱或有见地的澄清。
代码库中的设计模式意义重大,所以不要破坏它们。顺其自然。如果您的项目在函数式编程上投入了大量资金,请不要像疯子一样四处创建类和方法;它会让你看起来很糟糕,它会让每个人都感到困惑。编写好的代码是本能与知识相遇的地方。两者都需要时间,但奖励是一种真正的艺术形式。
要问的五个问题
在您发布任何代码之前,您应该问五个问题,它们会成倍地提高您对上传的内容是好的还是只是另一个临时解决方案的认识。
在每次提交之前,尝试回答以下问题:
- 如果您对代码的一部分进行了错误的更改,您的系统会崩溃吗?
- 您的代码可以在系统的其他部分重用吗?
- 随着时间的推移,您的代码是否可以轻松更新或升级而不会添加错误?
- 您的代码是否易于理解,是否符合逻辑?
- 您的代码高效且体积小吗?
如果您不能对这些问题中的任何一个给出明确和满意的答复,则意味着您应该回去重新考虑您的代码。假装问题不存在不会让它消失。
再见宝贝
有时重写整个事情会更好。旧技术、有很多错误的糟糕代码库、需要全新架构的新需求以及升级问题是为什么这可以成为一个可行选择的几个原因。无论出于何种原因您正在考虑它,请确保它是正确的决定,并且下次您做出正确的决定并制作经久耐用的代码。
编写高质量、持久的代码不仅是可能的,而且是必要的。2019 年 6 月,Tidelift 和 The New Stack 联合对专业软件开发人员进行了一项调查,显示开发人员 70% 的时间花在阅读代码上,平均每天输出约 10 行代码。这意味着我们花费了大量时间来弄清楚我们的系统是如何工作的,而不是实际编写一些代码。
就像生活中的一切一样,伟大的代码是关于平衡的;没有一刀切的答案。这取决于您的系统、您的输入以及您想要达到的结果。但是您需要知道如何调整规模和比较,如何返回和调整,以及如何编写永不消亡的代码。
本指南将帮助您编写更好的代码。不要只是阅读它。研究它,分享它,提供一些反馈,最重要的是应用它。
伟大的程序员不是天生的;随着时间的推移,他们努力变得更好。
记住,保持冷静,远离代码!