如何成为团队中不可或缺的程序员? 如何让项目代码只有你能看懂? 如何将用代码摧毁一个项目、使其最终无法维护?
我们总结了以下经验:
为每个方法(有些语法中成为函数)都编写大量的注释,其中要包括背景介绍、设计思想、参数说明、使用案例和注意事项等等。
不要同时修改函数内容和注释文档。随着时间推移,函数的运行逻辑和文档描述的就不太一致,这看上去会很酷,因为除了看代码,没有人真正知道它的运行逻辑,既然这样,接下来就是让别人无法看懂代码。
在某些无关紧要的函数注释上加上这样一句话:“不要修改这段历史遗留代码,它很重要。”
如果你使用强类型语言(如 Java 等),将所有的参数类型去掉,用字典(如 Map )来接受参数和返回值。配合上不那么一致的注释文档,这样在几次版本更新之后,没有调用方能确定这个方法的入参到底是什么。
将所有的重复代码抽象出来以保证代码复用,并且没有程序员会批评你消灭了重复代码。例如两块代码都乘了数字 2,那么抽象一个 mul2 的新方法以复用。
创建大量的函数,将函数分层,将相关功能的函数分散在不同的代码文件中。你要相信,在跳转 50 次之后,很难有人还能看懂这段代码的真正执行逻辑。
变量和方法命名不要和具体功能相关,尝试用动物或者数字来随机命名。
使用函数式编程思想,将所有的 for 循环替换成递归,首先这会让你看上去很酷,如果再配合上无关的变量和函数名称,基本上任何人都要停下来思考一段时间才能看到递归的逻辑。
尽可能用一行代码解决所有的问题。
将所有的 If-Else 替换成三元运算符,特别当 If-Else 嵌套的数量更多时,没有人能很快看明白三元运算符的真正逻辑。
过度设计表结构和类,你可以声称这是为了今后的扩展性。同时编写一些永远不会用到的代码。
声明一些冗余的相关变量,例如变量 isOk 和 isNotOk 来判断同一个状态,记住不要同时更新他们的值,甚至在前一段用 isOk 表示 OK,后面一段代码用 isNotOk 来表示 OK 。这一定会让别人非常困惑。
在 getter,setter 中加入额外逻辑,例如在 getter A 时,将 B 的值加 1 。
使用大量的位操作,你可以告诉别人这样的执行效率更高。
复杂化判断表达式,If(!!a==!!true)和 If(a)是一样的意思,但是前者会复杂很多,你可以声称在某些弱类型语言中,两次取反可以转换类型。
不停的重构代码,向上述的方向前进。
你可以用这些技巧来摧毁一个代码库,也可以用这些技巧来保卫一个代码库。
PS. 欢迎关注我的公众号: Salaryfly
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.