写点什么

软件开发中的防呆方法总结

用户头像
张明云
关注
发布于: 2020 年 12 月 08 日
软件开发中的防呆方法总结

防呆即减少对人的注意力、能力和经验的依赖,通过设计提炼为模式或方法避免犯错或最大限度地降低犯错概率的发生。生活和工作中随处可见防呆设计的例子:

  1. 衣服衣领处的标签可以轻易识别前后和正反,避免穿错的情况发生,即使是没有灯光的情况下;

  2. TypeC接口正反都能插,避免USB式的尴尬;

  3. 在电子设备中删除文件时的确认提示,降低文件被误删的概率;

  4. 插座插口的安全设计,从根本上解决家长对小孩玩耍时触电的担忧;

  5. IDE中代码语法错误提示、编译时的错误提示、运行时的异常提示,尽量提前暴露问题减少因为错误导致的修复成本;

  6. 企业微信可将发信息的快捷键调成Ctrl+Enter,避免按Enter一时爽,按了之后可能不爽的情况,尤其是在群里发言或者和领导沟通时;

  7. 自动冲水马桶解决冲不干净或者忘记冲的尴尬;类似的还有自动水龙头、自动冲水小便池等。

防呆设计给工作和生活带来的好处是显而易见的,举几个没有防呆的例子你就知道防呆有多重要了,比如:

  1. 秋冬干燥季节的静电,因为大多场景都没有防呆设计,导致每次触摸带有静电的东西都有些恐惧;

  2. 即使是再聪明、心细的人,也有出门忘带手机、钥匙等随身物品的时候。

 

因为软件开发的复杂度以及开发人员能力经验参差不齐,在开发过程中开发人员犯错是常有的事情。轻则几乎没有影响,比如大多数代码层面的错误;重则影响项目进度、项目质量甚至是产品口碑,比如流程机制或关键节点方案决策上的错误。不管是个人或团队,犯错不可怕,但一直犯错才可怕。作为团队负责人,有必要基于过往经验和团队实际情况总结提炼出模式或方法,固化下来防呆,避免或降低错误的发生,就像设计模式一样,使用了设计模式就能在一定程度上保证代码的质量。

 

结合在实际工作中的实践,分享一下在软件开发过程中的防呆设计。

通过自动化实现流程上的防呆:

通过将Gitlab、Jenkins和企业微信打通,实现提交代码后即可通过企业微信接收构建错误的结果通知,避免提交代码后忘记构建、或者构建错误没有及时修正的问题。具体做法是通过Gitlab的Webhook实现提交代码自动触发Jenkins项目的构建,通过对企业微信做二次开发,实现Jenkins构建后将构建结果推送到企业微信。更进一步还可以打通自动化测试平台、线上异常采集平台、运维平台和企业微信,实现测试报告、异常报告、运维告警的自动推送。

 

通过模板化实现规范化和技术方案设计上的防呆:

团队规范的落地是一件头疼的事情,比如编码、命名、公共技术使用规范:

  1. 通过改造IDE中的项目Demo模板,将对公共技术的依赖直接在模板中编写好,就像MFC一样,开发人员通过模板创建项目时自动引入对公共技术的依赖,只需要在这基础上填空或微调即可。

  2. 通过编写静态代码检测工具,在Jenkins构建项目时检测文件和编码的命名、版本名和版本号、项目结构是否符合团队规范,只要不符合规范就报错,久而久之让开发人员形成了遵守规范的习惯。

通过将技术方案设计文档模板化,避免因为人员能力、经验的差异,导致不同人做出来的技术方案质量相差太大、考虑不周全。尤其是需要团队或上级决策的文档,通过模板化可以让你考虑得更为周全,减少对人的依赖。不要指望你没意识到的问题团队其他成员或上级能够发现,他们也是人,并且对项目的理解还没有你深入,总有考虑不周全的情况。

 

通过CheckList实现项目发布版本时的防呆:

有本书叫《清单革命》,全书的主题就是讲清单的重要性,尤其是对于复杂的工作,通过梳理清单可以降低对人的依赖,避免或降低错误的发生。在软件版本发布时,也很有必要梳理清单,将每一项需要做的事情作为检查项,形成版本发布的CheckList。比如埋点、自更新、切换正式服务器、专项测试是否通过、依赖最稳定的公共技术组件、修改版本号和版本名等和软件功能不相关但影响发布质量的事项。每次发布版本前必须逐一Check确认CheckList中的每一项,都通过了才允许发布版本,避免了很多影响发布质量问题的出现。

 

下面是对这篇文章的总结:

  1. 防呆能减少对人的注意力、能力和经验的依赖,避免或最大限度降低错误的发生;

  2. 通过流程自动化、文档模板化和制定CheckList能很大程度地避免或降低团队在软件开发过程中的错误,提升软件开发质量和效率。



发布于: 2020 年 12 月 08 日阅读数: 33
用户头像

张明云

关注

纸上得来终觉浅,绝知此事要躬行。 2017.10.21 加入

先后做过miniGUI、Android应用、Android SDK开发,以及移动端技术方案设计及落地的工作。 先后负责过Android应用、移动中台、架构设计及落地和移动游戏开发的工作。

评论

发布
暂无评论
软件开发中的防呆方法总结