在平常的面试中,我们不可避免的会被问到一些问题。比如:组件如何设计、性能如何优化等等。
但是,无论是组件设计、还是性能优化,它们彼此之间并不能真实的反应项目的质量,也反应不了代码质量。
所以,面试中需要能够讲出来代码怎么写,怎么用,才能更有利于整个项目的维护。
比如:如何提升React代码的可维护性? 就是前端面试时,面试官经常提问的一个问题。
那么这个所谓的可维护性,到底指的是什么?是项目组的代码规范,还是别的什么呢? 不同的人会有完全不同的答案。
那么从更大的一个视角来看,即当我们从软件工程的角度来看,可维护性可以理解为当前代码迭代的难易程度,可维护性差,则意味着项目难易修改,难易迭代。
而具体的代码是否具有可维护性,则可以从以下几个方面来分析:
可分析性:即项目是否具有快速定位产品问题的能力。
对于前端来说,如果界面上出现问题,需要能够快速定位出问题出在哪里,如果无法复现问题,也找不出问题在哪,则说明不具备可分析性。
可改变性:即我们的项目需能够快速进行迭代。如果别人接手我们的代码,如果他不能快速熟悉代码,或者说我们的代码逻辑性很差,导致他不能快速的对项目进行迭代,则我们的项目不具备可改变性。
稳定性:稳定性方面需要我们能够避免因为代码修改而造成线上意外情况,需要能够保证每次代码修改不会影响已经发布的线上环境。
易测试性:要求项目能够快速发现问题,在交付前快速发现问题,从而在交付前解决已经发现问题。
除此之外,则需要遵守相关的标准或约定,即团队内部的代码规范,开发流程等等。
不同框架开发的项目,可维护性其实是一样的。
区别在于用什么框架构建项目,我们需要了解它们各自的方案,比如各自的代码风格、构建工具和流程等。
所以我们可以从下图的轮廓作为思路来回答可维护性这个问题:
对于可分析性,我们可以从预防、兜底两个角度来考虑。比如可以人工介入进行code review 从而发现代码中问题。
这个也是我们工作中常用的一个方法,团队氛围如果和谐的化,非常推荐,因为确实可以相互学习,提升自己在编码过程中的细节能力。
其次可以用前端的eslint、jslint、jshint等工具进行代码审查,统一团队代码规范等。
对于可改变性,我们可以从组件化的角度来考虑。比如在开发过程中对项目进行组件化,可以按照业务模块划分不同的组件,提取出公共组件等。
也可以将一些公共方法抽离出来,做成工具包,一方面便于项目维护,另一方面也是公司内部的技术沉淀产物。
对于项目的稳定性,要想解决这个问题,就需要进行大量的测试工作。
对于服务端来说,他们通常会写单元测试进行测试。对于前端来讲,会写单测、能写单测的不多,所以需要人工多点点项目的各个功能。
当然,如果你对前端的单元测试比较熟悉,可以用chai、mocha 、jest 进行单测。
对于团队规范来讲,就比较简单了。
针对js的Eslint 、针对样式的StyleLint、针对代码提交的Commitlint、以及针对代码风格的Prettier 等,都可以选择作为团队规范的参考,按照适合自己团队内部的进行配置即可。
所以,如果下次有人问你这些问题:
- 如何提升React代码的可维护性?
- 如何提升Vue代码的可维护性?
- 如何提升代码的可维护性?
我们就可以从上面说的几方面着手去回答即可。
(完)
没有关注公众号( 搜索《Javascript 高级程序设计》)的朋友,觉得文章对您有启发的话,记得点赞、关注、评论、转发一下。