最强(划掉,最差)程序员开发指南 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
salaryfly
V2EX    程序员

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

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

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

    我们总结了以下经验:

    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
    zm8m93Q1e5otOC69
        3
    zm8m93Q1e5otOC69  
       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     Solana     783 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 20:24 PVG 04:24 LAX 12:24 JFK 15:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86