在谈到编码规范的时候,我们关注的粒度从大到小划分的话,一般是按照应用、模块、对象、方法这样的层次来定义。在这些粒度上业内一般都有约定俗成的一些规范,就不再赘述。
今天这篇文章我想重点和大家聊聊如何做好代码的片段管理。
什么是代码片段呢?一组相关的代码行我们就可以称之为一个代码片段。比如下面的代码是做一些变量的定义和初始化,这些代码行我们就可以称之为一个代码片段。
再比如这段代码,是对数据库进行连接处理,我们也可以称之为一个代码片段。
为什么这次单独拿代码片段出来讲呢?
主观原因是,从我们带团队的经验来看,开发人员往往缺失代码片段管理的概念。
客观原因是现代编程语言粒度缺少代码片段这样的中间管理单位。
大家可以想一下学习编程的经历,老师们都会讲一个程序是由一个个的模块组成的,模块是由类组成,每个类有自己的各个方法,而方法由代码行组成——不存在中间代码片段的概念。
正因为大家对代码片段管理概念的缺少,才更需要认真做好代码片段管理。从我们禅道团队自身的实践经验来看,做好代码片段管理,有以下两个好处。
首先,可以提高开发人员的逻辑能力和宏观思考能力。
禅道团队很多新加入的同事,写代码的时候往往从头写到尾,一个方法的几十行代码没有任何间隔。这样写代码就有点像写流水账,没有代码组织的概念。
以一个任务的添加表单为例,可以这样来做代码片段管理:
- 首先对变量进行定义和初始化,以保证变量类型的准确、过滤非法输入值、输入参数和默认值的处理。
- 接下来我们需要对表单提交过来的数据进行业务上的检查处理,比如标题是否有填写值、优先级是否符合系统要求、对任务的描述进行HTML标签的检查和过滤等。
- 再接下来就是对数据库进行插入操作,并获得最新插入的任务编号,以供后续使用。
- 最后记录系统日志,给出返回值等操作。
通过这样的分层次操作方式,可以逐渐培养开发人员的逻辑能力和宏观思考能力。
其次可以增强代码的可读性和可维护性。
通过代码片段的方式来组织代码,可以增强代码的可读性和可维护性。比如另外一个同事来解决Bug,会碰到之前自己没接触过的方法。通过浏览代码片段就可以很容易了解到这个方法的整体逻辑,也可以很容易聚焦到要修改的地方。设想一下如果不做片段管理,从密密麻麻几十行甚至更多的代码行里面找到要改动的地方,是极富挑战力且很容易改出错的。
那如何做代码片段管理呢? 以下面的一段代码为例来给大家展示下我们的小技巧。
我们先使用空行对代码进行片段的组合:不对代码做任何修改,只是增加换行,将相关的代码分割为一个片段。再来看一下,是不是可读性就好了很多?
再接下来,我们对每个代码片段写一下注释。我们一般用/**/ 这样的注释方式来做段注释。
再接下来我们对代码做一下对齐。比如赋值的等号我们做一下对齐,是不是就清楚很多了?
我们对代码其实没有做任何改动,就只是做了下版式上的调整,是不是就改善好多?
当然接下来我们还可以再更进一步地对代码进行改动,比如改进命名、优化逻辑、改进算法等等,这些就是极限编程中更进阶的实践了。
怎么样,代码片段的管理,你学会了吗?