举个简单的例子,拿 AngularJS 来说吧。
有一个 DIV 里面要显示一些内容,但只有两处地方能用到,而且是重复的代码, 有几百行. 后期修改的机会很少.
那么问题来了,是把这个 DIV 的渲染重用一下做成 directive 呢,还是直接复制粘贴,暴力一点...
做成可重用的逼格高, 但, 只有两处能用到,划不来啊, 而且为了适应整体框架要费时间, 但美观, 更标准.
直接复制粘贴可能要几秒就 OK 了, 重用代码有必要吗 ? 怎么寻找平衡点.
还是说,这是原则问题,只要能重用的,全部写成模块。。不管用到的次数有多少
还是说,效率第一, 复制粘贴, 几秒 OK.
还是说,跟场景有关,项目动机, 跟任不任性有关。。。
1
jinwyp 2016-01-11 13:43:19 +08:00 1
使用复制粘贴,
重复 3 次的组件并代码在 1000 行才做成 directive |
2
zhujinliang 2016-01-11 14:07:54 +08:00 1
复制 粘贴 再写个注释,说明这里跟那里是同一个逻辑,如果需要修改,别忘了
个人有个习惯,决定一块代码是否需要单独出来,看能不能给这个函数或方法取一个简洁直观的名字,要是好几个单词都描述不了一块代码,那还是直接上代码吧 |
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 年到現在同樣的事情發生無數次了,你說要不要寫成模塊呢? |