谁需要改进自己的代码

2018-02-13 16:33:06 +08:00
 wuzhi1234

背景:

AB 的代码能力是 50,C 的代码能力是 100 AB 的代码互相都可以看懂,并且可以互相修理对方的 bug C 可以看懂 AB 的代码,并且可以互相修理他俩的 bug AB 很难看懂 C 的部分代码,并且无法修理对应的 bug

问题: 谁需要改进自己的代码

6900 次点击
所在节点    程序员
49 条回复
ghiei9101
2018-02-13 16:36:24 +08:00
C 需要改进注释和文档
sea516
2018-02-13 16:39:04 +08:00
有 bug 不能给 100
wuzhi1234
2018-02-13 16:39:23 +08:00
@ghiei9101 注释经过投诉后增加挺多的,但是私有方法跳来跳去,一个方法动辄上百行,真的很难看下去
hsuan
2018-02-13 16:39:52 +08:00
AB
ytll21
2018-02-13 16:41:42 +08:00
一个方法动辄上百行,真的很难看下去 -> 这个能给 100 ?
nino
2018-02-13 16:42:46 +08:00
代码写的看不懂恐怕给不了 100 分啊
whypool
2018-02-13 16:43:30 +08:00
那 C 的 100 就有点假了
100 的人也是经历过 50 的阶段的
wuzhi1234
2018-02-13 16:45:11 +08:00
@ytll21 我是随便给个分数,满分 1000
eaglexiang
2018-02-13 16:45:45 +08:00
代码能力的体现之一就是易读性与易维护性,为什么 100 写出来的代码反而不如 50 的代码易懂?
AB 互相能理解对方的代码?两个代码能力很差的人,别说对方的代码,过两个月连自己的代码都理解不了。
msg7086
2018-02-13 16:49:41 +08:00
不知道这打分怎么来的。
写出来的代码要短小精悍,易读,不容易读的部分要加注,有条件的话要做单元测试和特性测试。
要是 1000 分打出 50 和 100,那这几个人全都得开了。

私有方法上百行,内部没注释,其实是小事。如果你特牛逼,上百行代码不出错,无 Bug (至少是无显著 Bug ),完美测试覆盖,内部就当做黑匣子来做都行。如果不牛逼,那就老老实实按照要求写代码。
wuzhi1234
2018-02-13 16:51:16 +08:00
@msg7086 你说的很在理,上百行的本事是你的代码别人不用维护不用管
Richardhtw
2018-02-13 17:09:02 +08:00
代码能力强不是应该写出简明易懂高效便于维护的代码吗???
感觉前提不成立啊。
SuperMild
2018-02-13 17:16:45 +08:00
一个重点:C 的代码,难懂的部分,是不是对系统有很大作用(比如性能提高很多,并且该性能是系统原本的短板之一)。

如果有简明易懂的方法来实现 C 的难懂部分,并且性能啥的没什么损失,那 C 这是能力不行啊,或者明明能力很行,却故意弄些难维护的代码出来,这就不是代码改不改进的问题,是心态有问题。
fatttt
2018-02-13 17:20:31 +08:00
@wuzhi1234 一个方法超过 100 行就要思考一下了
SuperMild
2018-02-13 17:20:47 +08:00
还有就是,AB 代码所谓的易懂,是不是没考虑到以后系统变得复杂的问题,直接把全部逻辑写在一个函数里,前期是更好懂,但后面可能重构的工作量就大了。C 是不是用了更容易扩展的 pattern 呢。
moult
2018-02-13 17:31:02 +08:00
C 代码难懂的部分,是不是用到一些高级高效算法,亦或是符合一定的规范,还是就纯粹的抖机灵?
最好同一个需求,让 ABC 都写出一段,贴上来,大家评判一下。

举个例子,实现用户资金变动功能。
AB 写了个函数,在里面做更新余额等一系列操作,所有的操作都在一个文件里面,通俗易懂。
但是 C 却构造了一个事件机制,更新余额、记录账目流水、发送通知等操作,通过侦听这个事件来实现。
例子可能不是很恰当,大概意思是 C 灵活使用事件钩子机制,自然就比 AB 来的规范,当然 AB 就应该学习 C 了。
qiumaoyuan
2018-02-13 17:37:03 +08:00
“ AB 很难看懂 C 的部分代码,并且无法修理对应的 bug ”,说明 C 的代码能力 100 的评分不正确。

结论是需要重新评分,并且大家都要改进自己的代码。
Lucups
2018-02-13 17:44:16 +08:00
论 Code Review 的重要性。

别人看不懂。。。除非 AB 真小白,不然就是 C 有大问题。
我之前维护的一个 PHP 项目,所有的数字(0~9)值不定义成常量也就算了,还写成 ASCII 码(都用 chr(48)~chr(57) 来表示),生怕别人能看懂他的代码。
CoderGeek
2018-02-13 17:47:29 +08:00
说实话 写的有效率也该注释 抖机灵啥的没意思 C 如果不是高效之类的还不如 B
CEBBCAT
2018-02-13 20:08:25 +08:00
啥啥啥?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/430591

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX