本文摘自造成代码难以维护的35个恶习,英文原版是Avoid these 35 habits that lead to unmaintainable code
。
代码组织##
- 总是说“一会儿弄好”,但从来不兑现。(缺乏任务管理和时间管理能力)
- 坚持所谓的高效、优雅的“一行代码流”,事实上,可读性才是最重要的,聪明是第二位的。
- 无意义的优化。(类似网页大小之类的优化最后再做)。
- 不注重代码样式和风格的严谨。
- 使用无意义的命名。
- 忽略经过验证的最佳实践(例如代码审核、TDD、QA、自动化部署等,推荐阅读软件开发必读经典著作:Making Software:What Really Works,and Why We Believe It)。
- 给自己埋雷。(例如使用不会报错的库或者忽略例外)
团队工作##
- 过早放弃计划。
- 坚持一个无效的计划。
- 总是喜欢单打独斗。(必须强迫自己与团队分享进度和想法,避免错觉,提高效率)
- 拒绝书写糟糕的代码。(日程紧迫的时候可以写一些“糟糕”的代码,这是程序员的能力而不是bug,当然有时间的时候一定要回头偿还“技术债”)
- 抱怨他人。
- 不与团队分享所学。
- 向主管/客户反馈的速度过慢。
- 不会充分利用Google。
- 着重个人编码风格。
- 带着个人情绪看待他人对自己代码的评论和注释。
写代码##
- 不懂优化策略。
- 使用错误的工具。
- 不追求对开发工具和IDE的精熟。
- 忽略报错信息。
- 迷恋趁手的开发工具。(不同类型的开发任务需要匹配对应的最佳开发工具,例如Sublime适合动态语言,而Eclipse适合Java,如果你喜欢vim或EMACS,并不意味着能用这些工具干所有事)
- 不注重代码中复制的可适配性。(不养成把代码中的活动部件分离出来的习惯,会导致技术债暴增)
- 喜欢重新发明车轮。
- 盲目地剪切/粘贴代码。
- 应付差事,不求甚解,不花时间搞清楚项目运作的机理。
- 对自己写的代码过度自信。
- 不去考虑每一个设计、方案或者代码库的“副作用”。(一个成功的用例并不意味着“万能药”)
- 在一个地方卡住了但坚持不呼救。
测试与维护##
- 只去写能通过的测试。
- 重要项目中忽略性能测试。
- 不去核实代码是否真的可用,没有养成开发中及时快速测试的习惯。
- 重大改动延迟推送。
- 抛弃和逃避自己的代码。
- 忽略其他非功能性需求。(例如安全和性能,准备一份这方面的清单,忽略这些会毁掉你所有成果)