整洁代码系列(1)

1、首先我们必须要了解糟糕的代码会导致什么问题?

  • 越糟糕的代码,别人理解的时间就越长,会导致进度严重滞后(代码不仅仅是写给自己看的,除了自己,团队的其他成员也需要在必要的时候去理解);
  • 越糟糕的代码,每次添加或修改代码,如果再不改变糟糕行为的前提下,代码回越来越烂,再也无法理清,最后会束手无策;
  • 随着混乱的增加,团队的生产力会持续的下降,最后趋向于零。
  • 当生产力下降时,管理层只会做一件事,就是增加更多的人手到项目中,期望提升生产力,可是新人并不熟悉系统的设计,但却背负着提升生产力的可怕压力,于是,有可能会知道出更多的混乱。

2、那什么是整洁的代码呢?是否有一定的标准呢?

这个是没有的,每个人都有自己整洁代码的标准呢,我们不妨可以来看看一些非常知名且经验丰富的程序员是怎么说的?

(1)我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。--Bjarne Stroustrup,C++语言发明者

  (每个函数,每个类和每个模块都全神贯注于一件事,完全不受四周细节的干扰和污染)。

(2)整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。--Grady Booch,Object Oriented Analysis and Design with Applications(中译版《面向对象分析与设计》)一书作者。

    (代码应当讲述事实,不引人猜测,它只该包含必需之物。读者应当感受到我们的果断决绝)。

(3)整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。 --Dave Thomas,OTI公司创始人,Eclipse战略教父

  (增补一词,说明了整洁的代码要具有可扩展性;目前而言,测试驱动开发已经在行业中有深远影响,没有测试的代码是不干净的,不管它有多优雅、多可读、多易于理解,微于测试,其不洁亦可知道)。

(4)简单代码,依其重要顺序:

    能通过所有测试;

      没有重复代码

      体现系统中的全部设计理念;

      包括尽量少的实体,比如类、方法、函数等。

      ----Ron Jeffries,Extreme Programming Installed(中译版《极限编程实施》)以及Extreme Programming Adventures in C#(中译版《C#极限编程探险》)作者。

      (减少重复代码,提高表达力,提早构建简单抽象。这就是写整洁代码的方法)。

  (5)如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。--Ward Cunningham,Wiki发明者,eXtreme Programming(极限编程)的创始人之一,Smalltalk语言和面向对象的思想领袖。所有在意代码者的教父。

      (你可以想想最近一次看到深合己意的模块是什么时候,其实整洁的程序好到你根本不会注意到它,设计者把它做得像一切其他设计般简单)。

3、童子军军规

  美国的童子军有一条简单的军规,就是“让营地比你来时更干净”,这完全可以应用到我们的专业领域:代码每次签入时,都要比签出时干净才行,这样子代码就不会腐坏,如果不能时时刻刻的保持代码整洁,随着时间的流逝,代码必将腐坏,因为不好的代码会“代代相传”(传说中的破窗效应)。

时间: 2024-12-15 06:59:43

整洁代码系列(1)的相关文章

整洁代码

TPM(Total Productive Maintenance)主要支柱之一为5S原则体系.5S哲学包括以下概念:整理(Seiri),或谓组织.整顿(Seiton),或谓整齐.清楚(Seiso)或谓清洁.清洁(Seiketsu)或谓标准化.身美(Shitsuke)或谓纪律. 整洁的代码应可由作者之外的开发者阅读和增补.它应有单元测试和验收测试.它使用有意义的命名.它只提供一种而非多种做一件事的途径.它只有尽量少的依赖关系,而且要明确地定义和提供清晰.尽量少的API.代码应通过其字面表达含义,因

老二牛车Axure夜话: Axure嵌入代码系列视频教程汇总贴

老二牛车Axure夜话: Axure嵌入代码系列视频教程汇总贴 Axure嵌入代码系列视频教程汇总贴 嵌入代码系列视频教程之QQ一键加群 嵌入代码系列视频教程之新浪微博秀 嵌入代码系列视频教程之腾讯微博秀 嵌入代码系列视频教程之嵌入百度分享 嵌入代码系列视频教程之嵌入视频 嵌入代码系列视频教程之嵌入百度地图

iOS开发一行代码系列:一行搞定输入框

最近总结了下开发过程中常用的功能,发现有时候我在做重复性的劳动.于是决定把常用的功能抽出来,方便下次使用. 我的想法是:用最少的代码来解决问题.于是写了一些常用的工具类,名字就叫一行代码系列吧...好像挺挫的.. 大致内容有: 1.一行搞定输入框 2.一行搞定网络请求 3.一行搞定上下拉刷新(会自动判断是上拉还是下拉还是两者并存) 4.一行搞定数据库(最近还在写,功能已经基本实现) 5.一行搞定图片保存 6.一行搞定定位 7.一行搞定网络状况变化 8.一行搞定X(功能小集合) 一行搞定输入框 输

编程风格——整洁代码的4个提示

整洁代码的4个提示 虽然这样的文章非常的多,并且,就算是对于编程新手来说,也是非常的简单和显而见,但是,在我们进行Code Review过程中,我们还是能够看到那些非常混乱的代码,所以,有些时候,你会在想,是不是这样的规则太多了,导致我们的程序员记不住.虽然我们在以前的文章中一遍又一遍的说过(比如:<优质代码的十诫>),千言万语总结一下,无论你用什么样的语言,最最基本的编程原则就是下面这四条. 1 – 简短的方法 简单才会易读,简单才会容易,简单才能重用,简单才能保证质量.把一件事搞复杂,是一

读《代码整洁之道》前四章浅显印象 和 我所见的不整洁代码引以为戒

1.根本----良好端正的态度. 2.命名----有意义,规范,可搜索的名称,使用源自问题领域的名称,至少避免误导. 3.类名----名词或者名词短语. 4.方法----应当是动词或者动词短语. 5.双关----最好不要用这种,谁知道add是添加还是相加呢? 6.函数----要短小,印象最深的就是,一个函数只做一件事儿,即使我们需要用到try -catch,也要再独立成一个方法,并且这个方法的第一个单词应该是try. 7.注释----代码即注释当然是最高境界,当我们想写注释才能更好的表达程序的时

代码整洁之道札记之整洁代码

前言:一直以来,我都非常喜欢整洁规则的代码,我痛恶那些杂乱不堪的代码,然而<代码整洁之道>将要告诉我的远不止这些,那么,我希望将自己欣赏的.能够给我帮助的.指引我前进的方案记录下来,以用来我日后翻看. 要有代码 将需求明确到机器可以执行的细节程度,是编程要做的事.一个好的产品,显然其最精髓的不应该是外观,而是诸如Java编译后的class文件. 糟糕的代码 看到"糟糕"这个词就觉得可怕,我之前接手的一个web项目,最初打包完成后,足足有48M,里面充斥着大量的垃圾代码,糟糕

自适应大邻域搜索代码系列之(1) - 使用ALNS代码框架求解TSP问题

前言 上次出了邻域搜索的各种概念科普,尤其是LNS和ALNS的具体过程更是描述得一清二楚.不知道你萌都懂了吗?小编相信大家早就get到啦.不过有个别不愿意透露姓名的热心网友表示上次没有代码,遂不过瘾啊~哎,大家先别急,代码有得你们酸爽的-- 不过由于ALNS的代码量实在太大,小编打算把这个做成一个系列来一一为大家讲解,好让小伙伴们彻底把这个算法框架的代码吃透.今天暂时还是先不对代码进行讲解,先来教大家怎么使用ALNS的框架求解一个TSP问题吧~ 环境准备 小编的演示是基于Windows 10 x

每天看一片代码系列(四):layzr.js,处理图片懒加载的库

所谓图片的懒加载,即只有当图片处于或者接近于当前视窗时才开始加载图片.该库的使用方法非常简单: var layzr = new Layzr({ attr: 'data-layzr', // attr和retinaAttr必须至少有一个,用于指定对应的图片 retinaAttr: 'data-layzr-retina', // 一般对应的图像比attr要高清 threshold: 0, // 距离视窗的距离为多少时开始加载 callback: null // 回调函数 }); 代码解析 首先是包装

每天看一片代码系列(一):stream.js

简介 stream.js是一个小型的js库,用于处理stream相关的操作.这里的stream是指一种数据结构,它像数组一样,可以放置多个类型的数据,但是并不限制长度,甚至可以达到无限长.可以对该数据结构进行检索.修改.追加等种种操作.由于其长度不限这一特性,使得它与通常意义下的数据结构有明显的区别. API stream提供的API包含三种. 第一种是创建类.包括: new Stream(head, functionReturingTail) 第二个参数是一个放回除第一个元素之外剩下的元素的方