作为一个代码洁癖患者,我最大的愿望就是世界和平……对不起,拿错剧本了,最大的愿望就是将对代码的洁癖传播给每一个人,净化所有的代码。这是一个宏大的愿望,但我会一直努力净化我所看到的每一行代码,并且希望能影响更多的人,让大家都写出整洁的代码。

在阅读本文之前,想先提两个问题:

  1. 你是程序员吗
  2. 你想成为更好的程序员吗

如果上面两个回答都是肯定的,那请你继续读下去,否则就可以直接关闭网页了。

什么是整洁代码

相信有过一定工作经验的程序员都读过别人的代码,也一定看到过槽糕的代码,看到那些糟糕的代码时你是不是在想:这写的什么垃圾东西,读懂这段代码所花费的时间我都能把这个功能再实现一遍了。还有另一种情况:引用别人的代码时,为了能按时完成,不得不去适应别人的代码风格,跟着制造混乱。当混乱越来越多时,整个团队的生产力也越来越低,直到最后不得不把所有代码重新整理一遍,而这个工作里可想而知。

上面说的都是糟糕的代码所带来的影响。那么什么是整洁的代码呢?在我看来可以从两个方面定义整洁代码:

  1. 外在美

    外观看起来优雅美观的代码会使人心情愉悦。其中主要体现在:代码所在的位置是否恰当,代码里是否有适当的注释,适当的缩进和空行以及没有重复代码等等。

  2. 内在美

    外在美只是“看起来”使人心情愉悦,如果缺乏内在美,那么当别人真正开始读的时候,刚才愉悦的心情会在一瞬间烟消云散。而内在美则体现在:尽量少的API,代码之间的尽量少的依赖,干净利落的抽象和直截了当的控制语句等。

在理解了什么是整洁代码后,希望我们在写每一行代码之前都要思考一下,这行代码是否足够整洁,是否让人看了心情愉悦。

之后的一段时间,我也将会从以下几个方面和大家分享,如何写出整洁的代码。

有意义的命名

什么是无意义的命名?如果代码中所有的变量名,函数名都是abcd之类的,相信你在看到这样一段代码的第一眼就已经失去了读下去的欲望了。也许有人觉得这太极端了,认为不会有人这样写代码。那么我们在考虑一下,我为一个变量命名为name,那么在没有前后语境的情况下,你能想象出这个变量是用来做什么的吗?是一个人的name还是一个物品的name,是firstName还是lastName?所以,有意义的命名对代码阅读是非常重要的。

如何定义类和函数

如何定义相信大家都会,毕竟这是最基本的操作,那么怎么才能算是整洁的类和函数呢?

要不要写注释

大多数程序员都觉得写注释(文档)很麻烦,觉得自己的工作就是实现功能,自己写的代码自己能看懂就行。事实上真的是这样吗,他们真的能看懂自己三个月前写的代码吗?

另一种程序员知道要写注释,但是他们写的注释都是诸如:“这是一个方法”、“这是一个循环”……这样的注释写出来真的有意义吗?

如何排版

这个属于外在美,第一印象很重要,第一眼看上去很好,才会继续看下去不是吗。

错误处理

代码运行时的错误如何处理吗?全部抛出去,交个用户处理?全部catch住,隐藏起来不处理?这两种程序员相信都会被老板当成错误处理掉吧。

合格的单元测试

什么样的单元测试才算合格,单元测试对代码的覆盖率要达到多少?

迭代

胖子从来都不是一口吃成的,怎么才能让你的代码越来越饱满,系统越来越稳定呢?唯有不断迭代。

结语

上面这些问题,我将在后面的文章中挨个解读。希望你读完之后,也能化身为整洁代码的守护者。

代码洁癖系列(一):什么是整洁代码相关推荐

  1. 代码洁癖系列(八):迭代的原则

    我们都知道,一个软件的维护成本往往要高于其研发成本.在维护过程中,我们的代码需要不断的进行迭代.迭代的目的有两个:修复bug和增加新特性.但是迭代也会带来一系列新的问题,比如新的bug,或者是破坏代码 ...

  2. 代码洁癖系列(五):外在的格式美

    我们在阅读一些优秀项目的源码时,一定会感叹他们代码的整洁和一致性.而作为第一印象,代码格式的整齐是让人能够继续阅读下去的动力.今天我们分别从垂直格式和横向格式两个方面来讨论代码的格式.修正格式的方法有 ...

  3. 代码洁癖系列(三):整洁的类和函数

    前面我们讨论了什么样的命名更能够让你赏心悦目,今天来讨论一下面向对象编程过程中最重要的环节,编写类和函数.我们仍然用Java来演示,什么样的类和函数才算是整洁的. 首先讨论函数,函数定义好了,类也就容 ...

  4. 代码洁癖系列(六):处理错误

    程序运行过程中,有些错误是不可避免的,而如何使程序在出现错误时代码仍然正常工作就成了程序员的日常工作之一.那么处理错误和代码整洁有什么关系呢? 前面我们提到过,try-catch代码块会破坏代码的结构 ...

  5. 代码洁癖系列(七):单元测试的地位

    在许多程序员眼中,单元测试似乎是可有可无的,觉得这应该是测试人员的工作.实际上,测试代码和生成代码同样重要.我们不但需要测试代码,而且需要的是整洁的测试代码. 测试为什么要整洁 我们对待测试代码需要像 ...

  6. 代码洁癖系列(四):可忽略的注

    刚开始学编程的时候,老师就告诉我们,注释很重要,但是一直到现在,也没有人真正告诉过我要怎么写注释.还有很多人甚至干脆不写注释.所以今天想聊一下到底如何写注释. 提到注释就让我想起一个段子:两个程序员去 ...

  7. 代码洁癖系列(四):可忽略的注释

    刚开始学编程的时候,老师就告诉我们,注释很重要,但是一直到现在,也没有人真正告诉过我要怎么写注释.还有很多人甚至干脆不写注释.所以今天想聊一下到底如何写注释. 提到注释就让我想起一个段子:两个程序员去 ...

  8. 代码洁癖系列(二):命名的艺术

    不知道大家还记不记得<家有儿女>里有这么一段经典台词:"我叫夏雪","我叫夏雨","我叫夏冰雹". 刘星自己给自己起的名字承包了 ...

  9. 四种代码洁癖类型,程序员看了直呼内行

    很多程序员在写代码的时候 都有自己的独特的习惯 比较典型的就是"代码洁癖" 他二哥收集了一些代码洁癖症状 分了四个类型 来看看有没有你对应的吧 看到大家都如此极致的追求, 他二哥实 ...

最新文章

  1. mysql keepalived_mysql高可用+keepalived
  2. JavaScript实现按位运算符乘以无符号数multiplyUnsigned算法(附完整源码)
  3. css 大图保持宽高比压缩,css 保持宽高比缩放
  4. phalcon无限重定向
  5. android 最新写法,详解Android 硬布局item的高级写法
  6. PHP apache2.2 mysql 的安装
  7. CentOS6.x安装mongodb3.4.x
  8. 为什么说堡垒机是企业IT运维的“安全终结者”?
  9. Java Web开发入门 - 第3章 Tomcat单元测试
  10. android删除未知字符,如何删除Android Studio中所有配置的未使用字符串资源?
  11. RFID无线射频技术是什么意思
  12. 详解ASR语音转写场景下的应用
  13. JAVA实现生成GIF动态图加文字(完整版无License带锯齿优化处理)
  14. CentOS加入Windows域
  15. web scraper——爬取知乎|微博用户数据模板【三】
  16. 自学IT后的第一篇博文
  17. 外媒预测2015年十大最热门工作
  18. Chrome开发者工具-阅读列表
  19. aul软件oracle,aul6 oracle数据库恢复工具
  20. SQL不允许保存更改,阻止保存要求重新创建表的更改

热门文章

  1. VB连接数据库时出现“ActiveX部件不能创建对象”
  2. linux:root密码错误的解决办法
  3. 有哪些好用的科研工具软件?
  4. android 圆盘按钮
  5. 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...
  6. WebQuest(网络探究)学习nbsp;模式
  7. 学习前端开发的基本目录结构
  8. excel打开很慢_Excel打开很慢,告诉你妙招搞定
  9. 广东工业大学2020年考研c语言题库,2021广东工业大学历年考研真题各专业汇总
  10. 【笔记】谈判:双赢的艺术