良好的编码习惯 —— 5 个提升代码质量的技巧

良好的编码习惯 —— 5 个提升代码质量的技巧

良好的编码习惯像黑夜中的一盏明灯,指引着迷路的开发者安全靠岸。良好的代码是可预测的,是易于调试、扩展和测试的。前端

良好的编码习惯可以提升你同事的工做效率,同时让你的代码库从总体上给人一种愉快的阅读体验。android

接下来我要和大家分享的是 5 个通用的良好编码习惯,它们能提升你代码的可读性,可扩展性和总体质量。越快理解和运用这些准则,你的收益就越大。ios

让咱们开始吧。git

为何要有良好的编码习惯?

学习和运用良好的编码习惯就像投资那些你知道必定会成倍增加的股票。换句话说,你只要如今作一次性的投资,在接下来的几年甚至几个月的收益和回报,将会远远超过你如今的投入。程序员

处于职业生涯任何阶段的开发者都会受益于应用和学习良好的编码习惯。就像我上面所说,你越早开始使用它们,你的收益便越大。如今即是最好的时机来学习和将良好的编码习惯应用于你如今的项目。github

我提出这些观点,旨在它们可以互相支撑,且不管是做为单独的建议仍是组合起来都是合理的。算法

1. 简洁地给方法和变量命名

当给类、变量和方法命名时,咱们很容易冲动地按照本身的方式给它们命名。特别是当你以为这一切都很合理时。试着几个月以后再回头看看那些代码,看看它们是否依旧合理。若是是,那么颇有多是你当时明智地命名了你的变量和方法。数据库

良好的编码习惯 —— 方法名相似文章中的标题和句子

方法名相似文章中的标题和句子。编程

所以,当给方法命名时,要可以准确归纳方法的内容。若是方法名变得太长或模糊,那么表示该方法作了太多的事情。后端

方法中的内容组成了方法名。

当你阅读一篇文章时,你以为最突出的是什么?一般,最突出的是标题。在程序中,关键方法就像标题。当你为高中或大学散文写投稿文章时,你是否只是随便瞎写几句,而后不假思索地写完标题?

一个简单直观的方法名赛过千言万语。

固然,句子中单词的选择以及如何将它们组合在一块儿也很重要。这就是为何咱们也须要特地地给咱们的变量命名。大多数状况下,在查看代码逻辑以前,人们会试图经过阅读每一行中的变量名来对代码实现细节的有一个总体把握。

确保方法和变量名称都是清晰明了的,且准确地描述了正在发生的事情。想象一下,若是你指引给一个游客错误的方向,他/她会多么生气和困惑。你正在为下一个前来阅读你代码的程序员指引道路。

2. 尽量减小使用全局变量

无论使用哪一种语言,你可能在编程中常常听到这种说法。人们只会说使用全局变量很差,而不去解释为何很差。那么让我来告诉你为何应该尽量地减小和避免全局变量。

全局变量会形成困惑,由于程序中的任何地方均可以访问到它们。

若是全局变量同时也是可变的,则会增长人们的困惑。若是你声明了一个变量,那么极可能你只是想在本身的代码中去使用它。你猜猜接下来会发生什么?

这里是一个用 JavaScript 语言编写的基础示例,但不管你使用的是哪一种编程语言,下面这段代码都应该很容易理解。

var GLOBAL_NUMBER = 5;
function add(num1) {
return num1 + GLOBAL_NUMBER;
}
复制代码

对于这个函数,即便咱们传入 num1 = 3,咱们也没法肯定该方法是否会返回 8,由于该程序的其余部分也许已经修改了 GLOBAL_NUMBER 的值。

这增长了程序产生反作用的可能性,特别是当咱们使用多线程编程时。更糟糕的是,程序的复杂性与代码量的大小成正比。

在 100 行的代码中使用单个全局变量是可管理的。可是想象一下,若是这个项目后来演变成一个拥有 10000 行代码的项目。那么项目中有不少地方均可以修改这个变量。并且,到目前为止,代码中可能还添加了其余的全局变量。

如今维护代码简直就是一个噩梦。

若是可能的话,找到消除全局变量的方法。全局变量增长了每一个开发人员的工做难度。

3. 编写可预测的代码

若是你关注个人博客,你可能会发现我喜欢纯函数。特别地,若是你是初学者,我恳请你尝试编写干净的代码。让我来告诉你编写代码中 4 个须要遵照的点。

避免状态共享(emm...全局变量)。保持函数干净。换句话说,函数、类、子程序都应该只有单一的职责。

若是你的工做是煮米饭,那就煮米饭,不要作其余的事情,以避免让你的同事感到困惑。不要作不应你作的事情。

具备可预测结果的代码就像一台自动售货机。你把钱放进去,按下可乐的按钮。你知道你的钱能够换一罐可乐。对于编码,这条规则也适用。使编码结果可预测。一个良好的编码习惯是编写可预测结果的代码。

想象一下,若是你将钱放入自动售货机,按下可乐按钮,但相反,自动售货机给你了芬达。除非你喜欢惊喜,或者你不在意喝什么,不然你是确定不会感到快乐的。

无一例外,开发人员并不喜欢由糟糕代码的反作用带来的惊喜。

让咱们来看一个很简单的示例。

function add(num1, num2) {
return num1 + num2;
}
复制代码

上面这个简单的 add 函数是纯粹的。它产生可预测的结果。不管你在什么环境使用它,不管任何全局变量,若是你输入 1 和 2,你老是会获得 3。

// This will never equal a value 
// other than three
add(1, 2);
复制代码

4. 编写可重用的代码

我尝试模块化编码,这样一来我就能够简单地导入该模块,而没必要重写它。这比从新发明轮子要好,若是你能够保持模块简洁,这样一来便会减小 bugs 和反作用。

最重要的是,我想让你明白为何咱们喜欢坚持这些原则。

当能够将代码移植到另外一个开发环境并没有缝集成到 Tweet 时,代码即是可重用的。

请记住,你并非(或者至少不该该是)惟一编写和维护该代码库的人。基于第1、第二和第三点,可使咱们作到第四点,即编写可重用的代码。换句话说,步骤 1-3 帮助咱们编写可重用的代码。让咱们回顾复习一下为何步骤 1-3 能帮助开发人员编写可重用代码。

  • 简单明了的方法和变量名使代码更容易被其余开发人员所接受。
  • 可重用的代码不该该依赖于全局状态。使用了依赖库的代码一般被归类为难以重用的代码。
  • 可重用的代码应该产生不依赖于可变状态的一致结果。

当写代码时,尝试问本身:“我可否(或我是否想要)在其余项目中重用这块代码?”。这会帮助你写出可重用的代码,即更加有价值的代码。

5. 写单元测试

你可能已经听过不少次了,这是由于单元测试使代码更加成熟和健壮。因为项目时间限制,单元测试成为了避免受欢迎的良好编码习惯之一。项目经理和客户但愿马上获得结果。

拥有单元测试的代码就像一棵中国竹子。在开始的时候成效并不明显,但只要你有耐心,在某个适当的时候,收益是显而易见且十分值得的!

在最初的四年里,中国竹子生长受限。和任何其余植物同样,它须要培养。在第五年,它在仅仅 6 周内就长了 80 英尺。

拥有单元测试的代码就像竹子

虽然单元测试能带来的收益并不须要花那么长的时间,可是一般状况下,你和你项目经理的耐心都将受到考验。固然,若是大家愿意花时间去编写这些单元测试并关注代码质量,代码的质量和健壮性都会获得巨大改进。全部这些努力最终都将转化为更好的用户体验和拥有最小反作用的更容易扩展的代码。

若是你不被容许在你的工做代码中编写单元测试,那么尝试养成在你的我的项目中编写单元测试的习惯。许多公司看到了编写单元测试的价值,这是一项很是有用的技能。

比这项技能更重要的是,单元测试可以扩宽开发者的视野,从全局考虑问题,检查全部可能的状况。

考虑这些状况的可能性,从而权衡利弊,添加适当数量的有效检查用例。作各类假设,而后从新设计编码。

全部的这些心血、汗水和眼泪最终将汇聚成优美的、通过测试的纯粹健壮的代码。它可重用,可预测,并可能会很好地服务于你将来的工做。

阅读本文所获取的知识至少能够帮助你成为一名成熟的程序员。

完善清单

若是你有其余更好的编码习惯想让我加入这份清单中,或者你以为清单中遗漏了一个重要的点,请在下方评论留言。我会尽快将您的意见加入这份清单中。

感想您的阅读,happy coding!

关于做者 Jay

我是一个程序员,目前住在韩国首尔。我建立这个博客是为了将我已掌握和正在学习的知识用写文章的形式表达出来,以做知识积累,同时也但愿可以帮助构建更广大的社区。我热衷于数据结构和算法,专精于后端和数据库。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

相关文章
相关标签/搜索