Re: [討論] 會手癢想動前人的程式嗎?

作者: bachelorwhc (單身老王)   2019-01-12 11:56:25
※ 引述《sec5566 (sec)》之銘言:
: 或是命名規則有問題的,
: 像函式用大駝峰,類別用小駝峰,
: 或很奇怪的名稱之類,
: 不然就是排版很亂的,
: 這種大家會手癢去改嗎?
就跟推文鄉民講的一樣 這是團隊的管理問題
通常命名如果不符規則 只是改大小寫這應該不用過問吧
但是改名稱 老實講這要看寫的人還在不在職啦
不然你改了 code review時解釋說: 這名稱很奇怪
除非你跟對方溝通過 或你比對方大牌
做事做就是做人 沒有對事不對人的
(何況 你有辦法保證你的命名一定比較好?)
: 改下去又是大工程了,結果工作越做越多
你前面講dry原則的 軟體開發原則很多 但這些原則多半都被有心人士拿來吵架用
更何況 這些原則能不能為商品帶來價值 多數都不能
我建議三小原則的 放在自己心中默默實踐就好
我講一下重構的幾個種類 這是小弟我在業界的觀察
1. 命名、拆解
這就是clean code裡很基本的東西
function不要太長 命名清晰描述單一動作
改名的事情我前面說過了 這邊就不贅述
IMO 比起改錯字、大小寫 他命名很奇怪我把他改掉
把大function拆解成小function 還比較有用
(而且絕對不會是大工程... 所以... 要實踐你所謂的dry可以從小事做起)
2. 運用語言技巧 精簡程式碼
老實講這種事情就只是單純的炫技
小弟我就曾經把一大段大量重複的code
利用Template 將邏輯拆解成Policy
使得每個重複的流程都可以透過組合的形式避免duplicated
但說真的 它的價值就只有文學上的價值而已
(我認為在某些狀況下 重複的code不見得是錯誤或不良的)
3. 架構
我認為需要改架構的狀況只有幾種:
a) 邏輯紊亂重複 導致效能低落或維護不易
b) 當前的架構無法因應新的需求或改變
這種狀況 才是你所說的工程浩大
不然一般狀況下的重構搬移刪除重複代碼都只是很基本很淺的功夫
TL;DR
其實重點是這樣的
在這個業界 有需求 滿足需求才會產生價值
你的需求 如果只能滿足你個人 那我肯定你做的事情是沒啥幫助的
更何況 你重構又怎麼能保證不會有新的問題產生
所以最好的方式是 建立測試 才去重構
而不是重構自己爽完了 留給後人收拾問題
小弟上次重構 把一個重點功能的速度提升至少2.5倍
還贏得了與某大公司進一步合作的機會 給你參考
作者: t64141 (榕樹)   2019-01-12 12:05:00
第二點,當專案需求是頻繁更動的時候,重用性的價值就出來了只需要修改一個地方跟修改一百的重複的地方,時間跟測試成本與風險都不一樣
作者: Beatles5566 (披頭56)   2019-01-12 12:12:00
只有文學上的價值 lol 那你改之前大概是秒懂型的code改完之後反而多花時間看template
作者: oneheat (等待)   2019-01-12 12:53:00
真的是小弟
作者: NDark (溺於黑暗)   2019-01-12 13:01:00
"你保證你架構比較好?" 其實用相同的邏輯可以駁倒你.
作者: DefTM (DefTM)   2019-01-12 13:49:00
覺得中肯 改什麼不重要 重要的是能替公司賺多少
作者: accessdenied (存取違規)   2019-01-12 16:29:00
推一個
作者: Ghamu (貓丸)   2019-01-12 17:38:00
重構本身不是輸出輸入不變 只是改改程式碼 拆分 增加可讀性嗎? 提升速度效能 那算是另一個事情吧?增加可讀性是有用的 因為很多開發時間都是在閱讀程式碼 解bug 實際寫全新code 的佔比不如想像中的多 命名那些 我以前也有心魔覺得不要亂改資深同事的 但看書說 就給她給下去吧~ 原因很簡單 寫那段code的人早忘記了 改好的話會感謝你
作者: iq1000x (台串彭于晏)   2019-01-12 18:54:00
改程式碼就有可能速度不一樣了啊 又不是只改命名…
作者: ChungLi5566 (中壢56哥)   2019-01-14 08:52:00
翻譯:耦合性 內聚性 每個人拿捏程度不一
作者: BoXeX (心愛騎士團異端審判騎士)   2019-01-14 22:29:00
想到前公司有段code寫得非常巧妙 物件化的很好結果大家常用的 debug 工具在那邊很難用變成最難維護的一段 code

Links booklink

Contact Us: admin [ a t ] ucptt.com