如何成为团队中不可或缺的程序员? 如何让项目代码只有你能看懂? 如何将用代码摧毁一个项目、使其最终无法维护?
我们总结了以下经验:
为每个方法(有些语法中成为函数)都编写大量的注释,其中要包括背景介绍、设计思想、参数说明、使用案例和注意事项等等。
不要同时修改函数内容和注释文档。随着时间推移,函数的运行逻辑和文档描述的就不太一致,这看上去会很酷,因为除了看代码,没有人真正知道它的运行逻辑,既然这样,接下来就是让别人无法看懂代码。
在某些无关紧要的函数注释上加上这样一句话:“不要修改这段历史遗留代码,它很重要。”
如果你使用强类型语言(如 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
1
salaryfly OP 各位有补充的吗?
|
2
GopherDaily 2020-11-16 12:26:24 +08:00
只添加功能,just this
|
3
uselessVisitor 2020-11-16 13:40:58 +08:00
真狠啊
|
4
yeqizhang 2020-11-16 13:46:36 +08:00 via Android
学废了
|
5
baabaasheep 2020-11-16 14:01:30 +08:00
你是魔鬼吗
|
6
nthhdy 2020-11-16 14:13:49 +08:00
搜一下 "refuctoring"
|
7
huruwo 2020-11-16 14:16:05 +08:00 1
直接写汇编算了 这玩意没几个人能接手
|
8
wssy921 2020-11-16 14:16:09 +08:00
你是魔鬼吗
|
9
acmore 2020-11-16 14:21:42 +08:00 1
17. 根据心情和单双号来确定变量的命名风格,通过风格迥异的变量命名来彰显自己不随波逐流的高尚品格;
|
10
IsaacYoung 2020-11-16 14:32:33 +08:00 1
18. 不要在代码中注释接口文档链接
|
11
xuanbg 2020-11-16 14:33:32 +08:00 2
使用反射来执行方法,让 IDE 无法自动跳转到真正的执行逻辑。
胡乱起一些包名,并把类文件随机放进某个包里面。 |
12
Kilerd 2020-11-16 14:53:18 +08:00
太菜了,网络上已经有完善的了 [How To Write Unmaintainable Code]( https://github.com/Droogans/unmaintainable-code)
中文版 https://coolshell.cn/articles/4758.html |
15
salaryfly OP @IsaacYoung 可以考虑注释过期的文档链接
|
16
HenryWang0723 2020-11-16 15:35:34 +08:00
绝了...绝了...(鼓掌中)
|
17
salaryfly OP @HenryWang0723 来 salaryfly,找到组织
|
18
IsaacYoung 2020-11-16 16:06:27 +08:00
@salaryfly 你这个更狠😂
|
19
leonardyang 2020-11-16 16:16:40 +08:00
最可怕的是你的同事们、团队成员们不需要看这个也能写出这样的代码
|
20
salaryfly OP |
21
killva4624 2020-11-17 14:40:43 +08:00
不要给函数传入结构体,而是传入所有变量(尤其是超过三个以上变量的时候),这样会让函数更具有可读性。
|
22
salaryfly OP @killva4624 通过 map 传,隐藏类型
|