Re: [討論] 寫程式的追求?

看板Soft_Job (軟體人)作者 (HANA)時間17小時前 (2025/05/07 07:09), 編輯推噓27(27048)
留言75則, 35人參與, 24分鐘前最新討論串14/14 (看更多)
※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1746572988.A.7B5.html

05/07 07:23, 17小時前 , 1F
推"尋寶遊戲"!XD
05/07 07:23, 1F

05/07 07:27, 17小時前 , 2F
確實,設計得亂七八糟但是連文件都不寫
05/07 07:27, 2F

05/07 08:11, 16小時前 , 3F
尋寶XDD
05/07 08:11, 3F

05/07 08:35, 16小時前 , 4F
哇... 高內聚低耦合已經不知道多少年沒聽到了...
05/07 08:35, 4F

05/07 09:30, 15小時前 , 5F
那依然是個很好的概念 只是要知道 過猶不及R
05/07 09:30, 5F

05/07 09:43, 15小時前 , 6F
[自己] 是對的。
05/07 09:43, 6F

05/07 09:50, 14小時前 , 7F
這種就Overengineering 我之前遇過一個同事也這樣
05/07 09:50, 7F

05/07 09:51, 14小時前 , 8F
要維護這種code有夠痛苦 跟義大利麵code半斤八兩
05/07 09:51, 8F

05/07 10:32, 14小時前 , 9F
我最後trace code是用全域搜尋 懶得找定義了 根本找不到
05/07 10:32, 9F

05/07 11:21, 13小時前 , 10F
這種設計以我的認知,根本不算好閱讀好維護,有些人曲
05/07 11:21, 10F

05/07 11:21, 13小時前 , 11F
解這個意思了
05/07 11:21, 11F

05/07 11:24, 13小時前 , 12F
過度拆分本身就導致維護管理困難,要跨一堆專案來看更
05/07 11:24, 12F

05/07 11:24, 13小時前 , 13F
稱不上好閱讀,有的人會因為書上或個人的強迫症導致變
05/07 11:24, 13F

05/07 11:24, 13小時前 , 14F
成這樣然後認為自己的東西很簡潔乾淨
05/07 11:24, 14F

05/07 11:44, 13小時前 , 15F
現在一堆人跟風什麼都 DI,全部都是 interface 找
05/07 11:44, 15F

05/07 11:44, 13小時前 , 16F
不到實作,找到後也會發現99%根本只有一個 class
05/07 11:44, 16F

05/07 11:44, 13小時前 , 17F
實作,浪費後人多少生命時間。
05/07 11:44, 17F

05/07 11:44, 13小時前 , 18F
而且 DI 的存在不就是為了單元測試隔離相依?結果這
05/07 11:44, 18F

05/07 11:45, 13小時前 , 19F
99%寫 DI 的專案裡根本完全沒有單元測試的專案!媽
05/07 11:45, 19F

05/07 11:45, 13小時前 , 20F
的寫心酸的喔?
05/07 11:45, 20F

05/07 12:21, 12小時前 , 21F
老實說我是覺得開發時程吃緊根本不用做什麼interface
05/07 12:21, 21F

05/07 12:21, 12小時前 , 22F
功能穩定跟拆多少沒太多關係...
05/07 12:21, 22F

05/07 12:39, 12小時前 , 23F
這篇真的有寫實
05/07 12:39, 23F

05/07 12:40, 12小時前 , 24F
沒文件的專案都是大便 文件很爛的專案跟大便沒兩樣
05/07 12:40, 24F

05/07 12:45, 12小時前 , 25F
推 尋寶遊戲
05/07 12:45, 25F

05/07 12:51, 11小時前 , 26F
太真實
05/07 12:51, 26F

05/07 13:04, 11小時前 , 27F
尋寶遊戲,笑死
05/07 13:04, 27F

05/07 13:07, 11小時前 , 28F
over design 了
05/07 13:07, 28F

05/07 14:09, 10小時前 , 29F
確實是過油不及啦 還是要抓平衡
05/07 14:09, 29F

05/07 14:13, 10小時前 , 30F
我最怕遇到接手一大堆搞自動化Gen code的神人專案
05/07 14:13, 30F

05/07 14:13, 10小時前 , 31F
,每次要改都不知道從哪裡改,結論就是一路擺爛到
05/07 14:13, 31F

05/07 14:13, 10小時前 , 32F
重構
05/07 14:13, 32F

05/07 14:42, 10小時前 , 33F
如果改一個功能七個 repo 都要動,那叫做高耦合。高
05/07 14:42, 33F

05/07 14:42, 10小時前 , 34F
內聚低耦合不是這樣搞的
05/07 14:42, 34F

05/07 14:42, 10小時前 , 35F
DI並不需要拆interface,最基本的用途應該是讓物件生命週期
05/07 14:42, 35F

05/07 14:42, 10小時前 , 36F
能跟著某個context又不用自己new,倒不完全是為了測試
05/07 14:42, 36F

05/07 14:43, 10小時前 , 37F
interface都是等有第二種實作再重構抽的
05/07 14:43, 37F

05/07 14:48, 9小時前 , 38F
他可能以前是寫ejb的…
05/07 14:48, 38F

05/07 15:50, 8小時前 , 39F
我也遇過一個,做了三個月,產出0,整天跟人吵架
05/07 15:50, 39F

05/07 17:38, 7小時前 , 40F
.NET的Mock Library幾乎都只能Mock interface跟
05/07 17:38, 40F

05/07 17:39, 7小時前 , 41F
virtual method,不然我也不想弄這麼多interface
05/07 17:39, 41F

05/07 17:55, 6小時前 , 42F
改個東西要了解七大密寶叫什麼低耦合?這完全是人的問題
05/07 17:55, 42F

05/07 17:56, 6小時前 , 43F
低耦合的標準 其實就看程式語言本身的功能就懂啦
05/07 17:56, 43F

05/07 17:59, 6小時前 , 44F
每天都在用一堆內建函式 完全不需要理解函式怎麼運作的吧
05/07 17:59, 44F

05/07 17:59, 6小時前 , 45F
只要知道用它會發生啥事就好 每個模組就應該設計成這樣
05/07 17:59, 45F

05/07 18:00, 6小時前 , 46F
沒辦法達成這種效果 低耦合都馬自己講
05/07 18:00, 46F

05/07 18:00, 6小時前 , 47F
所以之前才說 要搞敏捷 搞agile 搞clean code 搞設計模式
05/07 18:00, 47F

05/07 18:01, 6小時前 , 48F
不是你說了算 你說clean就clean?是要大家來吵架決定的
05/07 18:01, 48F

05/07 18:02, 6小時前 , 49F
真正好維護的code 就是團隊緊密溝通(吵架)才弄得出來的
05/07 18:02, 49F

05/07 18:02, 6小時前 , 50F
但是齁 基本上工程師都馬文人相輕啦 看不起別人 都覺得別
05/07 18:02, 50F

05/07 18:02, 6小時前 , 51F
人寫得都垃圾 又自以為最聰明 其它人都低能 大頭症工程師
05/07 18:02, 51F

05/07 18:03, 6小時前 , 52F
滿街都是 這樣態度要合作?要吵架?有得吵了 呵呵
05/07 18:03, 52F

05/07 18:03, 6小時前 , 53F
吵到最後還有EQ不好的開始砍人勒 怕爆
05/07 18:03, 53F

05/07 18:56, 5小時前 , 54F
兩週的工作量 可以弄到8個 也是人才
05/07 18:56, 54F

05/07 20:05, 4小時前 , 55F
這個設計是為了以後團隊成長到幾萬人在開發這個專案
05/07 20:05, 55F

05/07 20:07, 4小時前 , 56F
很同意前幾樓說的,DI本來可以方便測試,結果一個
05/07 20:07, 56F

05/07 20:07, 4小時前 , 57F
測試也沒見到,XD
05/07 20:07, 57F

05/07 20:08, 4小時前 , 58F
8個repo算少了,我接手過一個single page app快100 repo
05/07 20:08, 58F

05/07 20:10, 4小時前 , 59F
大量的DI,說要重複使用,各種抽換
05/07 20:10, 59F

05/07 20:11, 4小時前 , 60F
結果連angular升版都做不到,整個砍掉重做
05/07 20:11, 60F

05/07 20:11, 4小時前 , 61F
(原作者做不到)
05/07 20:11, 61F

05/07 21:50, 2小時前 , 62F
拆越多通常問題也越多,比那種幾千行的還難維護
05/07 21:50, 62F

05/07 22:12, 2小時前 , 63F
尋寶遊戲,笑死
05/07 22:12, 63F

05/07 22:54, 1小時前 , 64F
功能本來就要做成顯示調用 隱藏實作細節的沒有不是垃
05/07 22:54, 64F

05/07 22:56, 1小時前 , 65F
等到規模夠大才有差
05/07 22:56, 65F

05/07 22:56, 1小時前 , 66F
圾的 難以追蹤也學不到東西 很可惜很多語言的DI是隱
05/07 22:56, 66F

05/07 22:58, 1小時前 , 67F
式的 好的程式就是minimal外加不寫死保留點彈性
05/07 22:58, 67F

05/07 23:02, 1小時前 , 68F
簡單來講就是可愛 但不利不被取代 主要是做成lib而非
05/07 23:02, 68F

05/07 23:04, 1小時前 , 69F
弄微服務 這東西多數人用不到 全用http也很驚悚
05/07 23:04, 69F

05/08 00:20, 27分鐘前 , 70F
這種就標準過度設計,殺雞用牛刀...
05/08 00:20, 70F

05/08 00:22, 25分鐘前 , 71F
這篇很寫實XD
05/08 00:22, 71F

05/08 00:23, 24分鐘前 , 72F
我超討厭微服務的 服務夠大就會拆部門了啊 等到那時候再
05/08 00:23, 72F

05/08 00:23, 24分鐘前 , 73F
拆就好了 除非是業務需求需要切出去 (例如某個服務預期
05/08 00:23, 73F

05/08 00:23, 24分鐘前 , 74F
會有大量流量要擴展) 現在一堆為拆而拆的 真的找 log 都
05/08 00:23, 74F

05/08 00:23, 24分鐘前 , 75F
跟在找大秘寶一樣...
05/08 00:23, 75F
文章代碼(AID): #1e6fQyUr (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1e6fQyUr (Soft_Job)