最近刚到一家公司,公司用的微擎+人人商城来做项目,本人头回接触这两个项目,看了 2 天代码,差点没吐了,这两系统开发者是如何做到整套系统没有一个注释的,而且还 n 多字母变量,没有分层概念,完全就是堆砌代码,看来我真是才疏学浅,完全理解不了这种代码。
![]() | 1 zjsxwc 2019-02-16 21:13:09 +08:00 via Android 人肉混淆后的代码? |
![]() | 2 qq292382270 2019-02-16 21:14:14 +08:00 ![]() 开发完成后批量删除注释即可... |
![]() | 3 namesc 2019-02-16 21:23:24 +08:00 ![]() 小公司吧,没有代码审计,被前任开发挖坑了。 这是一种防失业手段,把自己的代码混淆,确保了这个系统没了自己不行,也确保了继任不能复用,继任来了必须重新开发,无形中增加了就业。(记得是这么说的,以前看过一群人讨论过这个话题 |
![]() | 4 namesc 2019-02-16 21:25:55 +08:00 ![]() 你别说,有那么一瞬间我觉得他们说得挺有道理的,现在很多小公司都是过河拆桥,等你开发完了让你带一个实习生,实习生一上手就开始挤兑你逼走你,老板这么有手段自己没点手段不行。 |
![]() | 5 mamahaha 2019-02-16 21:26:04 +08:00 故意的,留着注释等工资低的看明白了自己就下岗了,批处理一键删除注释。 |
![]() | 6 mgso 2019-02-16 21:27:03 +08:00 via iPhone 我曾经在注释里把公司吐槽了一番 |
![]() | 7 mgso 2019-02-16 21:29:55 +08:00 via iPhone 不过我是深恶痛绝代码不打注释的人,即便我各种吐槽公司,即将甩盘,但注释还是打得很详细,有的详细到每一行为什么这么写 |
![]() | 8 MinQ 2019-02-16 21:43:00 +08:00 via Android ![]() @namesc 我觉得防失业的最高境界是代码中用了某些公式 /算法,就算注释放在那一般人要理解也要花比较长的时间。带实习生的时候先扔给他三五篇硕士论文,看完了我们再谈后面的东西。 |
![]() | 9 houlin 2019-02-16 22:06:14 +08:00 via Android 微擎开源搭建加人人商城??你们公司技术参与开发了吗? |
![]() | 10 houlin 2019-02-16 22:07:14 +08:00 via Android 微擎因为二开的多,盗版的也多,微擎自己不做注释是为了防止破解 |
![]() | 11 Muninn 2019-02-16 22:15:09 +08:00 混淆过吧 |
![]() | 12 ywisax 2019-02-16 22:24:24 +08:00 这两个搭配养活了一大堆垃圾外包公司。。。别想着理解代码了,随便 copy+paste 能做完业务就行了 |
![]() | 14 4DAX07B8Kle4Dm6T 2019-02-16 22:27:44 +08:00 微擎有文档的,算好的了,要是接手个没注释、没文档、代码还乱的那种项目,那酸爽 |
![]() | 17 houlin 2019-02-16 22:30:40 +08:00 via Android 有相关二开文档 |
![]() | 18 namesc 2019-02-16 22:32:59 +08:00 才发现楼主说的项目代码是第三方商业源码啊,那就不是防失业了,是防破解。 |
19 hilbertz 2019-02-16 22:42:12 +08:00 写了注释也没用,很多人头天写的,第二天就看不懂了 |
20 humansjl 2019-02-16 23:02:13 +08:00 大概率人走茶凉前任对公司没有留念了。 零概率真的没有注释。 |
![]() | 21 uqf0663 2019-02-16 23:05:25 +08:00 你们买的是正版的还是直接网上下的盗版? 因为原版都是加密,网上那些盗版都是解密后的,自然没注释跟部分变量名看起来混乱了(因为加密过程中被压缩掉注释跟混淆变量名) |
![]() | 22 niuoh 2019-02-16 23:05:37 +08:00 不写注释有啥难的 如喝水般自然 写注释对我来说才是反人类的 |
![]() | 24 joe1213 2019-02-16 23:45:17 +08:00 via Android ![]() |
![]() | 25 namesc 2019-02-17 00:29:57 +08:00 @joe1213 得多闲才这样干啊,只是清除注释和混淆已经很难阅读了,不用这么折腾。 不过这个套路在接口防御策略里倒是有人使用,识别出稳定的采集时,不返回错误,而是在返回内容里随机把一些真实数据替换为虚假数据,提高采集人的识别成本。 |
![]() | 26 mostkia 2019-02-17 01:40:03 +08:00 via Android 不写注释才爽好吗…只是后期看代码就蛋疼了,你让任何程序员不写注释都能做到的,后期维护就不知道了,至于你说的情况,我觉得可能是留了两份吧,开发用开发版的有注释,上线了就删除所有注释,提高阅读成本。一般搞前端的比较普遍。 |
![]() | 27 shm7 2019-02-17 01:48:40 +08:00 via iPhone 首先说一下,一般项目做得好的,注释少很正常;程序写清楚了,就不要注释了。这几十年前就被写进书里面了吧。怎么每次都有人吗不写注释说事情。 |
![]() | 30 IsA26hN4DcQDS7Z9 2019-02-17 02:43:01 +08:00 还见过变量名随机生成,只有他自己有对照表的。 |
31 luozic 2019-02-17 02:49:32 +08:00 via iPhone oxygen Idea code2UML,C#和 Java 代码注释写的烂的不如不写,但看代码的辅助工具都不用,你不是蛋疼么。 并且如果是走微服务+了全链路监控的,代码垃圾也只能一小块,交互 API 还垃圾的话,看来公司里面天天干仗。 |
![]() | 32 aleviosa 2019-02-17 03:04:35 +08:00 先问是不是系列……这样写代码还可以叫大牛的吗 |
33 likai 2019-02-17 06:30:37 +08:00 via Android 很大可能是你们用的解密后的盗版源码 |
![]() | 35 wspsxing 2019-02-17 07:44:27 +08:00 via Android 代码即注释啊,注释跟不上也是坑 |
![]() | 36 xiaotuzi 2019-02-17 07:44:45 +08:00 via iPhone 只要没有加密就可以二开,我有一套万能二开的方法,只要是新功能新需求,要记录什么的,新建一个表,相关表用副键关联,如 pid,之后就找到关键的地方修改,一半跟着 url 走就能找齐所有方法,只需要到需求关键处修改,无需每个方法做修改。 |
![]() | 37 loading 2019-02-17 07:55:19 +08:00 via Android 大牛和你: 这几行这么简单,看不懂的都是垃圾也是不会改的,不加了。 |
38 quinoa42 2019-02-17 09:52:18 +08:00 via Android 说到这个,为啥大多数开源项目代码都没有注释?有时候想提个 pr 得把相关代码从头到尾看一遍,效率太慢了 |
![]() | 39 ymj123 2019-02-17 09:56:48 +08:00 via Android 不写注释还不简单。只是有的业务复杂了,后面看不太方便。 |
![]() | 40 mcfog 2019-02-17 10:41:44 +08:00 via Android ![]() 程序员最讨厌的 2 件事 1、接手的代码没有注释 2、写注释 |
41 find456789 2019-02-17 10:46:23 +08:00 我想起之前在知乎看到一个匿名折叠的评论,大概是说, 某 a 公司旗下,开源的某热门项目,但是故意删光了注释, 目的是为了让其他人难以消化代码 |
![]() | 42 babedoll 2019-02-17 10:49:19 +08:00 。。。你们没版本控制吗,我们用的 tfs,就算你后面吧注释删了,代码的历史记录也有注释啊。。 |
44 taaaang 2019-02-17 11:48:18 +08:00 其实源码没有注一方面可能是人家有这方面的考量。 另外,我们公司编码 review 也不要求注释,甚至鼓励不写注释。但是,必须清晰,简洁,易读。程序即注释。 |
![]() | 45 Lision 2019-02-17 12:19:44 +08:00 字母变量... 这莫非是用刷题的写法写业务? |
![]() | 46 Moker 2019-02-17 13:27:21 +08:00 以前公司也是要求不能写注释 但是有自己的一套规范 命名规则 强制写文档 |
47 qoras 2019-02-17 13:28:45 +08:00 因为注释写了也不受重视, 干脆不写或删掉, 还能保饭碗, 毕竟国内卸磨杀驴的事太多 |
![]() | 48 hxt 2019-02-17 13:42:10 +08:00 微擎和人人商城都是商业项目,给你公司时的源码应该已经是混淆加密过了,后面进行二次开发要多乱有多乱。 |
49 littleMaple 2019-02-17 14:00:33 +08:00 via iPhone ![]() 可以看看《代码整洁之道》书中讲“注释”那一章,业界大牛的想法还是很值得参考的。 摘录一小段: (仅搬运,不代表个人立场) > 注释并不像辛德勒的名单,它们并不“纯然的好”。实际上,注释最多也就是一种必须的恶。若编程语言足够有表达力,或者我们长于用这些语言来表达意图,就不那么需要注释也许根本不需要。 > 注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。注意,我用了“失败”一词。我是说真的。注释总是一种失败。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺....... |
![]() | 50 everwanna 2019-02-17 15:26:46 +08:00 via Android ![]() 大多数代码是不应该写注释的,因为维护注释比维护代码还困难,有点长期项目经验的人都知道这一点。程序员应该努力让代码说话,let codetalk. 努力用每个变量名,函数名表达真正的意图,如果是一个不明显的计算就把它封装成一个函数,用函数名表达意义。 也如楼上所说,代码也有表达失败的时候,比如一个精细的算法,或者有一些难度的设计,往往写一点注释或者写下设计稿的 URL |
51 eslizn 2019-02-17 16:39:57 +08:00 ![]() 写的好的代码本身就是一种注释 |
53 mpanda 2019-02-17 17:03:50 +08:00 目前也在被这两个系统这么中,没有 orm 话说写起来太麻烦了 |
![]() | 54 axzy 2019-02-17 17:26:41 +08:00 写好了,把注释批量删除不就行了。。。 |
![]() | 55 Mtianmin 2019-02-17 18:19:26 +08:00 不写注释的还在职甚至还升职了,写注释的已经离职了 |
![]() | 56 sison1234 2019-02-18 09:30:56 +08:00 微擎就是坑,人人度可以码的 |
57 lychnis 2019-02-18 09:48:00 +08:00 via Android ![]() 代码本身质量好的话不需要注释吧。。 |
58 ivanshaoaz 2019-02-18 10:54:46 +08:00 曾经做过一年多的微擎+人人商城的二开 惨不忍睹 |
![]() | 59 a54552239> 2019-02-18 12:08:39 +08:00 微擎本身感觉还好吧。仔细研究下还是看一看的。不过插件应用的质量就参差不齐了。 |
60 luosuosile 2019-02-18 13:41:33 +08:00 楼主不是说了,连字母变量都很多嘛,感觉就没打算给人看,跟代码整洁之道关系不大 |
![]() | 61 Eugene1024 2019-02-18 14:04:26 +08:00 小公司老板都不关心这些的,老板只关心你这个东西效果,而且给的钱也不多,所以具体干成什么样子,完全就看开发人员自己了 |
![]() | 62 itgoyo 2019-02-18 14:46:47 +08:00 我当初进入公司的时候觉得别人的代码写的乱,这个乱跳,然后用框架重构了一个遍,代码简洁多了,因为使用了开源框架,但是我自己工作了几年,到现在我的代码水平还没有那些几年前写的人牛逼,我打心底佩服老一辈的程序员。 |
![]() | 63 mapoor 2019-02-18 15:20:51 +08:00 注释比代码还多的,注释里写一堆废话,还以为自己很幽默。 “不要写废代码,更不要写废注释” 大家要互相尊重,对吧。 |
![]() | 64 NaiveSimpleYoung 2019-02-18 15:35:27 +08:00 还有一种情况,开发者语文很差,写一堆注释没明白啥意思。 |
![]() | 65 topmati 2019-03-13 17:17:25 +08:00 via iPad 天啊,我第一次听说大牛不写注释的,你去看看哪些牛的程序员写的代码,哪个是没注释的?可读性,可读性,可读性,你的代码不用维护的么?当然没水平的注释值得鄙视 |