编程强迫症

原创文章,转载请注明:转载自Keegan小钢
微信订阅号:keeganlee_me
写于2012-09-27


在编程的过程中,我总会显现出各种各样的强迫症,比如,我在编写Android的布局文件时,总喜欢按照下面这样的顺序排列各属性:

<TextView android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_margin="8dp"
    android:padding="8dp"
    android:text="@string/title"
    android:textSize="16sp"
    android:textColor="@color/title_color"
    android:background="@drawable/top_bg" />

第一行设置 id,接着就是 layout_width 和 layout_height,接着是相对位置的各属性,接着设置 margin 和 padding,接着设置 text 的几个属性,最后 background,而且最后喜欢用“ />”的方式,而不是成对的,而且前面要留个空格区分开。这样子我会觉得清晰明了而且简洁。当看到不符合这种方式的代码时,我就会产生一种抗拒感,然后在有时间的情况下我总会把它改成这样子,就连那个空格也不放过。

而在编写 JAVA 代码时,包名、类名、方法名、变量名,我也总要给它们取到最能表达其功能含义的命名才满足。有时候,就为一个名字,都会琢磨很久。代码要缩进得整整齐齐,没用的变量或代码就要删除,没用的空格回车也要删除,出现warning的地方能改的情况就要把它改掉,还有第一个大括号要跟在代码后面且留一空格,等号两边留空格,if 与条件语句之间留空格,等等等等。

除了这些编码细节上的强迫症之外,对于那些我感觉耦合性过强的,或破坏了扩展性的代码,我也总想把它们改成我想要的结果。我还讨厌MVC没有分离的设计,也不喜欢过于复杂的代码,也不怎么喜欢写注释。我的观念是:好的程序,代码本身就是最清晰明了的注释。所以我总是力求将我的程序写得简单、清晰、明了,让别人一看就懂。

不止在编写代码方面,甚至在产品设计方面我也有各方面的强迫症。讨厌复杂的功能和页面设计,不喜欢多余的元素。不过,哪些功能或元素是多余的,哪些是必需的,这就见仁见智了,每个人的看法会有不同。

各种各样的强迫症,好像说明了我像是一个追求完美的完美主义者。只是,我并不认为自己是个完美主义者。我也能接受产品早期版本的缺陷存在,只要后面产品能够做到越来越好那就行了。我并不赞成要将产品做到多么优秀多么完美之后才推向市场,相对地,我更赞同于以最快速度将最简单的初期产品放出去,就算有很多bug,甚至有比较严重的bug,而且,页面可能也还很丑,但没关系,先让用户知道产品的存在,再收集反馈,然后进行改善,快速推出下一版本。

我不是一个完美主义者,但我却是个极简主义者。其实,上面各种各样的强迫症表现,都是追求极简的表现。代码的整洁、清晰、条理、简单、明了,这就是我所追求的极简。而产品呢,只有一个主题,每个功能,每个页面,每个元素,都只为这一个主题服务,如果不是为了突出主题的,那就扔掉。有些功能表面上看上去很有必要,但有时候,这些功能不是吸引用户关注于该关注的那个主题,反而抢走了用户的关注点,这样的功能就必须得割除,还要尽量割得彻底。我一直很喜欢乔布斯设计ipod shuffle时候的决定:把屏幕去掉。连屏幕都没了,多么彻底啊,才有了更小巧简便的ipod,更能让用户专注于听音乐。


扫描以下二维码即可关注订阅号。