如何做好代码片段管理?

敏捷开发
• 阅读 443

在谈到编码规范的时候,我们关注的粒度从大到小划分的话,一般是按照应用、模块、对象、方法这样的层次来定义。在这些粒度上业内一般都有约定俗成的一些规范,就不再赘述。

今天这篇文章我想重点和大家聊聊如何做好代码的片段管理

什么是代码片段呢?一组相关的代码行我们就可以称之为一个代码片段。比如下面的代码是做一些变量的定义和初始化,这些代码行我们就可以称之为一个代码片段。

如何做好代码片段管理?

再比如这段代码,是对数据库进行连接处理,我们也可以称之为一个代码片段。

如何做好代码片段管理?

为什么这次单独拿代码片段出来讲呢?

主观原因是,从我们带团队的经验来看,开发人员往往缺失代码片段管理的概念。

客观原因是现代编程语言粒度缺少代码片段这样的中间管理单位

大家可以想一下学习编程的经历,老师们都会讲一个程序是由一个个的模块组成的,模块是由类组成,每个类有自己的各个方法,而方法由代码行组成——不存在中间代码片段的概念。

正因为大家对代码片段管理概念的缺少,才更需要认真做好代码片段管理。从我们禅道团队自身的实践经验来看,做好代码片段管理,有以下两个好处。

首先,可以提高开发人员的逻辑能力和宏观思考能力。

禅道团队很多新加入的同事,写代码的时候往往从头写到尾,一个方法的几十行代码没有任何间隔。这样写代码就有点像写流水账,没有代码组织的概念。

以一个任务的添加表单为例,可以这样来做代码片段管理:

  • 首先对变量进行定义和初始化,以保证变量类型的准确、过滤非法输入值、输入参数和默认值的处理。
  • 接下来我们需要对表单提交过来的数据进行业务上的检查处理,比如标题是否有填写值、优先级是否符合系统要求、对任务的描述进行HTML标签的检查和过滤等。
  • 再接下来就是对数据库进行插入操作,并获得最新插入的任务编号,以供后续使用。
  • 最后记录系统日志,给出返回值等操作。

通过这样的分层次操作方式,可以逐渐培养开发人员的逻辑能力和宏观思考能力。

其次可以增强代码的可读性和可维护性。

通过代码片段的方式来组织代码,可以增强代码的可读性和可维护性。比如另外一个同事来解决Bug,会碰到之前自己没接触过的方法。通过浏览代码片段就可以很容易了解到这个方法的整体逻辑,也可以很容易聚焦到要修改的地方。设想一下如果不做片段管理,从密密麻麻几十行甚至更多的代码行里面找到要改动的地方,是极富挑战力且很容易改出错的。

如何做代码片段管理呢? 以下面的一段代码为例来给大家展示下我们的小技巧。

如何做好代码片段管理?

我们先使用空行对代码进行片段的组合:不对代码做任何修改,只是增加换行,将相关的代码分割为一个片段。再来看一下,是不是可读性就好了很多?

如何做好代码片段管理?

再接下来,我们对每个代码片段写一下注释。我们一般用/**/ 这样的注释方式来做段注释。

如何做好代码片段管理?

再接下来我们对代码做一下对齐。比如赋值的等号我们做一下对齐,是不是就清楚很多了?

如何做好代码片段管理?

我们对代码其实没有做任何改动,就只是做了下版式上的调整,是不是就改善好多?

当然接下来我们还可以再更进一步地对代码进行改动,比如改进命名、优化逻辑、改进算法等等,这些就是极限编程中更进阶的实践了。

怎么样,代码片段的管理,你学会了吗?

点赞
收藏
评论区
推荐文章
学python的猫 学python的猫
3年前
这些常见的坑,90%的程序猿都踩过,来看看里面有没有你的脚印?
在学习python的过程中,相信大家都有踩过不少的坑,有些坑可能踩了不止一次,感觉就像是在坑与坑之间反复横跳。那么如何避免这些坑呢?看完这篇文章,你就知道了。我们来谈谈我们学习python的过程中,最常见的七大坑:1.缩进,符号和空格不正确写代码时大家会使用缩进、对齐、空格等,这些是为了提高代码的可读性在python语言中,缩进是十分重要的比如在创建一个新
Stella981 Stella981
2年前
Spring Boot validator参数验证restful自定义错误码响应
关于springweb应用中关于如何使用 Bean _Validation_ _API_和hibernatevalidator的文章已经很多,本文就不再重复叙述,今天要介绍的重点是在SpringBootrestful服务中如何根据不同验证错误响应不同的自定义错误码。下面直接上代码。一、定义restful统一结果返回
Wesley13 Wesley13
2年前
Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴
本文由云社区发表0x00前言干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtigerCRM)进行白盒审计,从审计的技术难度上来说,都比公司内的那些业务复杂得多,而真正要提高自己技术水平,更应该看的也是这些代码。vtigerCRM是一个客
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Javascript模块化编程(二):AMD规范
七、模块的规范先想一想,为什么模块很重要?因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!考虑到Javascript模块现在还没有官方规范,这一点就更重要了。目前,通行的Javascript模块规范共
Stella981 Stella981
2年前
Javascript模块化编程(二):AMD规范
七、模块的规范先想一想,为什么模块很重要?因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!考虑到Javascript模块现在还没有官方规范,这一点就更重要了。目前,通行的Javascript模块规范共有两种:
Wesley13 Wesley13
2年前
127个常用的JS代码片段,每段代码花30秒就能看懂(中)
关注 Vue中文社区,回复“加群”加入我们一起学习,天天进步!(https://oscimg.oschina.net/oscnet/f93646b0e4f19182cde0bc0ac433358b8dd.jpg)大家好,在上一篇文章127个常用的JS代码片段,每段代码花30秒就能看懂(上)(htt
Wesley13 Wesley13
2年前
MNE
点击上面"脑机接口社区"关注我们更多技术干货第一时间送达大家好!今天Rose小哥结合案例代码给大家介绍一下MNE是如何从Raw对象中解析event的。这篇内容主要描述了如何从原始记录中读取实验事件,以及如何在MNEPython中事件的两种不同表示形式(事件数组和注释对象)之间进行转换。在入门教程中,我们看到了
最佳实践:基于vite3的monorepo前端工程搭建 | 京东云技术团队
一、技术栈选择1.代码库管理方式Monorepo:将多个项目存放在同一个代码库中▪选择理由1:多个应用(可以按业务线产品粒度划分)在同一个repo管理,便于统一管理代码规范、共享工作流▪选择理由2:解决跨项目/应用之间物理层面的代码复用,不用通过发布/安装
敏捷开发 敏捷开发
2个月前
极限编程里最容易被忽略的实践
在前面的一篇文章里面我和大家聊过了极限编程的重要性,今天想和大家聊聊极限编程里面最简单但也往往最容易被忽略的实践——编码规范。说到编码规范,每一个开发人员都非常熟悉,每一个团队也都有自己的编码规范。但实际的执行情况如何呢?估计大多数的团队都是形同虚设,编码