我毕业快一年了。和另外一个搭档同事都是最近刚入职的新人。之前偶尔代码 Review 的时候发现他很喜欢把逻辑都写在同一个类里,不过注释用中文写得很详尽,所以还是能读的,但我觉得这样不太好,而且以后我们两个可以说是互为相依为命的角色,所以一直想找个机会告诉他。 所以趁着这个一个新的模块开始的时候,对模块的整体结构提了一些建议,整个模块可能两三千行代码的规模,建议划分成 4~5 个类来实现,他也同意这样划分在逻辑上是很清晰的,但觉得这样太细了,可能有些过度设计了。他最后坚持要写在一个类里,觉得代码分散在四五个文件里面可以维护,集中在一个文件里面也是可以维护的。我听到这样的想法突然觉得无力反驳,于是作罢了。 另外,我们的项目有充裕时间。
事后我也有反省自己,我是不是控制欲太强,太喜欢指手画脚了呢?虽然我心里确实有倾向,也有答案。但还是想来听听前辈们怎么说。
![]() | 1 ShengjiaWANG 2016-04-21 02:22:36 +08:00 不管怎么说,两三千行也实在太多了... |
![]() | 2 dapang1221 2016-04-21 02:30:24 +08:00 via Android 能把逻辑实现出来而且有注释就行了……个人习惯不同。。 主要是我觉得吧,把一些肯定不会复用的代码重新写进个类里,以及把一个比较连贯的逻辑拆得到处都是代码,这样有时也真挺烦人的…… |
![]() | 3 binux 2016-04-21 02:31:39 +08:00 两三千行不是一个函数的话,还好。 取决于类分开之后,新增一个函数,你们能不能不经过讨论,就函数放到哪个类里面达成共识。 如果不能的话,拆分其实是失败的。 |
![]() | 4 ipconfiger 2016-04-21 02:48:57 +08:00 关键是这个巨型类的功能是否也是一个瑞士军刀一样的大杂烩啊? |
![]() | 5 hbkdsm 2016-04-21 07:56:01 +08:00 via Android Rails 里面一个 model 两三千行很常见 |
6 qingchengdev OP |
![]() | 7 bk201 2016-04-21 09:24:37 +08:00 看你的 append 我个人觉得这种情况确实拆开好,主要考虑到耦合度。 |
8 riverphoenix 2016-04-21 09:28:10 +08:00 我现在超过三百就觉得看不下去了 |
![]() | 9 lincanbin 2016-04-21 09:32:58 +08:00 有 IDE 的快速查找的话其实问题不大。 只要每个方法的行数不要太多就好了。 |
![]() | 10 LINAICAI 2016-04-21 09:36:50 +08:00 传说中的 c 程序员?面向函数编程。。。 |
![]() | 11 LINAICAI 2016-04-21 09:38:25 +08:00 两三千行都写在一个类,如果业务逻辑不能再细分了的话,勉强能接受吧。 但这情况也是很极端的吧 |
![]() | 12 Actrace 2016-04-21 09:42:12 +08:00 要根据程序模块划分! 要根据程序模块划分! 要根据程序模块划分! 重要的事情说 3 次。 |
![]() | 13 anerevol 2016-04-21 09:44:11 +08:00 via Android 感觉拆不拆都行,毕竟功能职责单一。 如果有些代码能抽成可以公用的代码的话,是可以分一分的。 |
14 22too 2016-04-21 09:44:50 +08:00 只要不是 python 程序就行。(逃 |
15 SpicyCat 2016-04-21 09:49:02 +08:00 单个类还好吧,一般编程规约都是规定单个函数不能太长。 |
![]() | 16 yhxx 2016-04-21 09:50:48 +08:00 前几天听说某宝前端要求一个 js 文件不能超过 130 行 |
![]() | 17 dong3580 2016-04-21 09:51:33 +08:00 单个类倒是没问题吧,看是不是在一个方法里; 如果项目比较大,到可以根据业务,或者逻辑划分, |
18 qingchengdev OP |
19 jackal 2016-04-21 10:57:46 +08:00 "以后我们两个可以说是互为相依为命的角色" || >>>这就决定了,你可以跟对方说说, 只要说清楚了,对方最后不同意和接受, 你就最好不要再提这个事情了。 ”如何说服。。。。。。?“==========>>>这事情本质上跟技术无关。 |
![]() | 20 3dwelcome 2016-04-21 11:04:46 +08:00 via Android 何必勉强别人呢、说服人是件很难的事。谁写的代码谁来维护、每个人代码风格都不一样。 当然、如果你能混到技术负责人、就可以强推代码规范了。 |
![]() | 21 karlakte 2016-04-21 12:49:56 +08:00 他软的源码 一个文件超过 1 万行的都有。关键看文件内代码的模块功能 /业务相关性。允许拆开,当然是拆开好咯。 |
![]() | 22 harry890829 2016-04-21 12:51:34 +08:00 我刚进新公司,正在看项目代码,纯 c 的代码,文件近 2w 行,有一个函数就是 7.5k 行 |
![]() | 23 jy01264313 2016-04-21 14:20:55 +08:00 打车求教,如果说服一个工作 10+ 的 J2EE 人不用要 tab 换行?总有一些 python 代码被他无意间碰到,最后不能运行了。 |
![]() | 24 loryyang 2016-04-21 14:23:30 +08:00 直接说,难! 这种事情可以尝试走这个路线,私下找技术负责人,提出这个建议,然后促使技术负责人立下规定,所有组员都要遵守,你就可以拿这个当令箭了 |
![]() | 25 xdazz 2016-04-21 14:44:16 +08:00 制定,制行的可以在中央置 hook 查,不符合的直接 reject 掉不提交。好好通。 |
![]() | 26 Tneciv 2016-04-21 18:30:41 +08:00 @jy01264313 悄悄改下他的 ide 设置就好了 |
![]() | 27 jy01264313 2016-04-22 09:31:57 +08:00 @Tneciv 我现在的解决方案是,看见 J2EE 的人就直接 PASS |