关于好的代码(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,比如有单元测试).

                         (大图)

什么是好的代码?(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

时间: 2025-01-21 17:59:00

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

Live Write 的代码高亮插件 Paste Code

然后用了一下VSPaste(原作者网站已经找不到了),感觉代码显示不爽.也用了CodePoste(呵呵,也是看网上找到的),这个感觉还不错的说,不过行数的显示让我觉得有些不爽.本来还想参考一下他的代码的,结果加密了,哈哈. 没办法,只有自己找找资料,自己写一个了.分析了一下,这个插件的难点主要在RTF格式转HTML,以我这么烂的技术是写不出来的.于是在网上找了一个(http://www.codeproject.com/KB/recipes/RtfConverter.aspx),用了几天的时候,写

基于低代码平台(Low Code Platform)开发中小企业信息化项目

前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题.   最近几年来,随着全球经济的深度融合和中国劳动力成本的持续上升,中国企业正步入经营模式转型时期.众多企业已意识到,需要提高管理信息化水平,以促使企业管理成本降低和管理效率提升,企业管理信息化的需求已经由外部推动型,转变为企业内生自主需求.众多企业纷纷加大信息化建设力度,引发对企业管理软件的巨大需求.根据中国产业信息网的统

VC code 在mac 下面的微软代码编辑器

1,关于 visual studio code 有的是时候感觉微软也很奇怪. 还折腾出一个跨平台的开源代码编辑器. https://code.visualstudio.com/ 下载地址: https://code.visualstudio.com/Download 跨平台的,支持windows,mac,linux. 开源的代码编辑器.在mac上比较稀缺. 用了几个都不太好用.感觉上微软的这个还可以呢. sublime 在安装插件的时候有点不太方便. 2,挺好用 起码是微软做的,这个要是不好用,

代码分析测试SaaS平台Code Climate获得450万美元A轮融资

10月8日消息,代码测试工具创业公司Code Climate宣布获得450万美元的A轮融资, 本轮投资由联合广场创投(USV)领投,现有投资机构NextView Ventures.Lerer Hippeau Ventures,.Trinity Ventures以及Fuel Capital跟投.作为交易的一部分,USV执行合伙人Albert Wenger将加入Code Climate的董事会. 据创投时报了解,Code Climate将利用本轮资金继续研发平台同时扩展业务.Code Climate

我不知道有没有人发转贴过PHP编码规范,但为了大家以后的交流,统一代码格式,我想有用的,你看呢?

编码|规范 PHP编码规范1. 介绍 1.1. 标准化的重要** 标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地.这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论.标准化不是特殊的个人风格,它对本地改良是完全开放的. 1.2. 优点 当一个项目尝试着遵守公用的标准时,会有以下好处: · 程序员可以了解任何代码,弄清程序的状况 · 新人可以很快的适应环境 · 防止新接触php的人出于节省时间的需要,自创一套风格并养成终生的习惯 · 防止新接触

Visual Studio 2013新功能:增加代码的透明度和可追溯性

微软打破了Visual Studio两年升级一次的传统,Visual Studio 2012发布还不足一年,微软就计划发布了Visual Studio 2013了.在今天的TechEd大会上,微软宣布,6月底的BUILD全球开发者大会上,大家不仅能见到Windows 8.1的预览版,还能下载到Visual Studio 2013和Team Foundation Server 2013的预览版. Visual Studio 2013的新功能太多了,我们挑几个说一说.VS2013中,开发人员可以具体

敏捷开发中高质量Java代码开发实践

概述 Java 项目开发过程中,由于开发人员的经验.代码风格各不相同,以及缺乏 统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维护,需要较 大的测试投入和周期等问题.这些问题在一个项目组初建.需求和设计均具有不 完全可预期性和完备性的全新项目中将尤为突出.本文将结合敏捷开发周期短, 变化快等特点,介绍如何通过在开发过程中采取一系列步骤来保证和提高整个开 发团队的代码质量,并阐述了每一步可以利用的工具和最佳实践,从而使开发过 程更加规范化,成就高质量的代码,减少测试的投入,并促进整个团

Oracle内存结构详解(六)UGA、CGA及软件代码区

1.UGA (The User Global Area) PGA是一段包含一个Oracle服务或后台进程的数据和控制信息的内存.PGA的大小依赖与系统的配置.在专用服务(Dedicated Server)模式下,一个服务进程与一个用户进程相关,PGA就包括了堆空间和UGA.而UGA(User Global Area用户全局区)由用户会话数据.游标状态和索引区组成.在共享服务(MTS)模式下,一个共享服务进程被多个用户进程共享,此时UGA是Shared Pool或Large Pool的一部分(依赖

使用Sass来编写面向对象的CSS代码

  自从2008年Nicole Sullivan提出Object-Oriented CSS(OOCSS)以来.它就成为一个领先的模块系统,用来组织你的CSS代码方式之一. OOCSS不同于其他组织CSS代码方法,比如SMACSS或者BEM.通过将CSS代码和结构分离让你的模块可重用.事实上,我也通常将SMACSS与OOCSS混为一谈. OOCSS.SMACC和BEM在CSS中是很有内涵的东东,早就在W3cplus站点上有相关内容科普过.可以说理解了这些内容将能更好的帮助您组织.管理您的CSS代码