关于“智障代码”

前两天和一个老同学谈到了“智障代码”这个事情。我们称呼这个同学为M同学。

我不太理解M同学讲到的“智障代码”的含义,寥寥数语讲完之后我觉得意犹未尽,于是便又坐到电脑前写下这个文章。

在我键盘下产生的“智障代码”大概可以分为三类。

第一类是初入编程时候写的代码。我接触的第一门语言是VC++,是微软搞出来的语言,在上个世纪九十年代十分流行(但是据说现在很多专科院校仍然讲VC++作为计算机的必修课),在高三毕业的暑假我找到一本和编程有关的数据,书名我忘记了,大抵是“VC++编程入门”这一类的书籍。VC++十分利于初学者入门,就是把开发工具右侧的按钮、面板等图标拖到项目中,然后定义一下各个按钮的操作就能完成一个图形化的程序。当时我用了大概两个天编写了一个具有加减乘除功能的计算器程序。后来到了大学之后我开始使用Java语言作为编程,生产出来了不少“智障代码”,其中占比最多的应该是类似单词拼写错误中文引号和英文引号弄混这样错误,这个属于我写的第一类“智障代码”。

第二类是入门之后写的代码。在入门Java之后,我又学习了C语言和Python语言。相比Java来说,这两门语言束缚更少,更加的轻量级。我产生了很多的“智障代码”。这段时间写的代码有了我现在代码的雏形,这个阶段生产的的代码的智障主要体现在代码的极不规范,如代码缩进、代码结构、代码模块间耦合的问题。比如说,我使用Vim写的C代码缩进乱得一塌糊涂。(这并不是vim的错误,这是我的错误。)再比如说我的Python代码一个同功能的方法会在不同的项目中重复写很多遍。

第三类是现在的代码。现在的代码代表是我实习到正式工作中的代码。这段时间里我产生了大量的“智障代码”。主要原因在于工程进度一般都比较紧张,而且没有人注意业务代码的具体实现。于是我在代码中留下了很多的类似 #FIXME #TODO 这样的标记,以提醒自己在以后有时间的时候将不合理的代码重构掉。但是一有时间就懒癌发作不愿意去重构了,而且重构的过程中往往会出现奇怪的问题,于是就更加不愿意去重构了。

关于“智障代码”其实我个人是很反感的。尤其是对于开放在Github(一个开源的软件托管平台)上的项目,如果star数量比较多而且又能被我找到的“智障代码的”话我会跟怒不可遏。

也许我应该抽时间把我的“智障代码”重构掉。