V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
china521
V2EX  ›  问与答

关于程序员的代码洁癖问题, 如果找平衡.

  •  
  •   china521 · 2016-01-11 12:36:39 +08:00 · 1566 次点击
    这是一个创建于 3021 天前的主题,其中的信息可能已经有所发展或是发生改变。

    举个简单的例子,拿 AngularJS 来说吧。

    有一个 DIV 里面要显示一些内容,但只有两处地方能用到,而且是重复的代码, 有几百行. 后期修改的机会很少.

    那么问题来了,是把这个 DIV 的渲染重用一下做成 directive 呢,还是直接复制粘贴,暴力一点...

    做成可重用的逼格高, 但, 只有两处能用到,划不来啊, 而且为了适应整体框架要费时间, 但美观, 更标准.

    直接复制粘贴可能要几秒就 OK 了, 重用代码有必要吗 ? 怎么寻找平衡点.

    还是说,这是原则问题,只要能重用的,全部写成模块。。不管用到的次数有多少
    还是说,效率第一, 复制粘贴, 几秒 OK.
    还是说,跟场景有关,项目动机, 跟任不任性有关。。。

    4 条回复    2016-01-11 14:44:42 +08:00
    jinwyp
        1
    jinwyp  
       2016-01-11 13:43:19 +08:00   ❤️ 1
    使用复制粘贴,
    重复 3 次的组件并代码在 1000 行才做成 directive
    zhujinliang
        2
    zhujinliang  
       2016-01-11 14:07:54 +08:00   ❤️ 1
    复制 粘贴 再写个注释,说明这里跟那里是同一个逻辑,如果需要修改,别忘了

    个人有个习惯,决定一块代码是否需要单独出来,看能不能给这个函数或方法取一个简洁直观的名字,要是好几个单词都描述不了一块代码,那还是直接上代码吧
    Elethom
        3
    Elethom  
       2016-01-11 14:19:31 +08:00 via iPhone   ❤️ 3
    我都是寫成單獨的 module/class/template 的。哪怕一個數字只出現了兩次我也會寫個 constant ,一個列表裏只有兩行也會寫個 enum ,可能要變的東西全部提出來放在 config 裏。於是經常出現這樣的情況:小升級的時候有幾十個小細節要改,我做的 iOS 端或者 web 端這邊改個 config 改幾個 constant 什麼的半個小時就搞定刷 B 站去了,邊上做 Android 的哥哥吭哧吭哧搞了半個星期。

    iPhone 5 剛出來的時候別的程序員都在吭哧吭哧加班,我在刷 B 站,因為從 iPhone 3GS 時代寫的所有代碼就全部動態獲取屏幕尺寸根本不用改; iPhone 6 出來的時候別的程序員吭哧吭哧加班,我還在刷 B 站。嘻嘻嘻嘻嘻嘻嘻~

    從 2010 年到現在同樣的事情發生無數次了,你說要不要寫成模塊呢?
    pH
        4
    pH  
       2016-01-11 14:44:42 +08:00
    @Elethom 佩服!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2867 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:32 · PVG 22:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.