最强(划掉,最差)程序员开发指南

2020-11-16 12:20:17 +08:00
 salaryfly

如何成为团队中不可或缺的程序员? 如何让项目代码只有你能看懂? 如何将用代码摧毁一个项目、使其最终无法维护?

我们总结了以下经验:

  1. 为每个方法(有些语法中成为函数)都编写大量的注释,其中要包括背景介绍、设计思想、参数说明、使用案例和注意事项等等。

  2. 不要同时修改函数内容和注释文档。随着时间推移,函数的运行逻辑和文档描述的就不太一致,这看上去会很酷,因为除了看代码,没有人真正知道它的运行逻辑,既然这样,接下来就是让别人无法看懂代码。

  3. 在某些无关紧要的函数注释上加上这样一句话:“不要修改这段历史遗留代码,它很重要。”

  4. 如果你使用强类型语言(如 Java 等),将所有的参数类型去掉,用字典(如 Map )来接受参数和返回值。配合上不那么一致的注释文档,这样在几次版本更新之后,没有调用方能确定这个方法的入参到底是什么。

  5. 将所有的重复代码抽象出来以保证代码复用,并且没有程序员会批评你消灭了重复代码。例如两块代码都乘了数字 2,那么抽象一个 mul2 的新方法以复用。

  6. 创建大量的函数,将函数分层,将相关功能的函数分散在不同的代码文件中。你要相信,在跳转 50 次之后,很难有人还能看懂这段代码的真正执行逻辑。

  7. 变量和方法命名不要和具体功能相关,尝试用动物或者数字来随机命名。

  8. 使用函数式编程思想,将所有的 for 循环替换成递归,首先这会让你看上去很酷,如果再配合上无关的变量和函数名称,基本上任何人都要停下来思考一段时间才能看到递归的逻辑。

  9. 尽可能用一行代码解决所有的问题。

  10. 将所有的 If-Else 替换成三元运算符,特别当 If-Else 嵌套的数量更多时,没有人能很快看明白三元运算符的真正逻辑。

  11. 过度设计表结构和类,你可以声称这是为了今后的扩展性。同时编写一些永远不会用到的代码。

  12. 声明一些冗余的相关变量,例如变量 isOk 和 isNotOk 来判断同一个状态,记住不要同时更新他们的值,甚至在前一段用 isOk 表示 OK,后面一段代码用 isNotOk 来表示 OK 。这一定会让别人非常困惑。

  13. 在 getter,setter 中加入额外逻辑,例如在 getter A 时,将 B 的值加 1 。

  14. 使用大量的位操作,你可以告诉别人这样的执行效率更高。

  15. 复杂化判断表达式,If(!!a==!!true)和 If(a)是一样的意思,但是前者会复杂很多,你可以声称在某些弱类型语言中,两次取反可以转换类型。

  16. 不停的重构代码,向上述的方向前进。

你可以用这些技巧来摧毁一个代码库,也可以用这些技巧来保卫一个代码库。

PS. 欢迎关注我的公众号: Salaryfly

3714 次点击
所在节点    程序员
22 条回复
salaryfly
2020-11-16 12:21:55 +08:00
各位有补充的吗?
GopherDaily
2020-11-16 12:26:24 +08:00
只添加功能,just this
uselessVisitor
2020-11-16 13:40:58 +08:00
真狠啊
yeqizhang
2020-11-16 13:46:36 +08:00
学废了
baabaasheep
2020-11-16 14:01:30 +08:00
你是魔鬼吗
nthhdy
2020-11-16 14:13:49 +08:00
搜一下 "refuctoring"
huruwo
2020-11-16 14:16:05 +08:00
直接写汇编算了 这玩意没几个人能接手
wssy921
2020-11-16 14:16:09 +08:00
你是魔鬼吗
acmore
2020-11-16 14:21:42 +08:00
17. 根据心情和单双号来确定变量的命名风格,通过风格迥异的变量命名来彰显自己不随波逐流的高尚品格;
IsaacYoung
2020-11-16 14:32:33 +08:00
18. 不要在代码中注释接口文档链接
xuanbg
2020-11-16 14:33:32 +08:00
使用反射来执行方法,让 IDE 无法自动跳转到真正的执行逻辑。
胡乱起一些包名,并把类文件随机放进某个包里面。
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
salaryfly
2020-11-16 15:27:12 +08:00
@xuanbg 很棒的想法!
salaryfly
2020-11-16 15:27:44 +08:00
@Kilerd 感觉差不多哦
salaryfly
2020-11-16 15:28:25 +08:00
@IsaacYoung 可以考虑注释过期的文档链接
HenryWang0723
2020-11-16 15:35:34 +08:00
绝了...绝了...(鼓掌中)
salaryfly
2020-11-16 15:37:30 +08:00
@HenryWang0723 来 salaryfly,找到组织
IsaacYoung
2020-11-16 16:06:27 +08:00
@salaryfly 你这个更狠😂
leonardyang
2020-11-16 16:16:40 +08:00
最可怕的是你的同事们、团队成员们不需要看这个也能写出这样的代码
salaryfly
2020-11-16 16:25:35 +08:00
@leonardyang 教你一招:
第一步:搜索微信公众号: Salaryfly
第二步:找到这篇文章
第三步:分享到同事微信群

然后你会发现每个人都觉得这样的代码是别人写的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/725728

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX