阅读更多

6顶
0踩

编程语言
首先要承认,大学毕业的时候我是个糟糕的程序员。我拿到了学位,学到了一大堆书本知识,然后,我开始做一个不太重要的项目,每天晚上花大量的时间做简化。 起初,一切正常,但是我的代码风格一直在添乱。复制、粘贴、蹩脚的命名,混乱的思考,而且总用长期连续运行的方法,执行各种各样本可以分开的任务。几个月之后,我意识到一个严峻的现实:这个项目要崩溃了。原本我以为一个人开发,可以避免混乱。但是最终不得不承认,这个项目被我弄得一团糟,没法维护,更别说去理解了。

尽管我的代码通常能正常运行,但我确实在编码时玩忽职守,因为我写的代码,不经过仔细重构,没人能看懂。那时,我是个超高效的技术债务制造者。 你一定不想那样。
引用
再简单的问题,一个糟糕的程序员都能把它变复杂。——Steve Bohlen

哇,Steve是在说我吧?我早期的项目就很好验证了这句话。没有良好的实现,再简单的逻辑都能变得晦涩难懂。早期的经验让我明白,我该研究下怎么改进代码风格了。

什么是整洁的代码?

代码整洁是一种以读者为中心的开发风格,以此开发的软件易于读写和维护。开发人员总以为他们的工作在应用程序能够正常运行时就完成了。但是我们编写代码,并不只是为了给计算机用。
引用
编码是一种和另外一个人交流你希望计算机做什么的艺术。——高德纳

保持代码整洁,首先要意识到你的读者不只是计算机,还是活生生的人!牢记这个原则,我们来讨论代码整洁之所以重要的七个简单理由。

1. 你是个作家

想让妈妈觉得你很厉害?告诉她你是个作家!作家就是那些练习写作并以此为职业的人。开发人员每天都在写。但是作为开发人员,我们总会忘记我们写的每一行代码都会被人阅读十遍以上。这些人,就是我们的同事。他们阅读代码,忙着修复漏洞和添加新的特性。

卓越的作家以写叙述清晰、扣人心弦的故事著称于世。他们使用诸如章节、标题和段落等工具,有条理组织他们的想法,并耐心的引导读者。开发人员的工作模式也很类似,只是他们简单的使用命名空间、类和方法这些行话来讲述故事罢了。



代码整洁的人能够聪明使用这些工具来降低复杂度,使故事变得清晰。

2. 代码整洁是基础

近年来,专业的重构、单元测试、测试驱动的开发等软件实践备受关注。这些实践提升了代码质量和软件的可维护性。实现代码整洁的原则是一项基本技能,它的优势会在进行重构代码或者对代码进行单元测试时显现。代码整洁的原则使得源代码高度模块化并且易于阅读和测试。如果将那些软件实践看作是房子的话,整洁的代码则是地基。

3. 证明你的技能

假设你正在参加一场技术面试。如果被问到代码质量,为证明你的代码质量,你能够举出专业且合理的理由吗?

或者,你会这样回答?



如果这就是你关于代码整洁所能想到的,那可是个坏兆头。如果你从未有条有理的深入思考过代码风格的质量问题,那么你可以改进的机会估计很多。代码整洁的人能够传授很多他们使用的具体行为、模式和技巧。但是,代码整洁毕竟不是偶然现象,它要求可行的规律的专注于清晰的表达意图。
引用
能够被衡量的东西,都能被管理。—— Peter Drucker

建立一个整洁代码的词汇表,不仅有利于面试和提升代码质量;而且,在代码审查时,建立大家公认的代码可读性的词汇表和框架,能够促进冷静的对话。

4. 读代码才是难事

开发人员常以能够解决难题为傲。不过相对来讲,写代码比较简单,读代码才是件难事。这就是为什么 Eric Lippert 写文章说阅读代码很难。这也是为什么这么多的程序员宁愿重写,也不愿做阅读和理解已有的代码这种苦差事。既然看代码原本就很挑战,如果一些代码你写的时候都只能勉强理解,你会发现过后你一点都看不懂。专业的程序员写了太多的代码,以至于只要间隔几周,就能忘记大部分的结构和设计,像以全新的视角看这个项目。过段时间看不懂自己的代码确实是很尴尬的事。相信我,我经历过好几次。



5. 技术债务让人沮丧

马虎混乱的代码会给我们的项目埋下技术债务。仔细考虑情境时,技术债务也会是有用的,但是过度的技术债让人沮丧,并且会导致团队的人才流失。当简单的事情变得复杂时,开发人员就会开始撤退去别的地方了。他们更看重工作质量带来的成就感,而不是工作数量。技术债务会降低代码重用的机会,并且处处拉低其他代码库的质量。

6. 你太懒惰

PERL语言的作者Larry Wall说过程序员的三大美德:懒、缺乏耐心、自大。是的,在合适的情境中,懒惰确实是积极因素。早些年,当我还在跌跌撞撞的写代码的时候,我认识到保持代码整洁所付出的艰辛真的会得到回报。专业的开发人员努力做到正确的懒惰。这种懒惰是把更多的精力放到代码中,以至于开始时不难写,以后也不会难以重用。代码整洁不会多花费很多时间,而且一旦你掌握这些原则,你的编码速度实际上会更快。因为精炼的、表达充分的代码最大的优点就是易于管理。

人们处于压力中时,容易偷工减料并且忽略最佳做法。然而像Bob Martin大叔在他的《代码整洁之道》中提醒我们的那样:我们没有时间不认真。长远来看,马虎草率所增加的出错次数和后期的维护代价,最终会拖延项目速度。历史经验告诉我们,后期你基本不可能有时间再去整理你的代码。所以为什么不在一开始就好好做呢?

7. 不要成为那个动词

好吧,其他的原因都解释的站得住脚,但是这个理由最关键。大家都知道前同事的名字变成动词来描述“脏”代码的事:糟糕,这些代码是Jimmy写的。“Oh man, this code has been Jimmy’d.”

这样的评价,简直就是长远就业前景的克星啊。我们都希望未来的职位上,同事能够推荐或者录用我们不是吗?想要确保今后同事会推荐你,并且期待和你以及你的代码合作,让别人知道你的代码整洁是最好的方式。

代码整洁的原则

以下是代码整洁的三个核心原则:

  • 选择正确的工具
  • 优化信噪比
  • 尽最大努力写出能够自解释的代码
Cory在PluralSight的新课程代码整洁之道:写代码给人看详细的阐述了这三个原则。如果你有兴趣提升代码质量,建立评价和编写整洁代码的词汇库,去看看吧!

本文由 伯乐在线 - Victoria 翻译自 Cory House
原文:代码整洁之所以重要的七个理由
  • 大小: 6.9 KB
  • 大小: 9.5 KB
  • 大小: 17.8 KB
来自: 伯乐在线
6
0
评论 共 2 条 请登录后发表评论
2 楼 freezingsky 2014-03-25 16:13
经常是这样的情况:开工前,架构师一样的心态和眼光,动工后,发现太麻烦,于是开始各种堆积,然后滚雪球,最后自己无语了。
1 楼 OracleX 2014-03-22 13:56
一直在说大家都知道问题,到需要出方案解决问题草草收场了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 代码整洁之所以重要的七个理由(转)

    我拿到了学位,学到了一大堆书本知识,然后,我开始做一个不太重要的项目,每天晚上花大量的时间做简化。 起初,一切正常,但是我的代码风格一直在添乱。复制、粘贴、蹩脚的命名,混乱的思考,而且总用长期连续运行...

  • 《代码整洁之道 clean code》学习笔记

    一个源文件中存在多种语言G2:明显的行为未被实现G3:不正确的边界行为G4:忽视安全G5:重复G6:在错误的抽象层级上的代码G7:基类依赖派生类G8:信息过多G9:死代码G10:垂直分隔G11:前后不一致G12:混淆视听G13:...

  • 《代码整洁之道》阅读分享

    《代码整洁之道》是世界级软件开发大师Martin Folwer的著作,软件开发行业不朽的经典。养成保持代码整洁的好习惯,才能走得更远。

  • 《代码整洁之道 》第十七章 味道与启发

    如果在特定函数中用名为response 的变量来持有HttpServletResponse 对象,则在其他用 到...这是Martin Fowler 提出的代码味道之一类的方法只应对其所属类中的变量和函数感兴趣,不该垂青其他类中的变量和函数。

  • 《代码整洁之道》 阅读笔记

    《代码整洁之道》阅读之后有种醍醐灌頂的感觉。以前仅仅想着如何快速实现,现在想着如何设计,如何写好代码。 仅记录本人认为重的笔记,而非所有章节的总结,另外,个人也认为书本的最大价值在于1到10章,11章以后...

  • 代码整洁之道

    其结果是,这个领域内的许多人都没能学会做得很好。我们有时会怕其他开发者反对重命名。如果讨论一下就知道,如果名称改得更好,那大家真的会感激你。多数时候我们并不记忆类名和方法名。我们使用现代工具对付这些...

  • java代码整洁之道_【读书笔记】代码整洁之道

    第一章 整洁代码赶上期限的唯一方法:始终尽可能保持代码整洁。整洁的代码只做好一件事。整本书的主旨,不要重复代码,只做一件事,表达力,小规模抽象。要想干得快,要想快点做完,要想轻松写代码,先让代码易读吧...

  • 重读【代码整洁之道】

    一、前言【代码整洁之道】很经典,但也有些过时,翻译上也有些啰嗦,但总体上是好书。通过对本书核心内容的摘抄,结合自己的经验,整理了一些精简的点,这样你就省的去啃那本400多页的书了。软件质量...

  • 代码整洁之道-读书笔记

    文章目录代码整洁之道-读书笔记有意义的命名-高质量代码的命名法则1 名副其实2 避免造成误导3 尽量做有意义的区分4 尽量使用读得出来的名称5 尽量使用可搜索的名称6 取名不要绕弯子7 类名尽量用名词**8 方法名尽量用...

  • 代码整洁之道学习

    2.12 每个概念对应一个词 2.13 别用双关语 2.14 使用解决方案领域名称 2.15 使用源自所涉问题领域的名称 2.16 添加有意义的语境 2.17 不要添加没有用的语境 2.1 介绍 软件开发中命名随处可见,做好命名是必要...

  • 《代码整洁之道》读书笔记

    代码整洁之道 第一章 整洁代码 1.1-1.9 第二章 有意义的命名 2.1-2.6 2.7-2.18 第三章 函数 3.1-3.3 3.4-3.5 3.6-3.7 3.8-3.15 第四章 注释 4.1 - 4.3 4.4 - 4.5 第五章 格式 5.1 5.2 - 5.5 第六章...

  • 谈代码整洁之道,如何写出优雅的代码

    最近为了制定团队的代码规范,拜读了鲍勃大叔的《代码整洁之道》,读完之后,在如何写出整洁优雅的高质量代码方面有很大的启发。我认为《代码整洁之道》是我们提高编程能力和自我修养必读之书。相信你读完之后,也会...

  • 代码整洁之道-理论

    文章目录代码整洁之道-理论前言一、优雅代码的层次1、第一层次:命名要好2、第二层次:代码结构要清晰3、第三层次:熟悉6大设计原则4、第四层次:熟悉23种设计模式5、第五层次:并发编程二、什么是糟糕的代码(一)...

  • 代码整洁之道笔记(命名,函数,格式)

    NameString会比Name好吗,难道Name回事一个浮点数吗。如果缺少明确约束,moneyAmount和money没区别。customerInfo和customer没区别。theMessage和message没区别。 2.避免误导 别用accountList来称一组账号,除非它真...

  • YOLO算法-城市电杆数据集-496张图像带标签-电杆.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

  • (177406840)JAVA图书管理系统毕业设计(源代码+论文).rar

    JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代

  • (35734838)信号与系统实验一实验报告

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

  • YOLO算法-椅子检测故障数据集-300张图像带标签.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

  • 基于小程序的新冠抗原自测平台小程序源代码(java+小程序+mysql+LW).zip

    系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

Global site tag (gtag.js) - Google Analytics