Re: [討論] 一段想重構的程式碼
※ 引述《yauhh (喲)》之銘言:
: 推 typepeter:如果只是二個,就沒差 問題是重複的Bug,就很慘 07/25 23:56
: → yauhh:怎麼會沒差呢? 你可要在50~60個classes中,認得有2個共用func 07/26 00:00
: → typepeter:完全一樣的動作建議還是抽出,copy/paste除錯會更慘 07/26 00:00
: → yauhh:光是要花費在記憶這種特例的精神,就讓人怨恨死你了. 07/26 00:01
: → typepeter:今天若是二個function,不抽共同邏輯沒關係 多個,很慘 07/26 00:01
: → typepeter:如果paste全部都是copy/paste的動作,將有大量時間浪費 07/26 00:02
: → yauhh:除非你具有獨立性質的邏輯抽出來做個單元,是有用的. 07/26 00:02
: → typepeter:所以我提到的是: 是可以獨立的邏輯,抽出共同邏輯 07/26 00:03
: → yauhh:或者趁幾次修改時,將新加的碼放在獨立的單元中. 07/26 00:04
: → typepeter:不然一樣的邏輯問題 又要去改數個拷貝貼上的重複 很慘 07/26 00:04
: → yauhh:但是,應該要搞清楚這是在工作. 重構是為了工作,還是為了高興 07/26 00:05
: → typepeter:工作效率其實可以從減少浪費時間作起 07/26 00:05
: → typepeter:如果一樣是作事情,建議可以減少機械動作 07/26 00:06
: → yauhh:那你最好算一算,到底減少浪費了多久時間. 07/26 00:06
: → typepeter:如果你漏了改某個地方呢? 那之後還要debug 07/26 00:07
: → typepeter:這是bad smell之中最為人知的其中一個: duplicated code 07/26 00:07
: → typepeter:算上機械動作,加上檢查是否漏改,以及漏改的debug時間 07/26 00:11
: → typepeter:應該減少duplicated code會比較節省時間 07/26 00:11
: → typepeter:此外,若沒有抽共同邏輯 同一個邏輯將會發展無數版本 07/26 00:16
: → typepeter:之後光是閱讀及維護 可能要找出原本的同樣debug,就累死 07/26 00:16
你寫得這樣落落長,我的感覺是,前文中你說 "想說尊重一下主管好了"
其實根本沒有尊重,其實你就是覺得,雖然你的想法還沒實現,但就是覺得你自己對嘛.
所以別人的建議,你根本沒看. 那又何必來此貼文或推文討論呢?
我最近就遭遇一個情況,跟你這事情一樣, class a 和 class b 有一段程式完全相同.
但是,經過一番折騰,後來更明確知道的是,二個 class 執行的環境不一樣.
一個程式執行在網站上,而另一個程式執行在Windows排程中.
因為相信二個程式相同,所以前人在修改 class a 的 func 時, 同時也修改 class b
的 func. 而因為相信二個程式是一樣的,所以修改方式就是從 class a func 整段複製
然後轉貼到 class b func, 而且沒有測試 class b.
最近,我發現 class b 存在問題,是因為 class a func 中加了XSS檢查,而XSS檢查是
有去取網站的設定參數. 這就造成 class b 的問題了. class b 執行環境中並沒有
網站設定參數可查,而程式的寫法是當XSS檢查無效時,傳回的資料是空值.
value = xssCheck(value);
在這種情況,該死的就是 *相信二段程式邏輯相同* 所以就直接貼而不做個別驗證.
雖然這個情況不是像你所做的,把二個 func 抽出來做成同一個,但是,我就做了跟你
所講的一模一樣的事情,我把二個 func 共同的一段邏輯拿出來放到 class c 的 func.
但重點就是 class a 和 class b 執行環境不同,所以這樣做是很難維護的.
而且這給我造成的麻煩是,後來知道 class b 是獨立的執行環境,本來我只是做了
改改程式的動作,但是後來卻要思考如何部署的問題.
同理,你硬要把 class a 和 class b 拉出共同的 func, 說這樣子很好 debug,
那就祝你好運. 但是,最重要的是要勸你,要正視工作,工作是有責任的; 你今天這樣
做下去,假如將來減少了維護的效益,你應該要有相同的行動力承擔錯誤並且為事情
負責. 否則,像你現在這樣輕忽地嗤笑著 legacy code, 其實很多小朋友都如此狂妄,
但是,卻對於程式結構突然大調整,影響到同事及主管的認知,不帶著一點歉意,
這說不過去.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.226.96.67
※ 編輯: yauhh 來自: 36.226.96.67 (07/27 22:18)
推
07/27 22:43, , 1F
07/27 22:43, 1F
→
07/27 22:43, , 2F
07/27 22:43, 2F
→
07/27 22:43, , 3F
07/27 22:43, 3F
推
07/27 22:47, , 4F
07/27 22:47, 4F
推
07/27 23:21, , 5F
07/27 23:21, 5F
→
07/27 23:22, , 6F
07/27 23:22, 6F
→
07/27 23:23, , 7F
07/27 23:23, 7F
→
07/27 23:24, , 8F
07/27 23:24, 8F
→
07/27 23:24, , 9F
07/27 23:24, 9F
→
07/27 23:25, , 10F
07/27 23:25, 10F
→
07/27 23:30, , 11F
07/27 23:30, 11F
→
07/27 23:31, , 12F
07/27 23:31, 12F
→
07/27 23:32, , 13F
07/27 23:32, 13F
→
07/27 23:37, , 14F
07/27 23:37, 14F
→
07/27 23:38, , 15F
07/27 23:38, 15F
→
07/27 23:39, , 16F
07/27 23:39, 16F
→
07/28 00:53, , 17F
07/28 00:53, 17F
→
07/28 00:53, , 18F
07/28 00:53, 18F
→
07/28 00:54, , 19F
07/28 00:54, 19F
→
07/28 00:54, , 20F
07/28 00:54, 20F
→
07/28 00:54, , 21F
07/28 00:54, 21F
→
07/28 00:54, , 22F
07/28 00:54, 22F
→
07/28 00:55, , 23F
07/28 00:55, 23F
→
07/28 00:56, , 24F
07/28 00:56, 24F
→
07/28 00:57, , 25F
07/28 00:57, 25F
→
07/28 00:57, , 26F
07/28 00:57, 26F
→
07/28 01:03, , 27F
07/28 01:03, 27F
→
07/28 01:10, , 28F
07/28 01:10, 28F
→
07/28 01:11, , 29F
07/28 01:11, 29F
→
07/28 01:12, , 30F
07/28 01:12, 30F
→
07/28 01:13, , 31F
07/28 01:13, 31F
→
07/28 01:14, , 32F
07/28 01:14, 32F
→
07/28 01:14, , 33F
07/28 01:14, 33F
→
07/28 01:31, , 34F
07/28 01:31, 34F
→
07/28 01:32, , 35F
07/28 01:32, 35F
→
07/28 01:33, , 36F
07/28 01:33, 36F
→
07/28 01:35, , 37F
07/28 01:35, 37F
→
07/28 01:39, , 38F
07/28 01:39, 38F
→
07/28 01:41, , 39F
07/28 01:41, 39F
→
07/28 01:42, , 40F
07/28 01:42, 40F
→
07/28 01:43, , 41F
07/28 01:43, 41F
→
07/28 01:43, , 42F
07/28 01:43, 42F
→
07/28 06:53, , 43F
07/28 06:53, 43F
→
07/28 09:32, , 44F
07/28 09:32, 44F
→
07/28 12:42, , 45F
07/28 12:42, 45F
→
07/28 12:42, , 46F
07/28 12:42, 46F
討論串 (同標題文章)
本文引述了以下文章的的內容:
討論
1
20
以下文章回應了本文:
完整討論串 (本文為第 9 之 10 篇):
討論
19
127
討論
1
16
討論
1
20
討論
7
33
討論
6
13
討論
3
46