不知道有多少人像我一样,程序出现问题时添加函数添加变量解决,变量名用a,b,c等“简单”的字母来表示。不知道有多少人像我一样,看完自己的代码,心里暗骂“什么玩意儿!”。没有规范的约束,写出的程序最多只能应付作业,根本达不到实用的目的。为了自己写出的程序能像诗歌一样优美,我开始学习前辈的经验。

第一章、整洁代码

代码的必要性。很多人幻想着能出现一个超级AI,能够把你的自然语言表述的指令直接翻译成程序然后执行,即使你的表述很随意。很抱歉,机器只会严格按照指令执行,你说的人所理解的话他们听不懂。除非你造出来一个人,不过这技术早就有了。必须要有严格的命令规范,逐条下达,机器才能去执行。而这种严格规范的命令,就是代码。

为什么会产生糟糕的代码?“明天就是ddl了,可是我的程序只完成了一半啊”,时间的约束致使你不得不为了达成目标放弃可读性。“啊,又要写代码”,也或许你本身就很懒,没有积极性,只会应付差事。关于前者,为了赶时间而仓促的编写代码大部分情况下的结果是,你并不能完成要求通过测试,面对糟糕的代码越改越乱,最后崩溃。关于后者,劝一句,改行吧!

混乱的代价是什么?相信做过团队项目的人都有这样的经验:某天,进度检查,信心满满,因为昨天调试很成功,可是,检查的时候突然崩溃!你稍微有点慌了,不过嘴上还是说了一句“小问题,我看一下代码”。你开始看代码,许久,“奥,可能是这个变量出问题了,某某某,这个变量啥意思啊?”,“emm,……我。。记不太清了,要不我们改改吧”。面对着混乱的代码,你们组的人们开始建言献策,这里改一下,那里改一下。旁边的老师很无奈,于是走了。就这样,你们改了一整天,终于又可以了。可是,你们没有意识到的是,整齐的箱子里面藏着胡乱堆积的物品,早晚有一天一堆问题会洒出来!

如何避免混乱的代码?1.一开始编程时就要有严格的规范和良好的习惯。2.不要为了赶时间而放弃整洁性,制造混乱无助于赶上期限。3.在代码混乱度极高时,从头开始。

整洁代码的几个特征:1.整洁的代码只做好一件事。2.整洁的代码如同优美的散文,充满了干净利落的抽象和直截了当的控制语句。3.整洁的代码看起来像是特别在意它的人写的。

第二章、有意义的命名

取好名字的几条简单规则:

1.名副其实。你要让读代码的人看到你的变量名函数名就知道它是做什么的。例如:

int d;//消逝的时间,以日记

不要认为在这里注释就OK了,不要让读者在其他调用此变量的地方回过头看这里的注释,这样只会浪费宝贵的时间!最好像下面这样做:

int elapsedTimeInDays;

2.避免使用可能带来误导的命名。使用含有关键字的变量,如accountList,会让程序员怀疑这是不是一个List类型的变量,尽量不要在变量名中含有关键字。使用l和o会让人疑惑,这到底是数字还是字母。避免误导是“干净利落”的重要前提。

3.做有意义的区分。使用a1,a2,a3……作为一组变量只会让人摸不着头脑。使用同义词来表示不同的变量也会令人头疼。

4.使用通俗的词汇。不要出现在助教面前讲代码时“这个变量怎样怎样,那个变量如何如何”的的丑态。要能够清楚的读出来你写的程序,包括每一个变量,每一个函数。记住,编程不需要你展现高深的词汇量和取巧的缩写命名(genymdhms),清晰是首要原则。

5.使用可搜索的名称。编程软件都有搜索字符串和替换的功能,为了方便修改程序,你搜索"apple",全部替换成"pear"。令你欲哭无泪的是,所有的"redapple"都变成了"redpear"。我想,吃过“redpear”的人应该能懂这一点的重要性。

6.词性恰当选择。类名和对象名最好是名词或名词短语(如:Customer,Account等),方法名最好是动词或动词短语(如:postPage,deletePage等)。

在我看来,以上6条比较重要,其余的简介见《代码整洁之道》第二章。

第三章、函数

写好函数的几点要求:

1.短小。函数不应该大到足以容纳嵌套结构。依据作者的经验,函数应该在20行以内。从小学开始,语文老师就告诉我们,写作文要坚决避免开头中间结尾的三段式。肥胖的肚子着实令读者难受。相比之下,优秀散文作品都是三五行为一段的,这种方式令读者省力,更容易去感受文章的美。

2.只做一件事。企图一个main函数解决所有问题是很多新手的通病。不妨将各个功能分成不同模块,用不同的函数实现。我经常这样比喻,函数就是一个一个的积木块,构造好了所需要的各种积木块之后搭建城堡就变成了一件有趣且简单的事情。

3.遵循向下规则。举个例子:1.我要去吃饭。2.去芳华吃的话要走经过图书馆的路。3.到了芳华,吃米饭还是吃面食。程序要有层次,一步一步引导读者明白你要做什么事情。在这里可千万不要用小说写作中那些倒叙插叙之类的手法,那样只会让人云山雾绕,毕竟程序追求的是简洁易懂,而不是富有哲理。

4.switch语句。(这种问题的解决方法没看太懂。)

5.使用描述性的名称。清楚的利用函数的名称展现这个函数要做的事,例如,OrderStudentId(对学生Id排序)要比Order(排序)要更清楚。就像每一段的主旨句一样,交代清楚这一段的内容是十分友好的。

6.函数参数数量要少。最理想的参数数量是0,其次是1,再次是2,应尽量避免3。这里有一些应当注意的地方:

1>一元函数中参数有两中情况,1.提供信息 2.被操作。2>用两个函数替代含有标识参数的函数(如,calcute(Boolean isFloat))会更加清楚。3>如果函数需要两个、三个或三个以上的参数,可以将这些参数封装成类。4>尽量不使用输出参数。

7.无副作用。应该避免程序对一些变量(如全局变量)做未能预期的改动。别人调用某个函数完成了某个功能,但对函数中某个全局变量的改动却一无所知,在程序不够健壮的情况下极易出问题。

8.指令与询问应当分开。函数应该修改某对象的状态,或是返回某对象的有关信息。两样事情都干只会带来混乱。

9.使用try/catch替换if/else返回错误信息。使用try/catch返回错误信息能够避免使用if/else带来的多重嵌套问题。但是try/catch代码块并不美观,最好将这一部分从主体中抽离出来另外形成函数,而且这个函数只应做错误处理这一件事。

10.避免重复。曾有个编程很好的同学跟我说,“凡是出现超过两次的代码,都应该写成函数”。这样做一来简化了修改的复杂度,二来减小了出现错误的可能性。

11.如何做到以上10条。首先,不要企图一次性按照标准写出完美的代码,这样必然十分痛苦。最好的做法是像写文章一样,最开始打初稿,随便写,只要能完成自己的想法。然后思考自己的立意(也就是解决问题的方案)是否需要改变,不断修改至最佳。最后再按照以上标准,开始逐段逐句优化,擦去粗糙的棱角,适当改变层次结构,完成一篇优美的作品。

转载于:https://www.cnblogs.com/ustckx16/p/8600961.html

如何写出如散文般的代码――《代码整洁之道》读书笔记(Ch1-Ch3)相关推荐

  1. 代码整洁之道-读书笔记之整洁的代码

    1.整洁代码 阅读本书有两个原因,第一,你是个程序员,第二,你想成为更好的程序员 1.1 要有代码 有人认为随着时代的发展,写代码不再是问题,我们更应该关注建模和需求 这句话后半句没有问题,因为语言在 ...

  2. 代码整洁之道读书笔记(Ch4-Ch7)

    这几章从注释.程序格式.对象与数据结构的规范以及错误处理四个方面介绍了如何使代码变得简洁易懂.不同于上次摘抄的方法,这一次我会结合第一次个人作业的代码进行分析. 第四章  注释 这一章告诉我们,好的注 ...

  3. 代码整洁之道 读书笔记

    第1章 整洁代码 1.1 要有代码 1.2 糟糕的代码      稍后等于永不 1.3 混乱的代价 假设前期不注意.后期的加入代码.改动效率都很低 1.3.1 华丽新设计 1.3.2 态度 1.3.3 ...

  4. 代码整洁之道读书笔记——第一章:整洁代码

    软件质量,不仅仅依赖于项目架构和项目管理,同样重要的是代码质量!!! 序 神在细节之中,其实干什么事都一样,从小到大,一直明白一个道理:细节决定成败! 软件架构在开发中占据重要地位.其次,宏达建筑的最 ...

  5. 代码整洁之道-读书笔记1

    第一章 整洁代码 1.2糟糕的代码 糟糕的代码会毁掉一个公司,但是为什么会出现糟糕的代码? 可能是因为赶时间,如果花时间重构或者清理以前的代码,老板就会大发雷霆. 勒布朗法则:稍后等于用不. 1.3混 ...

  6. 代码整洁之道----读书笔记

    一.有意义的命名规则 二.优雅的函数 三.良好的注释 四.整齐的格式 转载于:https://www.cnblogs.com/k5bg/p/11063235.html

  7. 你应该知道的7个写出更好的 Java 代码的技巧

    来源:SpringForAll社区 查看这些技巧和窍门可以帮助你写出更好的 Java 代码. 是的,你可以按照以下7个技巧和窍门编写出简短.整洁的 Java 代码.他们中的一些可能会让你感到惊讶,但是 ...

  8. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...

    原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...

  9. 教你写出可读性高的Python代码

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是这门语言设计的核心.一个不争的事实是,相对 ...

  10. 写出gradle风格的groovy代码

    写出gradle风格的groovy代码 我们先来看一段gradle中的代码: buildscript {repositories {jcenter()}dependencies {classpath ...

最新文章

  1. 配置隧道模式的IPSec.×××
  2. 自动写作、RNN基本原理以及LSTM的基本原理
  3. mongodb集群 java_MongoDB集群JavaAPI插入数据
  4. 第四十二篇 面对对象进阶
  5. Docker 部署dotnetcore
  6. week7 read
  7. 移动磁盘提示使用驱动器中的光盘之前需要格式化文件怎么找回
  8. .Net C# Newtonsoft.Json JsonSerializerSettings配置
  9. 经验谈:调查问卷问题设计“六忌”
  10. pillow库——使用图像类Image
  11. Mac怎么方便看节假日安排,添加中国法定节假日安排
  12. 关于Palantir ——第六部分 – 图分析应用
  13. 怎么扫描图片存为电子版?只需要几步小操作
  14. 每周推荐短视频:谈论“元宇宙”要有严肃认真的态度
  15. Cocos2dx lua 2.xpk 3.x偏Mac OS
  16. 大型网站技术架构的演讲之路
  17. bugzilla 安装
  18. STM32的QSPI通信(学习笔记)
  19. 2021年剧本杀专题研究报告
  20. python设计一个小游戏、定义一个top score_python实现滑雪者小游戏

热门文章

  1. gimp 抠图_GMIC(gimp 快速抠图)V1.5.2.4 免费版
  2. L2-016 愿天下有情人都是失散多年的兄妹【DFS】
  3. iOS实现炫酷悬停交互视图
  4. 阿尔伯塔大学知名计算机工程学教授,阿尔伯塔大学计算机工程硕士解析
  5. MPCS-314 1A 光电耦合器 用于IGBT/MOSFET隔离栅极驱动 完美代替ELS3150 亿光
  6. Develop -- Training(十五) -- 显示高效位图
  7. java碰撞检测代码_java碰撞检测代码
  8. 好文推荐:努力是没有用的
  9. asp.net常用的命名空间及含义
  10. figma安装包_Figma软件下载|UI界面设计软件(Figma)下载 v3.0.4 官方版 - 比克尔下载...