刚入职的程序员小豆打开离职人员遗留的项目后,瞬间惊呆了……各种臃肿代码,完全没有注释,雪上加霜的是甲方爸爸要求加需求,呵呵呵!没有标注,无法找到基础组件,小豆几乎抓狂,好在老板通情达理给了4天时间消化代码,我估计这4天时间根本不够……
其实我们不规范的互联 公司,这种情况真的很常见,项目进行中一个员工离开公司就可能给这个项目和团队带来很大的影响。出现这些问题无非归纳几点:
小作坊式的开发模式
文档缺失
代码不规范
代码难以被扩展
项目结构不规范,不可避免地重复造轮子
缺乏代码审查
团队缺乏足够的沟通和经验交流
项目管理令人绝望
……
高质量代码的三大要素:
可读性、可维护性和可变更性
做好代码规范、提高代码质量,能显著增强代码的可读性、可维护性和可变更性。努力提高代码的读写可维护性,是做好代码规范的必要非充分条件。代码规范和架构设计是软件的灵魂所在,代码质量偏低,就像是人失去了三魂七魄中的一魄,就会丧失活力,影响正常运行,增加软件交付后维护成本,出现推迟完成、超出预算、特性缺失等现象。
任何语言都需要强调编码风格的一致性。只要是团队开发,每个人都以相同的方式编写代码就是至关重要的。这样大家才能方便地互相看懂和维护对方的代码。
实际上,每家公司都会有一份(或多份)代码规范,因此提高代码的读写可维护性的关键在于是否能落实公司的相关文档,公司的技术总监、项目经理或相关代码审查机关是否具有应有的执行力。如果不能落实,那么即便代码规范画得再美,具体的代码也会丑到崩溃。
代码规范
如果不想为以后挖坑,做好代码规范是程序员和团队负责人、项目经理的必修课。
如何保证当前项目开发过程中压力正常,而不是在后期面对过多的压力、以至于噩梦缠身?最简单的办法就是照看好你的代码,也就是落实好公司的代码规范工作。
项目中代码规范的统一。配合自动化工具检测和格式化
约定统一缩进
约定统一一些地方的空格
约定单双引 统一
每天为此付出一丁点的努力,便可以避免代码腐烂,并保证代码产品日后不至于变得难以理解(可读性)和维护(可维护性)。
代码的可读性
代码的可读性其实不是针对的编译器、解释器,而是对于人来说的。具有良好可读性的代码,应该是能让人快速理解、轻松维护、容易扩展的。
相信大家都有过维护别人代码的经历,如果各有各的风格,而没有遵循一定的规范和约定的话,那真的是挺痛苦的一件事。当然,既然编写代码被称作是一种艺术,那难免会有多样性。所以这里不会有太多的要求,只是提出一些建议和判断标准。
以下是摘选的可供参考的策略:
·编码风格一致
·代码清晰表达意图
o 写人看得懂的单词,如果选用英语,那么避免日语、法语和汉语拼音等,尽量使用语义化的命名组合;
o PIE 原则:意图清楚而且表达明确地编程;
o 能够让人快速看懂(最低限度的要求是自己一个月后能快速读懂);
·恰到好处的注释
o 不能太多或太少,注释的形式根据代码具体的情况有不同;
o 避免用注释包裹代码;
o 尽量留下简明扼要的注释;
·评估取舍
o 避免写一些现在不需要、将来也不太可能需要的功能:
§ 不完美主义:不多写代码(如会话存储拆分);
o 避免做没有太大价值的优化工作;
o 区分任务的轻重缓急:
§ 头疼医头也医脚:先容忍失败,再解决问题(如节点关闭逻辑);
§ 不头疼不医头:量化分析(如参数调整回滚等);
o 综合考虑一下性能、便利性、生产力、成本和上市时间……
·简单就是美,避免简单的功能写出复杂的代码;
o 保持简单的代码远比写出复杂代码要难得多,但这是值得的;
o 不编写讨巧的代码;
o 避免无谓的条件嵌套和过度封装;
o 第一眼看上去就能知道其用处的代码,才是简单而美的代码
o 坚持操作方法的原子性,而后使用组合模式实现业务逻辑;
o 避免大段代码,要写高内聚、低耦合的代码;
代码的可维护性
软件可维护性是指理解、改正、改动、改进软件的难易程度。
通常影响软件可维护性的因素有可理解性、可测试性和可修改性。笔者这里将其分为两大类:编写时可维护性和运行时可维护性。
编写时可维护性
编写时可维护性是指在程序或系统上线后爆出 BUG,开发团队能够及时扑灭这个 BUG 且不会爆出其他 BUG。保持方法的原子性,提高代码内聚,能使某处修改的影响降到最低,这样某处方法出现BUG,也不太会影响到其他模块的正常运作。编写时可维护性还包括了代码的可测试性。
运行时可维护性
运行时的可维护性是指在系统运行过程中(或无需再次编码发布、只需系统重启一次)修改系统的某项配置并使其生效,且不影响现在正在进行的业务和用户的操作。这要求软件工程师不能把代码写死。例如配置文件、数据库连接字符串、资源文件、日志等。
以下是摘选的可供参考的策略:
不要把代码写死;
预测可能发生的变化
通过提高代码的复用性提高代码的可维护性
代码的可写性
代码的可写性包括代码的可变更性,代码的可变更性是软件理论的核心。
代码的可写性是建立在代码的可维护性上的,而代码的可写性与可维护性又都建立在代码的可读性上。如果代码难以阅读,那么 BUG 的修正将变得难以入手,新功能的添加就更是无从入手了。
一般可以从几个方面来判断代码可维护性:
代码的可读性和自述性,使得与其相当专业水平的同事可以通过阅读,基本了解代码的含义。并且做一定的维护。
代码结构非常清晰、形式优美,具有一定艺术性。硬件驱动层与应用层层次清晰。应用层与硬件驱动层联系不密切。
各个功能模块之间耦合性弱,局部修改某个功能不影响其他模块功能。可以完成功能升级修改。
对于实际应用中用户提出的功能修改可以轻松的完成。
代码重用性强,可以取出某个模块经过简单修改应用到其他项目中。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!