Re: [討論] 寫程式的追求?
※ 引述《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
--
推"尋寶遊戲"!XD
確實,設計得亂七八糟但是連文件都不寫
尋寶XDD
哇... 高內聚低耦合已經不知道多少年沒聽到了...
那依然是個很好的概念 只是要知道 過猶不及R
[自己] 是對的。
這種就Overengineering 我之前遇過一個同事也這樣
要維護這種code有夠痛苦 跟義大利麵code半斤八兩
我最後trace code是用全域搜尋 懶得找定義了 根本找不到
這種設計以我的認知,根本不算好閱讀好維護,有些人曲
解這個意思了
過度拆分本身就導致維護管理困難,要跨一堆專案來看更
稱不上好閱讀,有的人會因為書上或個人的強迫症導致變
成這樣然後認為自己的東西很簡潔乾淨
現在一堆人跟風什麼都 DI,全部都是 interface 找
不到實作,找到後也會發現99%根本只有一個 class
實作,浪費後人多少生命時間。
而且 DI 的存在不就是為了單元測試隔離相依?結果這
99%寫 DI 的專案裡根本完全沒有單元測試的專案!媽
的寫心酸的喔?
老實說我是覺得開發時程吃緊根本不用做什麼interface
功能穩定跟拆多少沒太多關係...
這篇真的有寫實
沒文件的專案都是大便 文件很爛的專案跟大便沒兩樣
推 尋寶遊戲
太真實
尋寶遊戲,笑死
over design 了
確實是過油不及啦 還是要抓平衡
我最怕遇到接手一大堆搞自動化Gen code的神人專案
,每次要改都不知道從哪裡改,結論就是一路擺爛到
重構
如果改一個功能七個 repo 都要動,那叫做高耦合。高
內聚低耦合不是這樣搞的
DI並不需要拆interface,最基本的用途應該是讓物件生命週期
能跟著某個context又不用自己new,倒不完全是為了測試
interface都是等有第二種實作再重構抽的
他可能以前是寫ejb的…
我也遇過一個,做了三個月,產出0,整天跟人吵架
.NET的Mock Library幾乎都只能Mock interface跟
virtual method,不然我也不想弄這麼多interface
改個東西要了解七大密寶叫什麼低耦合?這完全是人的問題
低耦合的標準 其實就看程式語言本身的功能就懂啦
每天都在用一堆內建函式 完全不需要理解函式怎麼運作的吧
只要知道用它會發生啥事就好 每個模組就應該設計成這樣
沒辦法達成這種效果 低耦合都馬自己講
所以之前才說 要搞敏捷 搞agile 搞clean code 搞設計模式
不是你說了算 你說clean就clean?是要大家來吵架決定的
真正好維護的code 就是團隊緊密溝通(吵架)才弄得出來的
但是齁 基本上工程師都馬文人相輕啦 看不起別人 都覺得別
人寫得都垃圾 又自以為最聰明 其它人都低能 大頭症工程師
滿街都是 這樣態度要合作?要吵架?有得吵了 呵呵
吵到最後還有EQ不好的開始砍人勒 怕爆
兩週的工作量 可以弄到8個 也是人才
這個設計是為了以後團隊成長到幾萬人在開發這個專案
很同意前幾樓說的,DI本來可以方便測試,結果一個
測試也沒見到,XD
8個repo算少了,我接手過一個single page app快100 repo
大量的DI,說要重複使用,各種抽換
結果連angular升版都做不到,整個砍掉重做
(原作者做不到)
拆越多通常問題也越多,比那種幾千行的還難維護
尋寶遊戲,笑死
功能本來就要做成顯示調用 隱藏實作細節的沒有不是垃
等到規模夠大才有差
圾的 難以追蹤也學不到東西 很可惜很多語言的DI是隱
式的 好的程式就是minimal外加不寫死保留點彈性
簡單來講就是可愛 但不利不被取代 主要是做成lib而非
弄微服務 這東西多數人用不到 全用http也很驚悚
這種就標準過度設計,殺雞用牛刀...
這篇很寫實XD
我超討厭微服務的 服務夠大就會拆部門了啊 等到那時候再
拆就好了 除非是業務需求需要切出去 (例如某個服務預期
會有大量流量要擴展) 現在一堆為拆而拆的 真的找 log 都
跟在找大秘寶一樣...
會寫function+struct就很神了 真的 不止寫code 還有一堆
流程之神 加個三層檢查才能進code, 解個bug開新branch 搞
很多毛 有兩層做的有效的話就很好了
cleancode前幾頁就說寫程式是社交活動 然後他只會生氣
叫他會去重看
"是要大家來吵架決定的" XD
我自己是覺得不要眼高手低啦 能讓你慢慢吵架寫一個超讚程
式的環境幾乎不存在 大家平常忙死了誰要管你啊 如果你是香
香妹子工程師那還願意花點時間跟你交流交流 但平常遇到都
馬肥宅佔九成 說個話都能聞到口臭 誰想蕉流
所以還是照著團隊的寫法跟著寫 絕不會錯
大家怎麼寫 你就模仿大家怎麼寫 不要在那邊亂 標新立異
要搞東搞西你的理想國自己side project愛怎玩就怎玩
桑原老師說過 架是要兩個人才能吵的
這就是標準的over design看過書不可能做出這種東西
大祕寶XD
這個叫架構魔怔,設計時都會說擴充多方便,實際上擴充
次數不到兩次,然後要加個新功能極為麻煩
重劍無鋒,大巧不工,越是符合原生的應用,邏輯越簡單
又能達到目標越好,抽象注入太多一堆魔怔,最後都是只
有原設計者看得懂,後人接到改個幾次覺得很怪就重新打
掉了,真正可以留下來後人會維護的code,反而都是沒什
麼抽象的架構的code
over design 真的不行
就跟正規化一樣 你過度正規化只會找自己麻煩而已且
沒必要
這只是你單純沒接手dependency management跟IDE吧
2個禮拜能做出來的東西 如何over design到看不懂
推跟過度正規化一樣+1
這叫the show
spring framework:.....我教的...
確實
凡事都加個interface,就spring 起的頭,然後蔓延出去.
一個 repo 只放一個 utils 是三小!
關spring啥事? 他實作通常不只一個好嗎...
其實選對 IDE 這些都不算是問題拉 認真的
大型專案,掛個十來個 dependancy 是家常便飯
不要搞不清楚概念亂設計,那種對 clean 一隻半解的才恐怖
遇過那種一個 lib 做抽象,然後實踐實作在各種 lib 中
的垃圾,開新 method 沒重複名稱功能全憑運氣
太多這種案例了 頭很痛
spring寫的通常實作確實一個居多 沒什麼多實作的應用
情境的
ide多專案切換就是個麻煩了 編譯執行debug都是麻煩
跨專案字串補全 搜檔案都是
界面開新method然後物件已經有該method?
沒聽懂你講什麼 這種東西應該是會報錯的
而且實作為何要獨立一包lib?
spring自己是很多interface,但用spring寫東西根本用不到
interface吧,spring的一個惡名不就是動態改你的class生成
proxy,實際在跑的bytecode跟你寫的東西不同嗎?
連直接呼叫的method都能被偷改了,幹麻用inteface?
最多是替換實現 執行時改原來的類需要一些java底層知
識 通常就只是外面套一層用反射去hack
32
首Po寫程式不知不覺也一年半了 看著公司龐大的老舊程式 前人寫的實在雜亂 造成了維護上有一定難度 最近有心想要嘗試從簡單的地方開始試著重構4
程式人最重要的追求 應該是創造良好就業環境 本來一個人的工作 變成三個人做 三個人的工作要一個部門做![Re: [討論] 寫程式的追求? Re: [討論] 寫程式的追求?](https://i.imgur.com/JAcuIOSb.jpeg)
這幾年AI流行 只要你訂好條件,清楚流程,然後約束修改窗口──你清楚你在做什麼 AI幾乎能產出100%正確的程式碼 並且功能清晰,命名合理,還加上一堆註釋 工作流程幾乎就是讓AI生成程式碼,閱讀程式碼,對一些細節做修改4
: : 這幾年AI流行 : 只要你訂好條件,清楚流程,然後約束修改窗口──你清楚你在做什麼 : AI幾乎能產出100%正確的程式碼 : 並且功能清晰,命名合理,還加上一堆註釋11
OK,你說得很有道理,AI 會產測試。 假設你要實作的邏輯不複雜,不罕見, 因此 AI 可以讓你用少少的口語產出字數更多的程式碼及測試好了, 那我就想問,是什麼樣的測試程式? 姑且不論常常被忽略的非用途面驗證好了,光是用途面的驗證就有很多種。3
你會這樣想只有幾種可能 1.過太爽 2.年輕人認為可以學的到東西 3.單身 基本上重構對公司是沒產值的 不知道你有沒有看過一張圖3
純粹對工作上來說 好抽換,好接手(易閱讀),好維護(包含升級,測試) 工作,這樣就很夠了阿,大家一起輕輕鬆鬆,工作之餘聚餐風花雪月。 回家,陪老婆,陪女兒不好嗎? 工作又不是人生的全部![Re: [討論] 寫程式的追求? Re: [討論] 寫程式的追求?](https://i.imgur.com/KDk3kmpb.jpeg)
4
嗯,這三點很因人、因時、因事、因心情而異。 就像李白好還是杜甫好? 金庸好還是古龍好? Chaos 好? --6
我應該也算軟體工程師吧 在電子廠專門用LabVIEW幫實驗室寫自動測試程式。連續寫了十六年。 體驗所謂人生三階段。 看山是山,看山不是山,看山還是山。 第一階段,只追程式會動,能用就好。就算有問題,硬解。遇到什麼不會,就去學什麼。23
看到你的故事,讓我想起好多當年犯過的錯誤 : 幾年前有個同事,號稱國中時期就開始接案寫代碼 : clean code,DDD滾瓜爛熟,對coding極度潔癖 : 印象比較深的是入職時說了句:我看到不規範的代碼會非常生氣 我年輕的時候也這樣,但做久了慢慢可以理解凡事都是 trade-off
爆
Re: [爆卦] 國中科展天才呂同學,就是唐鳳2.0無誤!嗨我剛剛把影片看完了 簡單來說他這段演講在介紹他學習ML的過程 他會看model的架構並理解 然後自己寫出code放到開源的github上 還很貼心的付了github repo給大家![Re: [爆卦] 國中科展天才呂同學,就是唐鳳2.0無誤! Re: [爆卦] 國中科展天才呂同學,就是唐鳳2.0無誤!](https://img.youtube.com/vi/VGEf08Bzhc4/mqdefault.jpg)
54
Re: [新聞] AI爆紅!ChatGPT概念股成追捧焦點 這檔這幾天狂用chatGPT 基本上有在寫程式的人都會用stackoverflow 但也要你的問題 剛好有人在stackoverflow問過 你才會有結果可以看 當然可能80~90%的情況是可以找到答案 但有時候就真的要找很久 一篇一篇翻 或是瘋狂google 要不然就是去youtube找答案 運氣差的時候找一了個小時 還不一定能找到讓你滿意的結果![Re: [新聞] AI爆紅!ChatGPT概念股成追捧焦點 這檔 Re: [新聞] AI爆紅!ChatGPT概念股成追捧焦點 這檔](https://i.imgur.com/tgXoH4pb.jpg)
29
Re: [新聞] 唐鳳造神 陳時中翻版小弟來為大家快速解析一下唐鳳的Github: 先說結論: 平庸~優越之間 (mediocre to excellenct), 評分74 Github的基礎組成單位可以說是repo (repo可以看成是"程式庫") 我們每個人都是一個用戶, 可以創建repo, 也可以給其他人的repo一個star![Re: [新聞] 唐鳳造神 陳時中翻版 Re: [新聞] 唐鳳造神 陳時中翻版](https://i.imgur.com/jTkZVP5b.jpg)
13
Re: [閒聊] 摸魚做了個台灣獨立遊戲列表網站大家好,沒想到大家會好奇怎麼做的 目前這網站就是放在github page上 本身也是開源的 可以很輕鬆的取得所有內容 下面這個連結就是網頁的github repo8
Re: [討論] 同一個程式碼段落超過一人以上在修改不一定,可能合理可能很 suck 要看規模、工作流程、有沒有人控場、默契 自己的經驗是分工做得好的地方通常會定義 ownership 「這塊 code 是拎北/拎母的,要改要先問」 積極的 owner 會對 code 要長成怎樣有明確的想法並前進2
Re: [問卦] Coding Style到底重不重要?多數公司會用lint等code style自動檢查工具逐行檢查,過了才可push到repo裡。 lint很嚴格,就連一行code的分號後面有一個空白,都會挑出來罵。我猜是為了省儲存空 間吧。 --1
[請益] 不小心改到 github repo 的協作者權限大家好 我目前在公司的 github 上負責一個專案 在該專案上我的權限是 admin (協作者只有我一個人) 前幾天不小心手癢把權限改成 maintain 換完後就發現大事不妙QQ1
Re: [討論] 有檢查整個專案有沒有問題的AI嗎?我公司有用企業版的Github Copilot跟企業版的Goland,然後我下班自己是訂閱個人版Githib Copilot跟用免費vscode 我發現公司的Copilot Chat可以讀整個code base,我可以請它跟我簡介一下這個repo、問它哪個component是用在哪裡、為什麼需要這個component 雖然還是能感覺出它還不夠聰明,但就上述問題它是可以給我滿意的答案的 不過我個人版的Copilot Chat就只能做到讀單個檔案回答我問題,我不知道是因為企業版跟個人版的差異,還是一個用Goland一個用vscode他們整合性上的差異 如果個人版也能讀整個code base就太好了
![[請益] 中年求職困境 [請益] 中年求職困境](https://i.ibb.co/230tZgNr/sssss.jpg)