Soft_Job 板


LINE

※ 引述《neo5277 (I am an agent of chaos)》之銘言: : 純粹對工作上來說 : 好抽換,好接手(易閱讀),好維護(包含升級,測試 好接手,易閱讀… 我想到一個故事 幾年前有個同事,號稱國中時期就開始接案寫代碼 clean code,DDD滾瓜爛熟,對coding極度潔癖 印象比較深的是入職時說了句:我看到不規範的代碼會非常生氣 上工第一案子,設計一個工具網站,拆了七個GitHub repo Micro services, grpc當年流行的工具全套了一輪 說是將低耦合,高內聚做到極致 其中一個repo 甚至只放了一個utils 後來來了另一個人接手 改個功能要先看懂七個repo之間關聯,跟找大秘寶似的 在review code階段,還埋個彩蛋,發現了隱藏的第八個repo 新來的同事說改不動了,就算加個menu都很麻煩 心一橫,提案該網站功能也不複雜,全部打掉重做 就自己埋頭花了兩週重做了那個網站加遷移 工程師追求的很簡單,(自己)好閱讀,(自己)好維護就行了 ----- Sent from JPTT on my iPhone --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.179.86 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1746572988.A.7B5.html
1F:推 marra: 推"尋寶遊戲"!XD 05/07 07:23
2F:→ nh60211as: 確實,設計得亂七八糟但是連文件都不寫 05/07 07:27
3F:推 lianpig5566: 尋寶XDD 05/07 08:11
4F:→ gname: 哇... 高內聚低耦合已經不知道多少年沒聽到了... 05/07 08:35
5F:→ Ekmund: 那依然是個很好的概念 只是要知道 過猶不及R 05/07 09:30
6F:推 Lordaeron: [自己] 是對的。 05/07 09:43
7F:推 kurtsgm: 這種就Overengineering 我之前遇過一個同事也這樣 05/07 09:50
8F:→ kurtsgm: 要維護這種code有夠痛苦 跟義大利麵code半斤八兩 05/07 09:51
9F:推 VScode: 我最後trace code是用全域搜尋 懶得找定義了 根本找不到 05/07 10:32
10F:推 ypps6055: 這種設計以我的認知,根本不算好閱讀好維護,有些人曲 05/07 11:21
11F:→ ypps6055: 解這個意思了 05/07 11:21
12F:→ ypps6055: 過度拆分本身就導致維護管理困難,要跨一堆專案來看更 05/07 11:24
13F:→ ypps6055: 稱不上好閱讀,有的人會因為書上或個人的強迫症導致變 05/07 11:24
14F:→ ypps6055: 成這樣然後認為自己的東西很簡潔乾淨 05/07 11:24
15F:推 accessdenied: 現在一堆人跟風什麼都 DI,全部都是 interface 找 05/07 11:44
16F:→ accessdenied: 不到實作,找到後也會發現99%根本只有一個 class 05/07 11:44
17F:→ accessdenied: 實作,浪費後人多少生命時間。 05/07 11:44
18F:→ accessdenied: 而且 DI 的存在不就是為了單元測試隔離相依?結果這 05/07 11:44
19F:→ accessdenied: 99%寫 DI 的專案裡根本完全沒有單元測試的專案!媽 05/07 11:45
20F:→ accessdenied: 的寫心酸的喔? 05/07 11:45
21F:推 TPAsavelove: 老實說我是覺得開發時程吃緊根本不用做什麼interface 05/07 12:21
22F:→ TPAsavelove: 功能穩定跟拆多少沒太多關係... 05/07 12:21
23F:推 lonelytea: 這篇真的有寫實 05/07 12:39
24F:推 zyxx: 沒文件的專案都是大便 文件很爛的專案跟大便沒兩樣 05/07 12:40
25F:推 ck237: 推 尋寶遊戲 05/07 12:45
26F:推 stepnight: 太真實 05/07 12:51
27F:推 Lhmstu: 尋寶遊戲,笑死 05/07 13:04
28F:→ Lipraxde: over design 了 05/07 13:07
29F:推 k7ji91ab5m: 確實是過油不及啦 還是要抓平衡 05/07 14:09
30F:推 kuosos520: 我最怕遇到接手一大堆搞自動化Gen code的神人專案 05/07 14:13
31F:→ kuosos520: ,每次要改都不知道從哪裡改,結論就是一路擺爛到 05/07 14:13
32F:→ kuosos520: 重構 05/07 14:13
33F:→ tofuflower: 如果改一個功能七個 repo 都要動,那叫做高耦合。高 05/07 14:42
34F:→ tofuflower: 內聚低耦合不是這樣搞的 05/07 14:42
35F:→ ssccg: DI並不需要拆interface,最基本的用途應該是讓物件生命週期 05/07 14:42
36F:→ ssccg: 能跟著某個context又不用自己new,倒不完全是為了測試 05/07 14:42
37F:→ ssccg: interface都是等有第二種實作再重構抽的 05/07 14:43
38F:推 SHANGOYANYI: 他可能以前是寫ejb的… 05/07 14:48
39F:推 kattte: 我也遇過一個,做了三個月,產出0,整天跟人吵架 05/07 15:50
40F:→ devilkool: .NET的Mock Library幾乎都只能Mock interface跟 05/07 17:38
41F:→ devilkool: virtual method,不然我也不想弄這麼多interface 05/07 17:39
42F:推 strlen: 改個東西要了解七大密寶叫什麼低耦合?這完全是人的問題 05/07 17:55
43F:→ strlen: 低耦合的標準 其實就看程式語言本身的功能就懂啦 05/07 17:56
44F:→ strlen: 每天都在用一堆內建函式 完全不需要理解函式怎麼運作的吧 05/07 17:59
45F:→ strlen: 只要知道用它會發生啥事就好 每個模組就應該設計成這樣 05/07 17:59
46F:→ strlen: 沒辦法達成這種效果 低耦合都馬自己講 05/07 18:00
47F:→ strlen: 所以之前才說 要搞敏捷 搞agile 搞clean code 搞設計模式 05/07 18:00
48F:→ strlen: 不是你說了算 你說clean就clean?是要大家來吵架決定的 05/07 18:01
49F:→ strlen: 真正好維護的code 就是團隊緊密溝通(吵架)才弄得出來的 05/07 18:02
50F:→ strlen: 但是齁 基本上工程師都馬文人相輕啦 看不起別人 都覺得別 05/07 18:02
51F:→ strlen: 人寫得都垃圾 又自以為最聰明 其它人都低能 大頭症工程師 05/07 18:02
52F:→ strlen: 滿街都是 這樣態度要合作?要吵架?有得吵了 呵呵 05/07 18:03
53F:→ strlen: 吵到最後還有EQ不好的開始砍人勒 怕爆 05/07 18:03
54F:推 qwe78971: 兩週的工作量 可以弄到8個 也是人才 05/07 18:56
55F:推 luke72: 這個設計是為了以後團隊成長到幾萬人在開發這個專案 05/07 20:05
56F:推 internetms52: 很同意前幾樓說的,DI本來可以方便測試,結果一個 05/07 20:07
57F:→ internetms52: 測試也沒見到,XD 05/07 20:07
58F:推 luke72: 8個repo算少了,我接手過一個single page app快100 repo 05/07 20:08
59F:→ luke72: 大量的DI,說要重複使用,各種抽換 05/07 20:10
60F:→ luke72: 結果連angular升版都做不到,整個砍掉重做 05/07 20:11
61F:→ luke72: (原作者做不到) 05/07 20:11
62F:推 abccbaandy: 拆越多通常問題也越多,比那種幾千行的還難維護 05/07 21:50
63F:推 brianwu1201: 尋寶遊戲,笑死 05/07 22:12
64F:→ superpandal: 功能本來就要做成顯示調用 隱藏實作細節的沒有不是垃 05/07 22:54
65F:→ shooter555: 等到規模夠大才有差 05/07 22:56
66F:→ superpandal: 圾的 難以追蹤也學不到東西 很可惜很多語言的DI是隱 05/07 22:56
67F:→ superpandal: 式的 好的程式就是minimal外加不寫死保留點彈性 05/07 22:58
68F:→ superpandal: 簡單來講就是可愛 但不利不被取代 主要是做成lib而非 05/07 23:02
69F:→ superpandal: 弄微服務 這東西多數人用不到 全用http也很驚悚 05/07 23:04
70F:推 viper9709: 這種就標準過度設計,殺雞用牛刀... 05/08 00:20
71F:推 umidaisuki: 這篇很寫實XD 05/08 00:22
72F:推 yuidzeon: 我超討厭微服務的 服務夠大就會拆部門了啊 等到那時候再 05/08 00:23
73F:→ yuidzeon: 拆就好了 除非是業務需求需要切出去 (例如某個服務預期 05/08 00:23
74F:→ yuidzeon: 會有大量流量要擴展) 現在一堆為拆而拆的 真的找 log 都 05/08 00:23
75F:→ yuidzeon: 跟在找大秘寶一樣... 05/08 00:23
76F:→ saladim: 會寫function+struct就很神了 真的 不止寫code 還有一堆 05/08 02:52
77F:→ saladim: 流程之神 加個三層檢查才能進code, 解個bug開新branch 搞 05/08 02:54
78F:→ saladim: 很多毛 有兩層做的有效的話就很好了 05/08 02:55
79F:推 leftless: cleancode前幾頁就說寫程式是社交活動 然後他只會生氣 05/08 03:04
80F:→ leftless: 叫他會去重看 05/08 03:05
81F:推 marra: "是要大家來吵架決定的" XD 05/08 04:17
82F:→ strlen: 我自己是覺得不要眼高手低啦 能讓你慢慢吵架寫一個超讚程 05/08 10:28
83F:→ strlen: 式的環境幾乎不存在 大家平常忙死了誰要管你啊 如果你是香 05/08 10:29
84F:→ strlen: 香妹子工程師那還願意花點時間跟你交流交流 但平常遇到都 05/08 10:29
85F:→ strlen: 馬肥宅佔九成 說個話都能聞到口臭 誰想蕉流 05/08 10:30
86F:→ strlen: 所以還是照著團隊的寫法跟著寫 絕不會錯 05/08 10:30
87F:→ strlen: 大家怎麼寫 你就模仿大家怎麼寫 不要在那邊亂 標新立異 05/08 10:31
88F:→ strlen: 要搞東搞西你的理想國自己side project愛怎玩就怎玩 05/08 10:31
89F:推 gino0717: 桑原老師說過 架是要兩個人才能吵的 05/08 11:55
90F:→ Suleika: 這就是標準的over design看過書不可能做出這種東西 05/08 12:36
91F:推 transforman: 大祕寶XD 05/08 14:38
92F:推 as6633208: 這個叫架構魔怔,設計時都會說擴充多方便,實際上擴充 05/08 17:46
93F:→ as6633208: 次數不到兩次,然後要加個新功能極為麻煩 05/08 17:46
94F:→ as6633208: 重劍無鋒,大巧不工,越是符合原生的應用,邏輯越簡單 05/08 17:49
95F:→ as6633208: 又能達到目標越好,抽象注入太多一堆魔怔,最後都是只 05/08 17:49
96F:→ as6633208: 有原設計者看得懂,後人接到改個幾次覺得很怪就重新打 05/08 17:49
97F:→ as6633208: 掉了,真正可以留下來後人會維護的code,反而都是沒什 05/08 17:49
98F:→ as6633208: 麼抽象的架構的code 05/08 17:49
99F:推 tsaigi: over design 真的不行 05/08 18:11
100F:推 awenracious: 就跟正規化一樣 你過度正規化只會找自己麻煩而已且 05/08 18:14
101F:→ awenracious: 沒必要 05/08 18:14
102F:→ alan3100: 這只是你單純沒接手dependency management跟IDE吧 05/08 23:46
103F:→ alan3100: 2個禮拜能做出來的東西 如何over design到看不懂 05/08 23:46
104F:推 viper9709: 推跟過度正規化一樣+1 05/09 00:36
105F:推 jen1121: 這叫the show 05/09 00:47
106F:→ Lordaeron: spring framework:.....我教的... 05/09 07:25
107F:推 Csongs: 確實 05/09 09:03
108F:→ Lordaeron: 凡事都加個interface,就spring 起的頭,然後蔓延出去. 05/09 09:58
109F:→ b85040312: 一個 repo 只放一個 utils 是三小! 05/09 17:24
110F:推 abccbaandy: 關spring啥事? 他實作通常不只一個好嗎... 05/09 23:25
111F:→ acgotaku: 其實選對 IDE 這些都不算是問題拉 認真的 05/09 23:58
112F:→ acgotaku: 大型專案,掛個十來個 dependancy 是家常便飯 05/09 23:59
113F:→ acgotaku: 不要搞不清楚概念亂設計,那種對 clean 一隻半解的才恐怖 05/10 00:04
114F:→ acgotaku: 遇過那種一個 lib 做抽象,然後實踐實作在各種 lib 中 05/10 00:06
115F:→ acgotaku: 的垃圾,開新 method 沒重複名稱功能全憑運氣 05/10 00:07
116F:推 notimenofree: 太多這種案例了 頭很痛 05/10 05:49
117F:→ superpandal: spring寫的通常實作確實一個居多 沒什麼多實作的應用 05/10 08:10
118F:→ superpandal: 情境的 05/10 08:12
119F:→ superpandal: ide多專案切換就是個麻煩了 編譯執行debug都是麻煩 05/10 08:17
120F:→ superpandal: 跨專案字串補全 搜檔案都是 05/10 08:21
121F:→ superpandal: 界面開新method然後物件已經有該method? 05/10 08:27
122F:→ superpandal: 沒聽懂你講什麼 這種東西應該是會報錯的 05/10 08:36
123F:→ superpandal: 而且實作為何要獨立一包lib? 05/10 08:46
124F:→ ssccg: spring自己是很多interface,但用spring寫東西根本用不到 05/10 15:16
125F:→ ssccg: interface吧,spring的一個惡名不就是動態改你的class生成 05/10 15:18
126F:→ ssccg: proxy,實際在跑的bytecode跟你寫的東西不同嗎? 05/10 15:18
127F:→ ssccg: 連直接呼叫的method都能被偷改了,幹麻用inteface? 05/10 15:22
128F:→ superpandal: 最多是替換實現 執行時改原來的類需要一些java底層知 05/10 20:53
129F:→ superpandal: 識 通常就只是外面套一層用反射去hack 05/10 20:54
130F:→ TaiwanUp: 搞不好他只是在練功 刻意練習 05/11 11:04
131F:推 pttano: 你是不是在臭某網紅? 05/11 17:48
132F:推 jackypan1989: KISS 05/11 21:19
133F:→ SuperTaco: (自己) 05/12 16:02
134F:推 fish0112: 只有一個git repo跟很多repo 我支持很多repo.... 05/14 00:50
135F:→ fish0112: All in one真的很噁心... 05/14 00:50







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP