V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nb85144
V2EX  ›  程序员

逻辑清晰的代码能做成一坨大便的样子吗

  •  
  •   nb85144 · 13 小时 35 分钟前 · 5152 次点击
    比如写了一段干净的代码,但不想让别人轻易读懂的时候,有什么工具能把它做成一坨的样子吗
    之前我会手动替换变量名,效果有限
    58 条回复    2025-03-18 22:24:10 +08:00
    HTML001
        1
    HTML001  
       13 小时 29 分钟前
    直接代码混淆,让你自己都看不懂
    tigerstudent
        2
    tigerstudent  
       13 小时 26 分钟前
    用 ai 试试
    murmur
        3
    murmur  
       13 小时 23 分钟前   ❤️ 2
    没必要,现在都有版本管理,想搞你的时候不是会留下证据,除了新项目第一个月,你自己会造屎山的,不用故意,正常开发就行
    flamiNNgo
        4
    flamiNNgo  
       13 小时 19 分钟前   ❤️ 2
    有时候你觉得挺干净的代码实际上别人读起来就是一坨……
    文档、注释更重要
    最简单的方案,代码版本 A->B ,但是注释不变动
    wu67
        5
    wu67  
       13 小时 17 分钟前
    没必要, 只要你不写注释, 不主动去优化逻辑, 慢慢的它就会自成屎山.
    LieEar
        6
    LieEar  
       13 小时 6 分钟前
    代码混淆就行了
    librasolo
        7
    librasolo  
       13 小时 2 分钟前
    写假注释
    snowtreetree
        8
    snowtreetree  
       13 小时 1 分钟前   ❤️ 9
    知乎上看到一句话,「不用防御性编程,我正常写就行」。
    xiangbohua
        9
    xiangbohua  
       13 小时 0 分钟前   ❤️ 1
    别太自信,有可能过几天自己的看不懂,更别提别人😄
    novaline
        10
    novaline  
       12 小时 54 分钟前
    一个文件从头写到尾,绝不回头
    sky3hao9
        11
    sky3hao9  
       12 小时 44 分钟前
    只要设计巧妙, 不用主动防御编程, 简单的问题复杂化, 复杂的问题无序化, 要囊括各种奇技淫巧, 高端特性... 你应该看过汤姆设计的捕鼠器吧 ? 你看过就明白了
    pkoukk
        12
    pkoukk  
       12 小时 35 分钟前   ❤️ 2
    1.变量名不要超过三个字母
    2.变量声明与使用离得越远越好
    3.不要更新函数名和注释
    4.弃用的函数不要删除,不要做标记注释
    5.不要抽象复用,同一段代码复制粘贴一百遍
    shen13176101
        13
    shen13176101  
       12 小时 30 分钟前
    多大的仇多大的怨
    cyrivlclth
        14
    cyrivlclth  
       12 小时 29 分钟前
    嵌套一层又一层,有的嵌套 3 层,有的嵌套四层,同样结构的 DTO 不停转
    clemente
        15
    clemente  
       12 小时 29 分钟前
    没用 现在有 ai 做这些脏活了
    bojackhorseman
        16
    bojackhorseman  
       12 小时 28 分钟前
    sugars
        17
    sugars  
       12 小时 27 分钟前
    @pkoukk 看完血压上来了哈哈
    huihushijie1996
        18
    huihushijie1996  
       12 小时 27 分钟前
    要开除的时候直接整个部门干掉 不要做这些无意义的
    CouleurVVEX
        19
    CouleurVVEX  
       12 小时 12 分钟前
    @bojackhorseman 这简直是天才
    hwdq0012
        20
    hwdq0012  
       12 小时 9 分钟前
    没事就往线程队列扔,一逆一个不吱声
    CEBBCAT
        21
    CEBBCAT  
       12 小时 2 分钟前
    @Livid 似乎不是很符合 V2EX 的价值观
    jobscolin
        22
    jobscolin  
       11 小时 41 分钟前
    只要不写注释,迭代两个版本,你自己都觉得是屎山了
    qwertyzzz
        23
    qwertyzzz  
       11 小时 37 分钟前   ❤️ 1
    @CEBBCAT 价值观是啥。
    InkStone
        24
    InkStone  
       11 小时 35 分钟前
    让 AI 写。今天 Cursor 刚给我改了一个一千五百行代码的屎山出来。我感觉我自己写的话应该不会超过五百行……
    lyer5
        25
    lyer5  
       11 小时 33 分钟前
    现在混淆代码靠 AI 解释也能很快理解了吧
    zmcity
        26
    zmcity  
       11 小时 19 分钟前
    多用点高级编程技巧,对于不懂的人,它就是一坨
    dna1982
        27
    dna1982  
       11 小时 16 分钟前
    把所有变量都写成全局的,谁看谁骂街。
    olaloong
        28
    olaloong  
       11 小时 13 分钟前
    没啥意义,太长的混乱的代码直接让 AI 先看了,通义灵码插件写代码不行读代码还是很厉害的,点一下就像也很方便
    qq78660651
        29
    qq78660651  
       11 小时 9 分钟前
    没有用的,你再混淆,现在的 AI 都看懂,你 jsvmp 代码丢进去,AI 都能给你分析出每个变量什么作用;每个功能块在干什么。
    Esec
        30
    Esec  
       11 小时 2 分钟前 via Android
    偶尔主动偷偷加班,脑子不清晰的时候能写出自己也看不懂,但是能用的垃圾代码
    sleepybear1113
        31
    sleepybear1113  
       11 小时 1 分钟前   ❤️ 1
    没必要特殊混淆,不然怕过不了 code review 。

    正常写,然后变量名故意用错拼/乱拼,换别的关系不大的名字,比如物品价格,类似 item_price ,改成 goods_amuont ,主打文不对题。然后注释写物品量,再次主打文不对题。

    如果是能用推断型的定义就用,比如 Java 的 var a = xxx.getItem(),主打不知道 var 了什么东西。然后变量和用的地方远离,Steam 和非 Steam 混用,多用数组来回倒腾数据,比如起名 needDeleteList 里面放 needAddItems 。函数入参越多越好,整上一坨方法的重写,函数套深一点,函数名也写得文不对题。

    上面的写法过 code review 应该问题不大。再混淆下去那不一定过得了。
    particlec
        32
    particlec  
       10 小时 58 分钟前
    设计巧妙!!! 越巧妙后期越一坨,让 ai 重写,重点要 巧妙深化
    liuidetmks
        33
    liuidetmks  
       10 小时 56 分钟前
    别把代码当一回事啦,
    基本都重写,反正都是边角料功能
    ywlvs
        34
    ywlvs  
       10 小时 51 分钟前
    学到了,还有防御性编程
    xuanbg
        35
    xuanbg  
       10 小时 37 分钟前
    笑死人了,你自认逻辑清晰没用,最好找个不熟悉相关业务逻辑的人来看一下,看他能不能读懂就完了。

    反正我自己写的一段业务相对复杂的代码,写的时候单元测试一跑一个异常退出,好几种特殊情况没有进预期的分支。。。好不容易跑通了,隔了两天自己就看不懂了。
    cookii
        36
    cookii  
       9 小时 2 分钟前
    写长没用,要写散,用事件分发逻辑,把业务逻辑写散,慢慢就没人懂了。
    Hopetree
        37
    Hopetree  
       8 小时 57 分钟前
    一个函数上千行,或者一个函数两三行,不停的函数调用...想想就可怕
    YVAN7123
        38
    YVAN7123  
       8 小时 41 分钟前
    去学一下设计模式, 学两天你想着都用在你代码上, 一段代码给它用个五六个设计模式
    main1234
        39
    main1234  
       8 小时 37 分钟前   ❤️ 1
    要求项目重构
    1.拆成 V2 版本,V2 重构到一半想个理由无法推进,项目同时保留 V1 V2
    2.拆成 V3 版本,V3 重构到一半想个理由无法推进,项目同时保留 V1 V2 V3
    cocong
        40
    cocong  
       8 小时 25 分钟前
    屎山是熵增定律,只要你不刻意优化代码,慢慢都会变成屎山,无非快慢而已。另外不要觉得对别人屎山是个障碍,只要输入输出明确,分分钟把屎山重构,所以没有必要。
    lyxxxh2
        41
    lyxxxh2  
       8 小时 21 分钟前
    我所遇到最难看懂的:
    加个几十个没用的垃圾变量,test_list,testList ...
    让他删不敢删,用又不知道用那个。
    新增只能继续拉屎加变量。
    修改..
    homewORK
        42
    homewORK  
       7 小时 36 分钟前
    总觉得只要代码函数够长
    函数名字乱起
    注释是错的

    这代码就没办法维护了
    lesismal
        43
    lesismal  
       7 小时 21 分钟前
    引入多点的设计模式,只要能沾边的就弄成设计模式,然后就一坨坨的了。
    如果你水平高、能把设计模式用得如鱼得水、那么就可以轻松搞出很多没必要甚至不合理的设计模式的垃圾代码,就更难理解,至少阅读代码层层嵌套就增加了理解障碍。

    好处是可以用来作为自己代码的理由,别人没法拿这个当作你恶意代码的证据;
    坏处是别人可能拿这种代码当 sb 、以能力为由干你。。。

    我自己至今没学会设计模式,所以看到设计模式重的代码直接脑袋宕机变 sb ,但一直钦佩能把设计模式搞得精通的大神们
    chendl111
        44
    chendl111  
       7 小时 4 分钟前
    一个函数几百上千行,但是没有注释;
    只要不屑注释,多好的代码都会变成屎山
    maladaxia
        45
    maladaxia  
       7 小时 2 分钟前
    1. 把原来抽象清楚的函数删掉, 把代码复制粘贴到各个地方, 这样新增业务需求的时候改起来更快.
    2. 变量和函数命名尽量用缩写, 越短越好
    3. 嵌套一定要深, 只有嵌套深才能显示出水平
    4. 尽量使用全局变量, 全局变量用的时候更方便
    maladaxia
        46
    maladaxia  
       7 小时 0 分钟前
    @xiangbohua 自己看不懂更好啊
    锁匠如果造一把自己都不能打开的锁, 难道不是更安全吗
    masterclock
        47
    masterclock  
       6 小时 51 分钟前
    几年前遇到的前端代码,200 行不到点,非常复杂,看不懂,问清楚功能后重构成 3 行,纯 3 行,没有引入内置以外的其他方法
    popvlovs
        48
    popvlovs  
       6 小时 14 分钟前
    问题是这一坨即使别人看不懂,不还是要你来维护,过两天自己都看不懂了,维护成本不还是得自己承担
    orange323787
        49
    orange323787  
       6 小时 4 分钟前
    同事遇到过只写注释没写代码的🤣
    wqhui
        50
    wqhui  
       5 小时 40 分钟前
    加班写出来的就是了,已经略疲惫了+只想着赶快糊弄完下班
    NoOneNoBody
        51
    NoOneNoBody  
       5 小时 33 分钟前   ❤️ 1
    @qwertyzzz #23
    代码是自己的好,老婆是别人的好
    ODESZA
        52
    ODESZA  
       5 小时 32 分钟前
    完全可以,比如变量名用英文+拼音组合,然后再缩写,保证自己都看不懂,比如我今天遇到的 用户积分、用户名,直接缩写成 Ujf 、Umc ,真他娘的命名鬼才
    TimPeake
        53
    TimPeake  
       5 小时 14 分钟前
    懂 自保是吧
    z919126592
        54
    z919126592  
       4 小时 49 分钟前
    用 claude 或者直接用 cursor 混淆。上周刚刚防御性编程,把十几个 lua 脚本从一百行混淆到一千行。用 claude 很好使,直接告诉他要混淆成屎山就可以了
    Justin13
        55
    Justin13  
       4 小时 21 分钟前 via Android
    有办法同时做到逻辑清晰和难读懂
    那就是函数式编程
    iorilu
        56
    iorilu  
       2 小时 44 分钟前
    都 ai 时代, 谁有空看你代码

    直接丢给 ai 改或解释总结就行
    shulandmimi
        57
    shulandmimi  
       2 小时 29 分钟前
    命名:函数、类、字段 和 变量 全部用 a 、b 、c 、d 、e ...,需求写完过两天遗忘了你自己都不认识
    akira
        58
    akira  
       28 分钟前
    多加几个需求进去,多迭代几个版本,迟早变 si 山的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:53 · PVG 22:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.