课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于许多的软件开发工程师和网页设计师来说,有时候我们需要通过观察其他程序员的网页源代码等内容来学习和提高自己的软件开发技巧和工作能力,而这时我们就会发现代码整洁度的重要性。
下面,我们就一起来了解一下什么是整洁代码?为什么我在乎?
整洁代码是一种一致的编程风格,使你的代码更易于编写,阅读和维护。开发人员通常花费时间解决问题,一旦问题解决,他们就会提出pull请求。我认为你不仅仅因为代码“工作”就完事。
现在是去清理代码的好时机,通过删除死代码(僵尸代码)、重构和删除任何注释掉的代码!为了可维护性而努力。问问自己:“从现在开始六个月后,其他人能够理解这段代码吗?”
简单地说,写你会很自豪地带回家并展示给母亲看的代码。
你为什么在乎?因为如果你是一个优秀的开发人员,那么你很懒。请听我解释–那是一句褒扬的话。一个优秀的开发人员,在遇到不止一次需要做某事的情况下,通常会找到一个自动化(或更好的)解决方案来完成手头的任务。所以,因为你很懒,认同整洁代码的技巧将会减少来自pull请求代码评审的变化频率,以及减少一遍又一遍地回到同一段代码的频率。
整洁代码通过“气味测试”
整洁的代码应该通过气味测试。这是什么意思?我们都看过代码(我们自己的或别人的)并说:“这里不太对劲。”记住,如果觉得它不对劲,那很可能就是不对劲。好的代码都是深思后一起来的。如果你觉得你正在试图把一个方形的钉子钉进一个圆形的洞里,那么就暂停一下,后退一步,然后休息一下。在多次尝试后,你会想出一个更好的解决方案。
整洁的代码是DRY(不要重复自己)
DRY是代表“不要重复自己”的首字母缩略词。如果你在多个地方做同样的事情,请合并重复的代码。如果你在你的代码中看到了模式(复写),那是表示应该进行DRY的重要迹象。有时这意味着从显示屏退后,直到你无法看清文本,然后从字面上寻找模式。
整洁的代码是可预料和可测试的
写单元测试不仅仅只是一个好主意,还几乎应该成为强制性的。毕竟你怎能确保你的新功能没在其它地方引入BUG呢?
许多的React开发者依靠Jest的zero-configuration测试运行器,并生成代码覆盖率报告。如果你对视觉上的前后对比测试感兴趣,请查看美国运通公司自有的JestImageSnapshot。
整洁的代码是自我注释的
你曾遇过这种情况吗?你写了些代码而且确保它有充分的注释。后来你发现了一个BUG,因此你倒回去修复代码,但你有记得更改注释去反映出最新的逻辑吗?可能有也可能没有。下一个人去看你的代码时可能会因为你的注释而掉入一个陷阱。
添加注释只是为了解释复杂的想法/逻辑。也就是不需要为显而易见的代码注释了。可以减少视觉上的杂乱。
给事物命名
在我之前的文章作为子组件的函数是一种反模式中,我强调了给事物命名的重要性。我们都应该认真考虑变量名、函数名,甚至文件名。
以下是一些指导原则:
布尔变量或返回布尔值的函数,应该以“is”、“has”或“should”开头。
函数的命名应该是它们能做的,而不是它们如何做的。换句话说,不要在命名中公开实现的细节。为什么?因为你怎么做有一天可能会改变,而你不应该因为它重构你的调用代码。例如,今天你可能会从RESTAPI加载你的配置,但是你可能决定明天将其并入JavaScript中。
整洁代码遵循成熟的设计模式和最佳实践
计算机已经存在了很长的一段时间。多年来,程序员通过解决某些问题,发现了模式。并称之为设计模式。换句话说,有些算法已经被证明是可以工作的,所以你应该站在那些在你之前的人的肩膀上,这样你就不必犯同样的错误了。
之后有了最佳实践。它们与设计模式类似,但是更广泛,它们不是针对编码算法。他们可能是诸如“你应该用Lint优化你的代码”或者“当编写一个库包时,包含React作为一个peerDependency”这些做法。
构建React应用程序时,请遵循以下最佳实践。
使用函数,每个函数都有一个功能。这就是所谓的单一责任原则。确保每个功能都能完成一项工作,并做得很好。这可能意味着将复杂的组件分解成许多较小的组件。这也能使得测试更容易。
留心观察脆弱的抽象。换句话说,就是不要将您的内部需求强加给您的代码使用者。
遵循严格的Lint化规则。这将帮助您编写整洁,一致的代码。
整洁代码不(一定)要花更长的时间去写
我总是听到这样的说法:编写整洁的代码会降低生产力。这简直是胡扯。是的,最初你可能需要放慢速度然后才能加速,但是最终你的步伐会随着你写更少的代码而加快。
不要低估“重写因子”以及修正来自代码评审的意见所花的时间。如果你把代码分成几个小模块,每个模块都有一个单独的职责,那么很有可能你再也不需要碰触大多数模块了。在“写代码然后忘记它”上你会节约时间。
译作:圣洁之子,Tocy,无若,soaring,亚林瓜子,Tot_ziens
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!