本文是我的对书写可维护代码的一点点思考。javascript
《代码整洁之道》、《实现模式》、《设计模式》、《重构》、《重构和模式》这些书中,都指出书写可维护代码是十分重要的。想必每位开发者都能说出几条缘由吧,这里我也梳理一下本身的逻辑。前端
什么是好代码?归纳地说就两条:第一,能实现需求,第二,可维护性高。vue
程序员工做的本质是代码交付。这是咱们工做的基本,若代码不能实现需求,确定不是好的代码。这一点是无需置疑的,任何其余方面的工做,都须要为它让路。所以有不少公司,把这一点做为绩效考核的惟一要求。java
怎么衡量本身成长了呢?有一个看似开玩笑的方法是,当你去看本身之前写的代码,若是你以为垃圾时,就代表本身进步了。git
那么,什么样的代码是可维护性高的代码呢?《代码整洁之道》给出的观点是,代码可维护性与其整洁度成正比。固然也给出了整洁的代码是什么样的,并给出了原则和各类细则。在我看来,做者只是把“可维护”从新定义成了“整洁”而已。程序员
我总结的可维护性代码的三大特色是:github
《代码整洁之道》中说,若是你把敲代码的过程进行录屏,就会发现大部分时间都是读代码的过程。设计模式
每每大部分代码都是本身最近写的,所以没有理解上的难度。此时,咱们不多去关注代码是否具备高可读性。变量名字叫什么可有可无,是否有注释也可有可无,是否有优化的空间更可有可无。咱们下意识的心理逻辑是这样的:反正都是本身写的代码,本身看得懂,明天看这个代码的人仍是本身。而完成任务是首要的,毕竟公司看重的仍是任务完成指标,由于这点是影响绩效。框架
对待本身的代码是这个态度,而对待他人的呢?对于非本身写的代码,好比要使用别人的接口时,基本上会问一下同事,“发起某某请求的方法,在哪一个文件,叫什么名字?”,由于咱们知道这样作来得快,要本身去找,那可费劲了。mvvm
可是一直这么作会有问题的。正如《第五项修炼》说的那样,你要解决的问题,极可能于来自上一次其余问题的解决方案,其实它们本来就不应出现。
问题出现的场景通常都发生在维护时。本身写的代码,半年后能会去读它的人仍多是你本人。届时,你会想,本身当初为啥要这么写呢?那么长的一坨,居然尚未注释,当初的思路又是什么呢?这个变量名是什么意思呢?恨不能穿越回过去,告诉本身:你如今的偷懒,之后还会由你来买单的。
最可怕的是,当你去维护别人写的垃圾代码,内心骂着别人时。其实,极可能如今的你一样会坑之后的另一我的。当你每敲一段代码时,都要想想那句名言:
代码是给人看的,只是偶尔运行一下。
写出来的代码,不会一成不变的。在迭代过程当中,可能会屡次修改。因此写代码时,不能只聚焦于眼下,只要完成功能就好了。想想,若是一个月后,Boss说你要在某某功能模块里添加一个小功能时,要怎么能快速定位到你的代码。此时就要考虑代码的可读性以及设计模式了。
这一点,其实目前流行的mvvm框架,自己就是为了解决此问题的。就跟画画同样,别人画好了轮廓,咱们只须要去着色就好了。高内聚低耦合的代码,一直是咱们追求的设计目标。封装变化、多用组合等思想,良好的框架在这点上帮咱们解决了很多问题。
既然一些代码可以复用,说明它们能解决一些通用的问题。好比流行的框架和库,自己就是让别人复用的。可复用也是设计模式存在的缘由。你遇到的问题,大多少数时,前人就遇到过,而且给出了通用方案。而咱们要作的就是“拿来主义”。
具体到项目时,项目结构必然要分层,底层代码天然要抽出来。这个道理咱们都懂。《代码整洁之道》中说,重复是软件一切邪恶的根源。因此,Dont repeat youself。
养成写整洁的代码,须要造成习惯。可是新习惯的养成就是要克服掉旧习惯。大道理,谁都懂。难的是,知行合一。为什么本身写的代码那么糟糕,咱们能找到两个常见的缘由是:没时间和没反馈。
最常找的理由之一就是,时间不够。
咱们前端工做的时间比例大体是这么划分的。书写代码和调试代码的比例大概是3:7。
想必咱们都有这种经验。要实现一个页面,不到两三个小时就能实现大部分功能,而后发现一些小问题,即那些难缠的bug,此时咱们剩下的大部分时间都在对付这些可恶的“虫子”,代码改来改去。有时一个问题的定位、技术调研和与人沟通时间就能占据整个下午。真等到解决完这些小问题时,也差很少到下班的时间了。
这是咱们常见的一天里,没有让代码整洁的时间。
项目完事了,立刻开始又启动下一个项目。当你愁眉苦脸地思考当前如何完成功能时,此时你被通知要维护一下以前的项目。再次修改本身以前的代码,你可能会感慨,之后这块须要好好修正修正。惋惜手里项目太紧了,没有时间。事实上一般是真没有时间了。
这是咱们项目周期间,没有让代码整洁的时间。
比写糟糕代码的更糟糕的事情是:你不知道你写的代码很垃圾。每一个人都很忙,没人帮我看代码,我也以为本身写得很差,但我又不知道如何改进。这是不少新人的困境,没有反馈的练习,练习再多也成不了高手的。
没时间,会致使代码写很差,代码糟糕,会致使更没时间,这是一个死循环。
没反馈,就不知如何提升代码质量,进而一直这样持续下去。把第一年的经验再重复几年。这是一汪死水。
如何破这个局呢?
其实,代码要保持整洁,就跟你屋子里保持清洁的方法同样。让屋子清洁很容易,你只须要进行一次大扫除就能够了。可是要一直保持清洁,那么须要养成微习惯。看完的书,不能随便在桌子上一摆,要换洗的衣物,要放到固定的地方等等。每个都是微习惯。
从小事作起,好比变量名或方法名。好的代码是不须要大量注释的,由于好的变量名称就起到了注释的效果。《代码整洁之道》一书中,给出各个方面的整洁代码是什么样的。好比函数该怎么写,注释该怎么写等等须要养成的微习惯。
养成微习惯是重要的,但如何养成呢?答案是清单思惟。
清单,除了咱们熟悉的todo list以外,还又一种核查清单。在清单上列出哪些咱们须要注意的地方,而后咱们一条条去核对。作到了就打勾,这点对造成微习惯颇有帮助的。
好比,我每次出门都不会丢三落四。由于我记住一句话,伸手要钱买烟火。
这里,我创建了一个核查清单:身份证、手机、钥匙、钱包、烟和打火机。一样的道理,在咱们平常代码的开发中,提交代码以前,拿出清单对一对,直到本身养成习惯。
旁观者清,当局者迷。从人性的角度来讲,每一个人或多或少都有双向标准。相对于本身,要求别人就严苛一点。这一人性却能够为咱们所用。同事之间进行代码回顾,是对每一个人都有好处的。开始时看似浪费时间,其实减小往后不应浪费的时间。也能够配合利用核查清单,毕竟每一个人对一个个具体的核查点的理解程度是不同的,这样能帮助彼此更快地成长。而不是你向他人请教时,只会获得”你去看某某书就好了“这样的答案。
本文完。
整洁代码的核查清单: github.com/ryanmcdermo…
vue代码的核查清单: cn.vuejs.org/v2/style-gu…