大牛是如何做到整套程序不写一个注释的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zachlhb
V2EX    程序员

大牛是如何做到整套程序不写一个注释的

  •  
  •   zachlhb
    zachlhb 2019-02-16 21:08:09 +08:00 via Android 11420 次点击
    这是一个创建于 2430 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近刚到一家公司,公司用的微擎+人人商城来做项目,本人头回接触这两个项目,看了 2 天代码,差点没吐了,这两系统开发者是如何做到整套系统没有一个注释的,而且还 n 多字母变量,没有分层概念,完全就是堆砌代码,看来我真是才疏学浅,完全理解不了这种代码。

    65 条回复    2019-03-13 17:17:25 +08:00
    zjsxwc
        1
    zjsxwc  
       2019-02-16 21:13:09 +08:00 via Android
    人肉混淆后的代码?
    qq292382270
        2
    qq292382270  
       2019-02-16 21:14:14 +08:00   8
    开发完成后批量删除注释即可...
    namesc
        3
    namesc  
       2019-02-16 21:23:24 +08:00   11
    小公司吧,没有代码审计,被前任开发挖坑了。

    这是一种防失业手段,把自己的代码混淆,确保了这个系统没了自己不行,也确保了继任不能复用,继任来了必须重新开发,无形中增加了就业。(记得是这么说的,以前看过一群人讨论过这个话题
    namesc
        4
    namesc  
       2019-02-16 21:25:55 +08:00   8
    你别说,有那么一瞬间我觉得他们说得挺有道理的,现在很多小公司都是过河拆桥,等你开发完了让你带一个实习生,实习生一上手就开始挤兑你逼走你,老板这么有手段自己没点手段不行。
    mamahaha
        5
    mamahaha  
       2019-02-16 21:26:04 +08:00
    故意的,留着注释等工资低的看明白了自己就下岗了,批处理一键删除注释。
    mgso
        6
    mgso  
       2019-02-16 21:27:03 +08:00 via iPhone
    我曾经在注释里把公司吐槽了一番
    mgso
        7
    mgso  
       2019-02-16 21:29:55 +08:00 via iPhone
    不过我是深恶痛绝代码不打注释的人,即便我各种吐槽公司,即将甩盘,但注释还是打得很详细,有的详细到每一行为什么这么写
    MinQ
        8
    MinQ  
       2019-02-16 21:43:00 +08:00 via Android   3
    @namesc 我觉得防失业的最高境界是代码中用了某些公式 /算法,就算注释放在那一般人要理解也要花比较长的时间。带实习生的时候先扔给他三五篇硕士论文,看完了我们再谈后面的东西。
    houlin
        9
    houlin  
       2019-02-16 22:06:14 +08:00 via Android
    微擎开源搭建加人人商城??你们公司技术参与开发了吗?
    houlin
        10
    houlin  
       2019-02-16 22:07:14 +08:00 via Android
    微擎因为二开的多,盗版的也多,微擎自己不做注释是为了防止破解
    Muninn
        11
    Muninn  
       2019-02-16 22:15:09 +08:00
    混淆过吧
    ywisax
        12
    ywisax  
       2019-02-16 22:24:24 +08:00
    这两个搭配养活了一大堆垃圾外包公司。。。别想着理解代码了,随便 copy+paste 能做完业务就行了
    namesc
        13
    namesc  
       2019-02-16 22:24:32 +08:00
    @MinQ 如果牛到这个程度就不用防失业了吧
    4DAX07B8Kle4Dm6T
        14
    4DAX07B8Kle4Dm6T  
       2019-02-16 22:27:44 +08:00
    微擎有文档的,算好的了,要是接手个没注释、没文档、代码还乱的那种项目,那酸爽
    zachlhb
        15
    zachlhb  
    OP
       2019-02-16 22:28:19 +08:00 via Android
    @houlin 拿这个二开
    zachlhb
        16
    zachlhb  
    OP
       2019-02-16 22:29:29 +08:00 via Android
    @wispx 头都要炸了
    houlin
        17
    houlin  
       2019-02-16 22:30:40 +08:00 via Android
    有相关二开文档
    namesc
        18
    namesc  
       2019-02-16 22:32:59 +08:00
    才发现楼主说的项目代码是第三方商业源码啊,那就不是防失业了,是防破解。
    hilbertz
        19
    hilbertz  
       2019-02-16 22:42:12 +08:00
    写了注释也没用,很多人头天写的,第二天就看不懂了
    humansjl
        20
    humansjl  
       2019-02-16 23:02:13 +08:00
    大概率人走茶凉前任对公司没有留念了。
    零概率真的没有注释。
    uqf0663
        21
    uqf0663  
       2019-02-16 23:05:25 +08:00
    你们买的是正版的还是直接网上下的盗版? 因为原版都是加密,网上那些盗版都是解密后的,自然没注释跟部分变量名看起来混乱了(因为加密过程中被压缩掉注释跟混淆变量名)
    niuoh
        22
    niuoh  
       2019-02-16 23:05:37 +08:00
    不写注释有啥难的 如喝水般自然 写注释对我来说才是反人类的
    niuoh
        23
    niuoh  
       2019-02-16 23:08:27 +08:00   1
    @niuoh 再补充一下 如果说我以后看不懂咋办?不存在的 写完之后就不会再看了
    joe1213
        24
    joe1213  
       2019-02-16 23:45:17 +08:00 via Android   1
    @namesc
    @mamahaha
    突然有个想法,注释故意写错误的意思应该更有效。比没注释好多了。
    比如生成订单的函数注释写成删除订单,删除订单的写成更新订单
    namesc
        25
    namesc  
       2019-02-17 00:29:57 +08:00
    @joe1213 得多闲才这样干啊,只是清除注释和混淆已经很难阅读了,不用这么折腾。

    不过这个套路在接口防御策略里倒是有人使用,识别出稳定的采集时,不返回错误,而是在返回内容里随机把一些真实数据替换为虚假数据,提高采集人的识别成本。
    mostkia
        26
    mostkia  
       2019-02-17 01:40:03 +08:00 via Android
    不写注释才爽好吗…只是后期看代码就蛋疼了,你让任何程序员不写注释都能做到的,后期维护就不知道了,至于你说的情况,我觉得可能是留了两份吧,开发用开发版的有注释,上线了就删除所有注释,提高阅读成本。一般搞前端的比较普遍。
    shm7
        27
    shm7  
       2019-02-17 01:48:40 +08:00 via iPhone
    首先说一下,一般项目做得好的,注释少很正常;程序写清楚了,就不要注释了。这几十年前就被写进书里面了吧。怎么每次都有人吗不写注释说事情。
    bbsfoo
        28
    bbsfoo  
       2019-02-17 02:20:43 +08:00
    @MinQ 那些只需要 CRUD 的项目需要什么算法和公式?
    mewpoi
        29
    mewpoi  
       2019-02-17 02:26:31 +08:00 via iPhone
    @namesc 什么都不服就服你…
    IsA26hN4DcQDS7Z9
        30
    IsA26hN4DcQDS7Z9  
       2019-02-17 02:43:01 +08:00
    还见过变量名随机生成,只有他自己有对照表的。
    luozic
        31
    luozic  
       2019-02-17 02:49:32 +08:00 via iPhone
    oxygen Idea code2UML,C#和 Java 代码注释写的烂的不如不写,但看代码的辅助工具都不用,你不是蛋疼么。
    并且如果是走微服务+了全链路监控的,代码垃圾也只能一小块,交互 API 还垃圾的话,看来公司里面天天干仗。
    aleviosa
        32
    aleviosa  
       2019-02-17 03:04:35 +08:00
    先问是不是系列……这样写代码还可以叫大牛的吗
    likai
        33
    likai  
       2019-02-17 06:30:37 +08:00 via Android
    很大可能是你们用的解密后的盗版源码
    MinQ
        34
    MinQ  
       2019-02-17 07:30:55 +08:00 via Android
    @bbsfoo CURD 的功力体现在优化上,在大数据量的时候 SQL 语句跑的比别人快就行了
    wspsxing
        35
    wspsxing  
       2019-02-17 07:44:27 +08:00 via Android
    代码即注释啊,注释跟不上也是坑
    xiaotuzi
        36
    xiaotuzi  
       2019-02-17 07:44:45 +08:00 via iPhone
    只要没有加密就可以二开,我有一套万能二开的方法,只要是新功能新需求,要记录什么的,新建一个表,相关表用副键关联,如 pid,之后就找到关键的地方修改,一半跟着 url 走就能找齐所有方法,只需要到需求关键处修改,无需每个方法做修改。
    loading
        37
    loading  
       2019-02-17 07:55:19 +08:00 via Android
    大牛和你:
    这几行这么简单,看不懂的都是垃圾也是不会改的,不加了。
    quinoa42
        38
    quinoa42  
       2019-02-17 09:52:18 +08:00 via Android
    说到这个,为啥大多数开源项目代码都没有注释?有时候想提个 pr 得把相关代码从头到尾看一遍,效率太慢了
    ymj123
        39
    ymj123  
       2019-02-17 09:56:48 +08:00 via Android
    不写注释还不简单。只是有的业务复杂了,后面看不太方便。
    mcfog
        40
    mcfog  
       2019-02-17 10:41:44 +08:00 via Android   2
    程序员最讨厌的 2 件事

    1、接手的代码没有注释
    2、写注释
    find456789
        41
    find456789  
       2019-02-17 10:46:23 +08:00
    我想起之前在知乎看到一个匿名折叠的评论,大概是说, 某 a 公司旗下,开源的某热门项目,但是故意删光了注释, 目的是为了让其他人难以消化代码
    babedoll
        42
    babedoll  
       2019-02-17 10:49:19 +08:00
    。。。你们没版本控制吗,我们用的 tfs,就算你后面吧注释删了,代码的历史记录也有注释啊。。
    msg7086
        43
    msg7086  
       2019-02-17 11:39:53 +08:00
    @babedoll 要是有这么正规的流程你觉得楼主还会来问吗……
    taaaang
        44
    taaaang  
       2019-02-17 11:48:18 +08:00
    其实源码没有注一方面可能是人家有这方面的考量。
    另外,我们公司编码 review 也不要求注释,甚至鼓励不写注释。但是,必须清晰,简洁,易读。程序即注释。
    Lision
        45
    Lision  
       2019-02-17 12:19:44 +08:00
    字母变量... 这莫非是用刷题的写法写业务?
    Moker
        46
    Moker  
       2019-02-17 13:27:21 +08:00
    以前公司也是要求不能写注释 但是有自己的一套规范 命名规则 强制写文档
    qoras
        47
    qoras  
       2019-02-17 13:28:45 +08:00
    因为注释写了也不受重视, 干脆不写或删掉, 还能保饭碗, 毕竟国内卸磨杀驴的事太多
    hxt
        48
    hxt  
       2019-02-17 13:42:10 +08:00
    微擎和人人商城都是商业项目,给你公司时的源码应该已经是混淆加密过了,后面进行二次开发要多乱有多乱。
    littleMaple
        49
    littleMaple  
       2019-02-17 14:00:33 +08:00 via iPhone   2
    可以看看《代码整洁之道》书中讲“注释”那一章,业界大牛的想法还是很值得参考的。

    摘录一小段: (仅搬运,不代表个人立场)
    > 注释并不像辛德勒的名单,它们并不“纯然的好”。实际上,注释最多也就是一种必须的恶。若编程语言足够有表达力,或者我们长于用这些语言来表达意图,就不那么需要注释也许根本不需要。
    > 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。注意,我用了“失败”一词。我是说真的。注释总是一种失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺.......
    everwanna
        50
    everwanna  
       2019-02-17 15:26:46 +08:00 via Android   3
    大多数代码是不应该写注释的,因为维护注释比维护代码还困难,有点长期项目经验的人都知道这一点。程序员应该努力让代码说话,let codetalk. 努力用每个变量名,函数名表达真正的意图,如果是一个不明显的计算就把它封装成一个函数,用函数名表达意义。
    也如楼上所说,代码也有表达失败的时候,比如一个精细的算法,或者有一些难度的设计,往往写一点注释或者写下设计稿的 URL
    eslizn
        51
    eslizn  
       2019-02-17 16:39:57 +08:00   1
    写的好的代码本身就是一种注释
    ljspython
        52
    ljspython  
       2019-02-17 16:53:07 +08:00
    @Raynard #30 写个代码怎么搞得还跟间谍似的
    mpanda
        53
    mpanda  
       2019-02-17 17:03:50 +08:00
    目前也在被这两个系统这么中,没有 orm 话说写起来太麻烦了
    axzy
        54
    axzy  
       2019-02-17 17:26:41 +08:00
    写好了,把注释批量删除不就行了。。。
    Mtianmin
        55
    Mtianmin  
       2019-02-17 18:19:26 +08:00
    不写注释的还在职甚至还升职了,写注释的已经离职了
    sison1234
        56
    sison1234  
       2019-02-18 09:30:56 +08:00
    微擎就是坑,人人度可以码的
    lychnis
        57
    lychnis  
       2019-02-18 09:48:00 +08:00 via Android   1
    代码本身质量好的话不需要注释吧。。
    ivanshaoaz
        58
    ivanshaoaz  
       2019-02-18 10:54:46 +08:00
    曾经做过一年多的微擎+人人商城的二开
    惨不忍睹
    luosuosile
        60
    luosuosile  
       2019-02-18 13:41:33 +08:00
    楼主不是说了,连字母变量都很多嘛,感觉就没打算给人看,跟代码整洁之道关系不大
    Eugene1024
        61
    Eugene1024  
       2019-02-18 14:04:26 +08:00
    小公司老板都不关心这些的,老板只关心你这个东西效果,而且给的钱也不多,所以具体干成什么样子,完全就看开发人员自己了
    itgoyo
        62
    itgoyo  
       2019-02-18 14:46:47 +08:00
    我当初进入公司的时候觉得别人的代码写的乱,这个乱跳,然后用框架重构了一个遍,代码简洁多了,因为使用了开源框架,但是我自己工作了几年,到现在我的代码水平还没有那些几年前写的人牛逼,我打心底佩服老一辈的程序员。
    mapoor
        63
    mapoor  
       2019-02-18 15:20:51 +08:00
    注释比代码还多的,注释里写一堆废话,还以为自己很幽默。 “不要写废代码,更不要写废注释” 大家要互相尊重,对吧。
    NaiveSimpleYoung
        64
    NaiveSimpleYoung  
       2019-02-18 15:35:27 +08:00
    还有一种情况,开发者语文很差,写一堆注释没明白啥意思。
    topmati
        65
    topmati  
       2019-03-13 17:17:25 +08:00 via iPad
    天啊,我第一次听说大牛不写注释的,你去看看哪些牛的程序员写的代码,哪个是没注释的?可读性,可读性,可读性,你的代码不用维护的么?当然没水平的注释值得鄙视
    关于     帮助文档     自助推广系统     博客 &nbp;   API     FAQ     Solana     1031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:05 PVG 02:05 LAX 11:05 JFK 14:05
    Do have faith in what you're doing.
    ubao 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