关于好的代码(Aspects to good code)

我常常思考是什么造就了好的代码 (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,比如有单元测试).


关于好的代码(Aspects to good code)_第1张图片

                         (大图)

什么是好的代码?(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) (比如为了支持者无私的进行编码),即便在很长的时期内,事情会运转得很好


并且,如果我们一开始就正确地保证质量(比如运用TDDunit test), 它就会让人们易于修改代码,因为他们可以有通过一系统的测试树立信心 (前提是测试能抓到一些没考虑到的副作用(side effect)).

   关于好的代码(Aspects to good code)_第2张图片

                                       (大图)

后来我们为一些公司做了代码审计(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

你可能感兴趣的:(测试,javadoc,performance,documentation,testing,Scalability)