重复代码是万恶之源

2014-12-11 10:18:18 +08:00
 artwalk
重复代码是万恶之源

之前也发过一个帖子问 iOS 有木有检测重复代码的,但好像真木有啊

所以自己写个了:
https://github.com/Artwalk/DuplicateLines

目前很简单,大家有神马想法欢迎留言哈
5981 次点击
所在节点    程序员
25 条回复
angusjune
2014-12-11 12:08:56 +08:00
赞 再来一个Android版的
tini8
2014-12-11 12:13:08 +08:00
重用是万恶之首
bsbgong
2014-12-11 12:15:12 +08:00
我们的开发原则第一条:DRY, DRY, DRY!
chmlai
2014-12-11 12:22:33 +08:00
结构清晰好像更重要
q5we66fg
2014-12-11 12:53:57 +08:00
@tini8 重用和重复不一样吧,代码应该重用 不应该重复 我觉得
ytzong
2014-12-11 12:58:29 +08:00
业务第一,代码重复与否不太重要
tini8
2014-12-11 13:01:29 +08:00
@q5we66fg 骚年,看来还是项目做的少哇。现实的世界五彩缤纷,根本没法抽象的,所谓封装、抽象、重用这些,都是唬人的。
tini8
2014-12-11 13:02:19 +08:00
除非是造物的上帝,凡人是无法重用现实世界的业务逻辑的。
artwalk
2014-12-11 13:48:29 +08:00
@angusjune Android 有 PMD,很好用 http://pmd.sourceforge.net/

@ytzong 重复往往引起业务错误
afc163
2014-12-11 13:52:31 +08:00
@tini8 真理。JRY:just repeat youself
sohoer
2014-12-11 14:08:38 +08:00
@tini8 看来还是代码写少了
kingme
2014-12-11 14:25:45 +08:00
同一段代码写三遍,基本上就一定会提出来作为新的方法了。。。作为一个C#小菜鸡的做法。。。
mengzhuo
2014-12-11 14:36:51 +08:00
给楼上的说JRY的说个生产事故:

某公司Python程序员,曾经四处复制粘贴一段解析API的代码
API升级之后,他升级了手头项目的代码,其他的都忘了改
过了段时间,他自己也忘了
然后把老的代码复制到了新的项目中……最后加班3天,自己就辞职了
tini8
2014-12-11 14:44:03 +08:00
@mengzhuo 解析api、处理字符串,比如字符串截取这些小功能确实能重用,封装成函数或方法。

可怕的是过度封装,把业务逻辑也封装起来,特别是解决现实需求的业务逻辑,美其名曰重用,最后越陷越深。
iyangyuan
2014-12-11 18:29:02 +08:00
代码之美
akfish
2014-12-11 19:05:00 +08:00
楼上喷重用的也是醉了。
跨项目的重用,水平不够的程序员的确是玩不转。
同项目内重用就是很基本的要求,这都做不到的应该检讨自己能力是不是出问题了。
同样的代码段反复出现都不知道提取出来坚持C-c C-v的人,非懒即笨。

重用的方式是双向的,既可以来自于早期设计,也可以来自于后期重构。
随着项目演化和业务逻辑的变化改善重用方式是很基本的能力。
所谓的”过度“重用,不过是开发者水平不到位而已。
bigzhu
2014-12-11 19:17:07 +08:00
代码的重用和重复, 这么基本的问题, 竟然还能争论起来.

遇到到处C-c C-v 的人, 屡教不改, 那么就建议他换行业了, 别祸害 IT 公司了
est
2014-12-11 19:53:44 +08:00
@tini8 准确的说,是逻辑重用是万恶之首。
dcty
2014-12-11 19:57:31 +08:00
- (void)tableView:(UITableView *)tableView xxxxx
这种东西在项目重复何止三次,三十次都有。
fgxtrue
2014-12-11 20:12:18 +08:00
代码堆砌

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

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

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

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

© 2021 V2EX