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

看板Soft_Job (軟體人)作者 (HANA)時間4周前 (2025/05/06 23:09), 編輯推噓42(42093)
留言135則, 54人參與, 3周前最新討論串14/19 (看更多)
※ 引述《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, 4周前 , 1F
推"尋寶遊戲"!XD
05/07 07:23, 1F

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

05/07 08:11, 4周前 , 3F
尋寶XDD
05/07 08:11, 3F

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

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

05/07 09:43, 4周前 , 6F
[自己] 是對的。
05/07 09:43, 6F

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

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

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

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

05/07 11:21, 4周前 , 11F
解這個意思了
05/07 11:21, 11F

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

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

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

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

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

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

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

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

05/07 11:45, 4周前 , 20F
的寫心酸的喔?
05/07 11:45, 20F

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

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

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

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

05/07 12:45, 4周前 , 25F
推 尋寶遊戲
05/07 12:45, 25F

05/07 12:51, 4周前 , 26F
太真實
05/07 12:51, 26F

05/07 13:04, 4周前 , 27F
尋寶遊戲,笑死
05/07 13:04, 27F

05/07 13:07, 4周前 , 28F
over design 了
05/07 13:07, 28F

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

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

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

05/07 14:13, 4周前 , 32F
重構
05/07 14:13, 32F

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

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

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

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

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

05/07 14:48, 4周前 , 38F
他可能以前是寫ejb的…
05/07 14:48, 38F

05/07 15:50, 4周前 , 39F
我也遇過一個,做了三個月,產出0,整天跟人吵架
05/07 15:50, 39F
還有 56 則推文
05/08 17:49, 4周前 , 96F
有原設計者看得懂,後人接到改個幾次覺得很怪就重新打
05/08 17:49, 96F

05/08 17:49, 4周前 , 97F
掉了,真正可以留下來後人會維護的code,反而都是沒什
05/08 17:49, 97F

05/08 17:49, 4周前 , 98F
麼抽象的架構的code
05/08 17:49, 98F

05/08 18:11, 4周前 , 99F
over design 真的不行
05/08 18:11, 99F

05/08 18:14, 4周前 , 100F
就跟正規化一樣 你過度正規化只會找自己麻煩而已且
05/08 18:14, 100F

05/08 18:14, 4周前 , 101F
沒必要
05/08 18:14, 101F

05/08 23:46, 3周前 , 102F
這只是你單純沒接手dependency management跟IDE吧
05/08 23:46, 102F

05/08 23:46, 3周前 , 103F
2個禮拜能做出來的東西 如何over design到看不懂
05/08 23:46, 103F

05/09 00:36, 3周前 , 104F
推跟過度正規化一樣+1
05/09 00:36, 104F

05/09 00:47, 3周前 , 105F
這叫the show
05/09 00:47, 105F

05/09 07:25, 3周前 , 106F
spring framework:.....我教的...
05/09 07:25, 106F

05/09 09:03, 3周前 , 107F
確實
05/09 09:03, 107F

05/09 09:58, 3周前 , 108F
凡事都加個interface,就spring 起的頭,然後蔓延出去.
05/09 09:58, 108F

05/09 17:24, 3周前 , 109F
一個 repo 只放一個 utils 是三小!
05/09 17:24, 109F

05/09 23:25, 3周前 , 110F
關spring啥事? 他實作通常不只一個好嗎...
05/09 23:25, 110F

05/09 23:58, 3周前 , 111F
其實選對 IDE 這些都不算是問題拉 認真的
05/09 23:58, 111F

05/09 23:59, 3周前 , 112F
大型專案,掛個十來個 dependancy 是家常便飯
05/09 23:59, 112F

05/10 00:04, 3周前 , 113F
不要搞不清楚概念亂設計,那種對 clean 一隻半解的才恐怖
05/10 00:04, 113F

05/10 00:06, 3周前 , 114F
遇過那種一個 lib 做抽象,然後實踐實作在各種 lib 中
05/10 00:06, 114F

05/10 00:07, 3周前 , 115F
的垃圾,開新 method 沒重複名稱功能全憑運氣
05/10 00:07, 115F

05/10 05:49, 3周前 , 116F
太多這種案例了 頭很痛
05/10 05:49, 116F

05/10 08:10, 3周前 , 117F
spring寫的通常實作確實一個居多 沒什麼多實作的應用
05/10 08:10, 117F

05/10 08:12, 3周前 , 118F
情境的
05/10 08:12, 118F

05/10 08:17, 3周前 , 119F
ide多專案切換就是個麻煩了 編譯執行debug都是麻煩
05/10 08:17, 119F

05/10 08:21, 3周前 , 120F
跨專案字串補全 搜檔案都是
05/10 08:21, 120F

05/10 08:27, 3周前 , 121F
界面開新method然後物件已經有該method?
05/10 08:27, 121F

05/10 08:36, 3周前 , 122F
沒聽懂你講什麼 這種東西應該是會報錯的
05/10 08:36, 122F

05/10 08:46, 3周前 , 123F
而且實作為何要獨立一包lib?
05/10 08:46, 123F

05/10 15:16, 3周前 , 124F
spring自己是很多interface,但用spring寫東西根本用不到
05/10 15:16, 124F

05/10 15:18, 3周前 , 125F
interface吧,spring的一個惡名不就是動態改你的class生成
05/10 15:18, 125F

05/10 15:18, 3周前 , 126F
proxy,實際在跑的bytecode跟你寫的東西不同嗎?
05/10 15:18, 126F

05/10 15:22, 3周前 , 127F
連直接呼叫的method都能被偷改了,幹麻用inteface?
05/10 15:22, 127F

05/10 20:53, 3周前 , 128F
最多是替換實現 執行時改原來的類需要一些java底層知
05/10 20:53, 128F

05/10 20:54, 3周前 , 129F
識 通常就只是外面套一層用反射去hack
05/10 20:54, 129F

05/11 11:04, 3周前 , 130F
搞不好他只是在練功 刻意練習
05/11 11:04, 130F

05/11 17:48, 3周前 , 131F
你是不是在臭某網紅?
05/11 17:48, 131F

05/11 21:19, 3周前 , 132F
KISS
05/11 21:19, 132F

05/12 16:02, 3周前 , 133F
(自己)
05/12 16:02, 133F

05/14 00:50, 3周前 , 134F
只有一個git repo跟很多repo 我支持很多repo....
05/14 00:50, 134F

05/14 00:50, 3周前 , 135F
All in one真的很噁心...
05/14 00:50, 135F
文章代碼(AID): #1e6fQyUr (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文
81
124
完整討論串 (本文為第 14 之 19 篇):
47
147
13
25
5
23
9
26
12
20
31
125
16
25
1
53
4
12
11
96
文章代碼(AID): #1e6fQyUr (Soft_Job)