如何编写不可维护的代码
【翻译:How To Write Unmaintainable Code】
一般原理
为了刁难维护程序员,你必须明白他是如何思考的。他搞到了你的天才般的程序,他没有时间去读所有的代码,更别想理解它,他只希望快速找到他想修改的地方,修改你的代码还不会发生其他意想不到的副作用。
让他通过卫生纸筒子去看你的代码,让他一次只能看小小的一部分,你必须保证他在做这种工作时,永远不能得到一张全景图。你要千方百计地让他难以找到他在查找的东西。最最重要的是,你要千方百计地让他认识到,忽略(ignore)任何东西都是不安全的。
程序员们常常被哄骗着安心于规范。你要在每时每刻通过巧妙的违反规范,迫使他用放大镜去读你的每一行代码。
你可以从语言的每一个特性(feature)上获得灵感,产生不可维护的代码,当然只是恰当的滥用。
我会介绍一些技巧,告诉你如何编程。让你的后继者赞叹这些代码怎么这么难以维护,以至于花几年的时间都不能做最简单的修改。更进一步,如果你虔敬地遵循这些规则,你会确保你的饭碗,因为没有除你之外的任何一个人能够承受维护你的代码的炼狱。嗯,再说了,如果你虔敬地遵循这些规则,可能你自己也不能维护这些代码。
你不想做得过火了,你的代码不应该看上去毫无维护的希望,否则它们就可能陷入重写或者重构(refactoring)的危险之中。命名术
在你编写不可维护代码时,大量的技巧在于变量和方法命名的艺术中。编译器完全不理会这种事情,这就给了你一个巨大的自由创作空间,去迷惑维护程序员。
1. 《Baby的20001个名字》新用法买一本婴儿取名的书,你就永远不愁找不到变量名了。Fred就是一个好名字,有容易输入。如果你喜欢容易输入的变量名,试一试adsf或aoeu。
2. 单字符变量名如果你把变量取名为a,b,c,则不可能用简单的文本编辑器搜索它们。而且,没有人能够猜出它们代表什么。如果有人想打破从FØRTRAN语言以来,我们捍卫的使用i、j和k作为变量的传统习惯,即用ii,jj和kk取代它们,则告诉他们西班牙宗教裁判所是如何对付异教徒的。
3. 创造性错误拼写如果你不得不使用描述性的变量和方法名,misspell它们。通过误拼一些变量和方法名,而在其他地方有正确的拼写(例如SetPintleOpening ,SetPintalClosing),我们有效的阻击了使用grep(regex工具)或 IDE 搜索技术的企图。它有令人惊讶的功效。同时,我们还可以增加一些国际化的风格,比如在不同的场合(theatres/theaters)使用tory or tori的拼写方式。
4. 要抽象在变量和方法名中,大量的使用抽象词汇,如it, everything, data, handle, stuff, do, routine, perform和数字,比如routineX48, PerformDataFunction, DoIt, HandleStuff,还有do_args_method。
5. A.C.R.O.N.Y.M.S.acronyms是缩写。使用它们以保持代码的简洁。真正的程序员不定义缩写,他们非常天然的理解它们。本文地址:http://com.8s8s.com/it/it11485.htm