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

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

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

    最近刚到一家公司,公司用的微擎+人人商城来做项目,本人头回接触这两个项目,看了 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 如果牛到这个程度就不用防失业了吧
    wispx
        14
    wispx  
       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 什么都不服就服你…
    Raynard
        30
    Raynard  
       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
    曾经做过一年多的微擎+人人商城的二开
    惨不忍睹
    a54552239
        59
    a54552239  
       2019-02-18 12:08:39 +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
    天啊,我第一次听说大牛不写注释的,你去看看哪些牛的程序员写的代码,哪个是没注释的?可读性,可读性,可读性,你的代码不用维护的么?当然没水平的注释值得鄙视
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   914 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:34 · PVG 06:34 · LAX 14:34 · JFK 17:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.