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

简介: 我常常思考是什么造就了好的代码 (good code).使用最新的语言特性、最佳的模式(best pattern)、最好的层次化设计(best layered design)、使用最少内存、亦或最佳的执行性能(performs the bes...

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


并且,如果我们一开始就正确地保证质量(比如运用TDDunit 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

目录
相关文章
|
存储 编解码 监控
G-Code 详解
玩过一段时间3D打印机的朋友,都会接触到G-code文件。所谓G-code文件, 指的是3D模型在进入3D打印机实际打印之前,必须要经过切片器处理而成的一种中间格式文件。
4556 0
|
设计模式 算法 Java
code review
也不知code review是从哪年开始流行的,我的职场经历从刚开始完全没有到1对1,再到团队式review
181 0
code review
|
JSON Java 程序员
code S: code style & code standard
关于代码风格与代码规范的二三事
206 0
使用代码判断某个note是否已经implemented
使用代码判断某个note是否已经implemented
102 0
使用代码判断某个note是否已经implemented
|
移动开发 前端开发 程序员
CODE大全
我本人自己是个程序猿,在这个互联网时代,我除了工作,业余时间都在自己的博客上编写文章,我以写博客文章赚点零花钱。这是一篇软文,主要用来推广一下我的第二个网站:CODE大全。说实话,我的文笔很水,从小写作文,到现在没有得过高分。也不知道从何处开始介绍 CODE大全 。CODE大全主要包含以下几个板块博客栏目:www.codedq.net其中博客栏目包括,首页,编程语言,WEB前端,数据库,架构设
1727 1
|
Web App开发 前端开发 开发工具
强大的 VS Code
在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 系统外,最大的惊喜莫过于宣布推出免费跨平台的 Visual Studio Code 编辑器了!
5482 0
|
安全 Java 程序员