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

2016-01-11 12:36:39 +08:00
 china521

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

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

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

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

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

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

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

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

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

從 2010 年到現在同樣的事情發生無數次了,你說要不要寫成模塊呢?
pH
2016-01-11 14:44:42 +08:00
@Elethom 佩服!

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

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

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

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

© 2021 V2EX