我常常思考是什么造就了好的代码 (good code).使用最新的语言特性、最佳的模式(best pattern)、最好的层次化设计(best layered design)、使用最少内存、亦或最佳的执行性能(performs the best)?很明显,这些项目都会在设计时考虑,但它们是首先要最主要的原因吗(the first things you think of)?或许并不是!
那什么呢?经过一段冥思苦想之后,我有了结论.显然代码或系统应当可裁剪(scalable),正确(correct ,no bugs),完整 (complete, 成功交付), 可扩展(extendable, 可以用系统地增长),并且有好的文档化(well documented),但最终它需要存在很长一段时间,并且会有不同人为它工作,就像击鼓传化(drum roll). 所以它需要便于维护(be easy to maintain),当然需要高质量的代码(good quality,比如有单元测试).
(大图)
什么是好的代码?(What is good code then)
我觉得好的代码就是让"所有人(everyone)"都理解.它要易于修改,增加和重构.需要尽可能的简单(而不只是相对简单) (be as simple as possible (but no simpler)),还要尽量减少与其它系统间的耦合(as loosely coupled to other systems).
为什么要写好代码(Why should we write good code?)
基本上项目中的写代码的人也会有周期性的变化.人员离职,出车祸,迁走他乡,坐牢了等等(反正没好事),一旦发生了,其他人就要顶上来维护代码.绝大多的维护人员要么想完全重写代码,要么就惧怕动到任何东西(最好什么都别动),因为系统确实太复杂了.这两种情况都不是什么好事.理想情况下(ideally),如果所有项目都像"Ubuntu"那样充满激情(spirit) (比如为了支持者无私的进行编码),即便在很长的时期内,事情会运转得很好.
并且,如果我们一开始就正确地保证质量(比如运用TDD或unit test), 它就会让人们易于修改代码,因为他们可以有通过一系统的测试树立信心 (前提是测试能抓到一些没考虑到的副作用(side effect)).
(大图)
后来我们为一些公司做了代码审计(code audits).纳入了关于软件开发的许多不同 的角度.如下表:
Architecture and design (架构与设计)
• Scalability (可裁剪性)
• Integration points and methods (整合点和方法)
• Flexibility (系统弹性)
• Performance and monitoring (性能和监控)
• Database layout and schema (数据库规划)
Code quality (代码质量)
• Follows coding style (遵循一定的代码风格)
• Commented and “JavaDoc”ed (注释及代码归档工具)
• Simple as possible design
• Patterns implemented (实现模式)
Documentation (文档)
• Architecture documentation (UML, Context diagram,etc.)
• Specification of some sort
• Technical specification
• Non-functional requirements (load, performance,etc..) (非功能性需求)
Testing (测试)
• Unit tests
• Load tests (负载测试)
• Performance testing and monitoring
Change control processes (变更管理)
• Source control implemented (源代码管控)
• Processes around change management (变更管理流程)
• Continuous build environment (持续编译环境)
• Issue management process
原文地址: http://www.stevevandermerwe.net/blog/?p=83
转载请注明出处:http://blog.csdn.net/horkychen