V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
salaryfly
V2EX  ›  程序员

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

  •  1
     
  •   salaryfly · 2020-11-16 12:20:17 +08:00 · 3895 次点击
    这是一个创建于 1468 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    我们总结了以下经验:

    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

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

    然后你会发现每个人都觉得这样的代码是别人写的。
    killva4624
        21
    killva4624  
       2020-11-17 14:40:43 +08:00
    不要给函数传入结构体,而是传入所有变量(尤其是超过三个以上变量的时候),这样会让函数更具有可读性。
    salaryfly
        22
    salaryfly  
    OP
       2020-11-17 14:47:29 +08:00
    @killva4624 通过 map 传,隐藏类型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2414 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:59 · PVG 23:59 · LAX 07:59 · JFK 10:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.