V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
artwalk
V2EX  ›  程序员

重复代码是万恶之源

  •  
  •   artwalk · 2014-12-11 10:18:18 +08:00 · 5845 次点击
    这是一个创建于 3417 天前的主题,其中的信息可能已经有所发展或是发生改变。
    重复代码是万恶之源

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

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

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

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

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

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

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

    遇到到处C-c C-v 的人, 屡教不改, 那么就建议他换行业了, 别祸害 IT 公司了
    est
        18
    est  
       2014-12-11 19:53:44 +08:00
    @tini8 准确的说,是逻辑重用是万恶之首。
    dcty
        19
    dcty  
       2014-12-11 19:57:31 +08:00
    - (void)tableView:(UITableView *)tableView xxxxx
    这种东西在项目重复何止三次,三十次都有。
    fgxtrue
        20
    fgxtrue  
       2014-12-11 20:12:18 +08:00
    代码堆砌
    fangzhzh
        21
    fangzhzh  
       2014-12-11 20:45:07 +08:00
    有人有这样的能力:写出的每一行代码都是垃圾代码
    yuzhouwww
        22
    yuzhouwww  
       2014-12-12 00:01:11 +08:00
    具体来说,是重复的代码片段
    ipconfiger
        23
    ipconfiger  
       2014-12-12 00:32:23 +08:00
    提前优化才是万恶之源
    vjnjc
        24
    vjnjc  
       2014-12-12 00:46:05 +08:00
    有些时候要对重复代码有容忍性,确实很难抽象
    kshatriya
        25
    kshatriya  
       2014-12-12 07:04:25 +08:00 via iPhone
    重复不能只是复制粘贴吧,适当的冗余还是有必要的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   922 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:16 · PVG 06:16 · LAX 15:16 · JFK 18:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.