`

代码洁癖症的表现

阅读更多

有下列情形之一的,你患上了代码洁癖症。症状程度可轻可重,轻者帮助写出优雅整洁的代码,重者走火入魔,万劫不复。

  1. 多余的空行、分号,没有使用的变量,见一个删一个。
  2. tab或者空格没有对齐的必须纠正过来,除了缩进用,不允许看到代码内连续两个空格。
  3. 看到一个类某个方法没有注释,不由自主地加上,不管有没有意义。
  4. 错误的拼写,无论是在命名还是注释必须纠正过来;不一致的大小写,必须要纠正过来;标点符号的遗漏,必须补上。
  5. 看到if(a==0)这样的代码必须改成if(0==a)这样的形式。
  6. 所有IDE对代码的告警必须消除,无论采取的方式是否有实际意义。
  7. 看到赤裸的数字,必须定义成常量,即便数字表意很直观,还是只能接受常量数字。
  8. 见不得非静态的公有变量,必须建立get/set方法。
  9. 不断地按代码格式整理的快捷键,在Eclipse就是不断地CTRL+Shift+F、CTRL+Shift+O,甚至不住地CTRL+S。
  10. 一旦看到超过连续3个的if-else判断分支,就要优化;类似的方法调用代码,如果连续出现,就要优化;超过若干行的方法,必须重构。
  11. 最本质的表现,喜欢长时间阅读自己的代码,心中一边啧啧赞赏不已,一边自我陶醉。

文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》

47
10
分享到:
评论
109 楼 attcnbc1949 2014-02-07  
妥妥的一条不落,全中.有时候自己都嫌麻烦,可是就是看不惯这些代码,必须要一个一个改完了才心里踏实.
108 楼 runfriends 2013-03-01  
有些公司在招聘简章上面要求:有轻微的代码洁癖。

一直感觉这一句出现在招聘简章里面有点雷
107 楼 zui4yi1 2013-03-01  
好的编码习惯而已,有啥好喷的?
106 楼 boonya 2013-03-01  
果断中枪。
105 楼 ujjboy 2013-03-01  
哎呀我去,全中!!
104 楼 spyker 2013-02-28  
你不会用format么?
103 楼 duan1823a 2013-02-28  
基本全中啊!!!!
102 楼 ٩(•̮̮̃•̃)۶ 2013-02-28  
除了5,5表现在用("".equals()),全中
最本质的表现,喜欢长时间阅读自己的代码,心中一边啧啧赞赏不已,一边自我陶醉。
我还增加了一个换使用漂亮的等宽字体。。。。
101 楼 zdw890412 2013-02-28  
81L,是只写几行代码的二货,所以不需要代码整洁。
100 楼 wpf523 2013-02-27  
我去啊,5没中,9前半部分没中。其余全中。我要反省!!!
99 楼 huangxingfu_0221 2013-02-27  
楼主太了解我了,谢谢哈
98 楼 周星星点灯 2013-02-27  
3
5
11
没中
97 楼 b_l_east 2013-02-27  
我中了  
96 楼 white_crucifix 2013-02-27  
神贴,还是喜欢最后一条,很可爱
95 楼 youarestupid 2013-02-27  
youarestupid 写道
youarestupid 写道
墨日 写道
kidneyball 写道
evanzzy 写道
youarestupid 写道
MrLee23 写道
evanzzy 写道
ifox 写道
看到if(a==0)这样的代码必须改成if(0==a)这样的形式。
这个有神马不同么?


这是从C语言过来的程序员的习惯,就是为了防止写成赋值语句a=0。这是实际出过事儿的,这样写有道理


java真没有这么写的,N多人都说为了避免a=0,难道现在这么多牛逼的人只用记事本编写java代码吗?据我所知,外国大牛都用IDE编写java代码,看来中国大师N多啊。还有IDE如果写成if(a=0)直接编译报错,根本过不去,就别说运行了。所以,这个真不是洁癖,应该算是java的陋习。如果还一直拿C说事,那就当我废话。

多此一举,0==a的写法很难看,不推荐用。


在很久很久以前,C语言是用来控制火箭、飞船、导弹、核wu qi、核潜艇、卫星等战略武器的基本语言,一丁点的差错,都会带来灾难性的后果,因为一个指针没控制好的小问题,让几亿美元打水漂的事情是事实出现过的。所以要以最严谨的态度、最严谨的写法,完全不考虑美观和成本去书写程序逻辑。这种等号前面放常量的做法,只不过是小儿科而已。想多了解些的同志,可以看一下《Effective C++》,《Effective Java》就不要看了,水平和前者差远了。


量子物理学家才是最好的厨师,大家都别看什么菜谱了,水平差太远了,都来研究基本粒子吧。

其实这个写法如果是long 类型或者int 类型没有意义,  但是如果是Long类型就有意义了, 如果a是null, 在 0==a 的时候会是你想要的false, 但是如果是a==0 就会报空指针错误,  类似的尤其在String.equals()也是这样   "msg".equals(a)绝对比 a.equals("msg")好的多


楼主讨论的好像是Java语法,你弄出个C语言控制导弹的例子来能说明什么?


如果对性能及逻辑严谨性要求很高的编码场景,就应该从写代码之初就把“不严谨”的写法剔除掉,比如美国“好奇号”火星探测车的程序,根本就不允许使用递归算法,防止出现死循环。
a=0的情况也一样,如果这样的写法有潜在“问题”,应该在编码阶段就被发现并剔除掉,根本不可能让它待到运行阶段,比如现在的nb中你写成a=0根本就编译通不过,我想在“好奇号”开发组,这样的写法也根本就通不过编译阶段,所以,这种忧虑a=0写法有潜在问题的同学是多虑了,而且是虑得阶段都不对,你们忧虑的是a=0的写法带到了运行环境下,实际上,在“控制核导弹”这种严谨的编程环境下,这种a=0的情况就不可能通过编译阶段,怎么可能跑到运行环境中去?


我的一贯立场是:
代码是给人看的,不是仅仅作为一种机器语言;
在越大越复杂的项目中,越应该注重“代码写法符合人类审视角度”;

所以,那种只写给机器辨认的编码习惯,虽然可能性能上有优势,但是当项目很大很复杂的时候,这种纯“机器辨认写法”将使整个项目代码变得很难维护和扩展,反而造成后期的开发变得漏洞百出。

所以,我提倡“代码首先是给人看的,然后才是给机器看的”。

94 楼 youarestupid 2013-02-27  
youarestupid 写道
墨日 写道
kidneyball 写道
evanzzy 写道
youarestupid 写道
MrLee23 写道
evanzzy 写道
ifox 写道
看到if(a==0)这样的代码必须改成if(0==a)这样的形式。
这个有神马不同么?


这是从C语言过来的程序员的习惯,就是为了防止写成赋值语句a=0。这是实际出过事儿的,这样写有道理


java真没有这么写的,N多人都说为了避免a=0,难道现在这么多牛逼的人只用记事本编写java代码吗?据我所知,外国大牛都用IDE编写java代码,看来中国大师N多啊。还有IDE如果写成if(a=0)直接编译报错,根本过不去,就别说运行了。所以,这个真不是洁癖,应该算是java的陋习。如果还一直拿C说事,那就当我废话。

多此一举,0==a的写法很难看,不推荐用。


在很久很久以前,C语言是用来控制火箭、飞船、导弹、核wu qi、核潜艇、卫星等战略武器的基本语言,一丁点的差错,都会带来灾难性的后果,因为一个指针没控制好的小问题,让几亿美元打水漂的事情是事实出现过的。所以要以最严谨的态度、最严谨的写法,完全不考虑美观和成本去书写程序逻辑。这种等号前面放常量的做法,只不过是小儿科而已。想多了解些的同志,可以看一下《Effective C++》,《Effective Java》就不要看了,水平和前者差远了。


量子物理学家才是最好的厨师,大家都别看什么菜谱了,水平差太远了,都来研究基本粒子吧。

其实这个写法如果是long 类型或者int 类型没有意义,  但是如果是Long类型就有意义了, 如果a是null, 在 0==a 的时候会是你想要的false, 但是如果是a==0 就会报空指针错误,  类似的尤其在String.equals()也是这样   "msg".equals(a)绝对比 a.equals("msg")好的多


楼主讨论的好像是Java语法,你弄出个C语言控制导弹的例子来能说明什么?


如果对性能及逻辑严谨性要求很高的编码场景,就应该从写代码之初就把“不严谨”的写法剔除掉,比如美国“好奇号”火星探测车的程序,根本就不允许使用递归算法,防止出现死循环。
a=0的情况也一样,如果这样的写法有潜在“问题”,应该在编码阶段就被发现并剔除掉,根本不可能让它待到运行阶段,比如现在的nb中你写成a=0根本就编译通不过,我想在“好奇号”开发组,这样的写法也根本就通不过编译阶段,所以,这种忧虑a=0写法有潜在问题的同学是多虑了,而且是虑得阶段都不对,你们忧虑的是a=0的写法带到了运行环境下,实际上,在“控制核导弹”这种演进的变成环境下,这种a=0的情况就不可能通过编译阶段,怎么可能跑到运行环境中去?
93 楼 youarestupid 2013-02-27  
墨日 写道
kidneyball 写道
evanzzy 写道
youarestupid 写道
MrLee23 写道
evanzzy 写道
ifox 写道
看到if(a==0)这样的代码必须改成if(0==a)这样的形式。
这个有神马不同么?


这是从C语言过来的程序员的习惯,就是为了防止写成赋值语句a=0。这是实际出过事儿的,这样写有道理


java真没有这么写的,N多人都说为了避免a=0,难道现在这么多牛逼的人只用记事本编写java代码吗?据我所知,外国大牛都用IDE编写java代码,看来中国大师N多啊。还有IDE如果写成if(a=0)直接编译报错,根本过不去,就别说运行了。所以,这个真不是洁癖,应该算是java的陋习。如果还一直拿C说事,那就当我废话。

多此一举,0==a的写法很难看,不推荐用。


在很久很久以前,C语言是用来控制火箭、飞船、导弹、核wu qi、核潜艇、卫星等战略武器的基本语言,一丁点的差错,都会带来灾难性的后果,因为一个指针没控制好的小问题,让几亿美元打水漂的事情是事实出现过的。所以要以最严谨的态度、最严谨的写法,完全不考虑美观和成本去书写程序逻辑。这种等号前面放常量的做法,只不过是小儿科而已。想多了解些的同志,可以看一下《Effective C++》,《Effective Java》就不要看了,水平和前者差远了。


量子物理学家才是最好的厨师,大家都别看什么菜谱了,水平差太远了,都来研究基本粒子吧。

其实这个写法如果是long 类型或者int 类型没有意义,  但是如果是Long类型就有意义了, 如果a是null, 在 0==a 的时候会是你想要的false, 但是如果是a==0 就会报空指针错误,  类似的尤其在String.equals()也是这样   "msg".equals(a)绝对比 a.equals("msg")好的多


楼主讨论的好像是Java语法,你弄出个C语言控制导弹的例子来能说明什么?
92 楼 墨日 2013-02-27  
kidneyball 写道
evanzzy 写道
youarestupid 写道
MrLee23 写道
evanzzy 写道
ifox 写道
看到if(a==0)这样的代码必须改成if(0==a)这样的形式。
这个有神马不同么?


这是从C语言过来的程序员的习惯,就是为了防止写成赋值语句a=0。这是实际出过事儿的,这样写有道理


java真没有这么写的,N多人都说为了避免a=0,难道现在这么多牛逼的人只用记事本编写java代码吗?据我所知,外国大牛都用IDE编写java代码,看来中国大师N多啊。还有IDE如果写成if(a=0)直接编译报错,根本过不去,就别说运行了。所以,这个真不是洁癖,应该算是java的陋习。如果还一直拿C说事,那就当我废话。

多此一举,0==a的写法很难看,不推荐用。


在很久很久以前,C语言是用来控制火箭、飞船、导弹、核wu qi、核潜艇、卫星等战略武器的基本语言,一丁点的差错,都会带来灾难性的后果,因为一个指针没控制好的小问题,让几亿美元打水漂的事情是事实出现过的。所以要以最严谨的态度、最严谨的写法,完全不考虑美观和成本去书写程序逻辑。这种等号前面放常量的做法,只不过是小儿科而已。想多了解些的同志,可以看一下《Effective C++》,《Effective Java》就不要看了,水平和前者差远了。


量子物理学家才是最好的厨师,大家都别看什么菜谱了,水平差太远了,都来研究基本粒子吧。



其实这个写法如果是long 类型或者int 类型没有意义,  但是如果是Long类型就有意义了, 如果a是null, 在 0==a 的时候会是你想要的false, 但是如果是a==0 就会报空指针错误,  类似的尤其在String.equals()也是这样   "msg".equals(a)绝对比 a.equals("msg")好的多
91 楼 aiyan3344 2013-02-27  
1.中
2.中
4.中
5.中
6.中
8.中
10.中
90 楼 斌-黄 2013-02-27  
我把 Emacs 配置成保存时自动清理行尾空格,到公司第一天就搞出了 conflict,害的这段配置一直注释放在那里。

相关推荐

    【代码洁癖症】第1回-简单工厂模式

    【代码洁癖症】第1回-简单工厂模式 序言 在一个宁静的午后,我有幸拜读了程杰大鸟的《大话设计模式》 觉得这是一本不可多得的好书 奈何里面都是C++代码写的示例,对于学Java的同学不是很友好 于是想将书中的核心提炼...

    无法理喻的文字洁癖

    这种对文字的坚守,表现出文人对作品的尊重和对自身创作原则的坚持。 其次,文字洁癖也体现在对作品内涵的诠释上。北宋时期的文人章卜为苏东坡的诗写注解,耗费多年心血完成了数十册注释。当有人指出其注解中遗漏了...

    Android代码-Componentization

    由于业务增长引起项目中代码量激增,以及历史遗留问题和结构混乱,作为一个有代码洁癖的程序员,很早就开始思考如何组织 App 架构的问题了。目前遇到的主要有以下几点问题: 代码量激增引起结构混乱 各个模块相互...

    男人有感情洁癖该办.doc

    【感情洁癖】是指在情感关系中,个体对伴侣的情感历史、交际圈子或者与异性的互动持有过度敏感和苛刻的标准,常常希望对方的感情经历尽可能简单或者无暇,甚至不容许提及前任。这种情况在现代社会中并不少见,无论...

    Android代码-Android-ConvenientBanner

    而这个库能让有代码洁癖的你欢喜,不需要对库源码进行修改你就可以使用任何你喜欢的网络图片库进行配合。 Demo 用模拟器运行的效果,鼠标拨动和模拟器太卡等原因,实际效果比效果图更炫哦~~ demo代码请看戳这里 ...

    vue语法自动转typescript(解放双手)

    公司目前前端项目大部分都是 vue,早期没有 ts这个说法,后来新项目才逐渐引入 ts,所以新项目用的是 vue-ts,而一般想抄的老代码都是没有引入 ts的,固然,这二者是可以兼容存在的,但对于有着轻微代码洁癖的我来说...

    封装 RecyclerViewAdapter ,可以不用写 ViewHolder, 支持添加 head 和 foot, 支持 head 和 foot 的点击事件

    RecyclerView 可以通过 getItemViewType() 去区分不同的布局, 很明显从这里下手是正确的选择, 但是每个 Adapter 都写大量相同的代码这样对于一个有着代码洁癖和强迫症的人 (其实指的就是我) 很明显是打心里抵触的。...

    通用的吊炸天广告栏,无限循环,各种翻页特效,少量代码就能实现你的需求

    通用的广告栏控件,让你轻松实现广告头效果。支持无限循环,可以设置自动翻页和时间(而且非常智能,手指触碰...而这个库能让有代码洁癖的你欢喜,不需要对库源码进行修改你就可以使用任何你喜欢的网络图片库进行配合。

    设计原则示例代码

    这些原则指导我们如何组织代码,使其遵循良好的结构和习惯。在这个“设计原则示例代码”压缩包中,我们可以期待找到与单一职责原则(SRP)、里氏替换原则(LSP)以及依赖注入原则(DI)相关的Java实现。下面将详细...

    RxBus-和EventBus完全一样

    因为rx完全可以替换掉eventbus所以导致了过多引入第三方jar包的问题,对于有代码洁癖和瘦身需求的同学们来说简直是一个噩耗; 如何在最大基础上修改我们已经存在的代码呢,那就是改造一个自己的rxbus,让他使用起来...

    洁癖_csdn

    【洁癖】这篇文章虽然标题和描述中并未直接提及IT知识,但从内容上看,可以关联到IT行业的某些方面,比如工作压力、生活与工作的平衡以及个人时间管理。在IT行业中,高强度的工作是常态,如文中主人公因为装修房子而...

    通过网页查看JS源码中汉字显示乱码的解决方法

    这种瑕疵对于有轻微强迫症+代码洁癖的人来说是不可容忍的 本来还以为是js文件没保存UTF-8格式,又把js文件重新保存了一遍 可惜,然并卵。。。 不过,最后还是被我找到原因了。 其实这个只是浏览器设置问题,下面以...

    WordPress 中冒号、endif、endwhile、endfor是什么?

    有代码洁癖的朋友可以使用这些语法,使代码更加整齐和易读。 2. 流程控制逻辑更清晰,代码更容易阅读。如果使用这些语法,代码将变得更易阅读和维护。 3. 一些从 ASP 等其他类 basic 语言家族转来的朋友,会更容易...

    基于HttpClient 4.3的可访问自签名HTTPS站点的新版工具类

    然而随着项目的升级和架构的调整,很多以前常用的类和方法都已被打上了@Deprecated注解,作为一个有代码洁癖的程序猿,我们也有必要升级一下工具类,让代码更加整洁。 另外在项目中正好需要访问https协议的接口,而...

    android循环滚动广告栏控件

    通用的广告栏控件,让你轻松实现广告头效果。支持无限循环,可以设置自动翻页和时间(而且非常智能,手指触碰...而这个库能让有代码洁癖的你欢喜,不需要对库源码进行修改你就可以使用任何你喜欢的网络图片库进行配合。

    android轮播

    通用的广告栏控件,让你轻松实现广告头效果。支持无限循环,可以设置自动翻页和时间(而且非常智能,手指触碰...而这个库能让有代码洁癖的你欢喜,不需要对库源码进行修改你就可以使用任何你喜欢的网络图片库进行配合。

    支持手机版的头像剪裁插件

    支持手机版的头像剪裁插件,纯H5和JS,使用copper插件。去除繁琐代码,保证是最简单的了。我有代码洁癖,并对所有外部引用都下载到本地了。

    pinyin4j-2.5.0.jar

    其实不影响项目的正常使用,但是对于有代码洁癖的人来说是不能忍的,看着难受,混淆文件proguard-rules.pro中也添加了 -ignorewarnings -dontwarn 但是没用,究其原因是因为jar包中有Android不能识别的类,后来自己...

    大学生常见心理问题的识别学习教案.pptx

    焦虑症表现为持续或突发的焦虑,可能伴有身体症状;强迫症则以强迫观念和行为为主,患者往往在强迫与反强迫之间挣扎;疑病症则表现为对健康状况过度担忧,尽管医学检查显示身体健康,患者仍然坚信自己患病。 以小刘...

    Android ViewPage广告轮播效果 源码

    Android-...而这个库能让有代码洁癖的你欢喜, 不需要对库源码进行修改你就可以使用任何你喜欢的网络图片库进行配合。 自定义你的Holder,实现更多复杂的界面,不一定是图片翻页,其他任何控件翻页亦可。

Global site tag (gtag.js) - Google Analytics