Re: [討論] hard code 速度會快嗎?

作者: HZYSoft (PCMan)   2024-06-01 17:11:48
※ 引述《talkmyself (休息中)》之銘言:
: 如題 hard code的速度會比較快嗎?
: 根據我經驗 hard code可以在極短時間內處理一些專案上的問題
: 但是專案上有高度相似的東西 藉由hard code去寫並不會比較快
: 反倒是多花一點時間重構 重構完畢之後 再來只要套function 修改參數
: 這速度會比hard code快很多
: hard code完畢有十個地方要改 才發現改9個地方 發現bug 又要花時間處理
: 反倒是重構後的code 就算10個地方要改 可以縮減到5個地方
: 然後藉由5個地方又在同一隻function 帶入參數之後 會比較快
: 然而bug也不容易產生
: 因為hard code去處理 只是極短時間內比較快寫完的錯覺
: 後續要加一兩個功能就會越來越慢 除非是極迷你的專案
: 就算是小專案 hard code也不會比較快
: 至於會留下大量技術債的問題 不是為了趕時間而hard code
: 而是因為腦筋不好而hard code
: 因為腦筋不好 所以很多可以模組化的東西都hard code去解決
: 發現到越改越複雜 到最後連自己都無法維運
: 腦筋不好的緣故 改一個bug會產生3個bug
: 所以會有技術債問題是腦筋不好造成的 不是趕工造成的
: 我的想法
關鍵其實要看你的專案現在在哪個階段
1. 專案在非常早期:
這時候 hard code 有可能其實是最佳解。
此時需求不太很確定,可能經常修改。你現在看起來有幾段 code 很相似,
可以重構成共用 function,但不幸的是,幾個月後商業需求改變,他們的行為
越差越多,卻因為共用 code 造成難以擴充,改了這個就壞了那個,
明明差很多的邏輯,卻硬要共用,只會拖慢開發
另外是有時候還在探索可行的產品方向,prototyping 結束後決定捨棄,
那你就白費工夫在 refactor 了,這些 code 很快都是要 deprecate 的
在這些情況下,先 hard code 都是相對好的做法,呼應了不要 early optimization
2. 專案在穩定成長期:
這時候會慢慢添加新功能,但不會大幅度的改變,先 hard code 緊急修復,
把損害降到最低,接著註解寫下 TODO,並且留下 bug 連結供日後參考即可。
"農暇"之餘,再慢慢安排時間來 refactor 還債即可。
當然,如果開發時間充裕,那還是好好設計,一次把它做好比較好。
3. 專案不太會改,或在生命週期尾聲:
這時候直接 hard code 常常也是最佳解,花太多成本去 refactor 沒有什麼效益
這些 code 日後也不太會再改了,多只是維護工作,甚至系統隨後就會淘汰。
欠一些技術債沒還也還好,產品結束這些呆帳就打消了 XD
如果有在好好追蹤技術債,定期償還,視情況舉債,有時是一件好事情。
重點 hard code 的當下要留下註解,說明前因後果,並且開 bug 追蹤,
這樣日後不會忘記,要 refactor 也比較好搜尋到這些位置
補充:
註解的使用不是我想回的重點,重點是平衡短期和長期效益
按照當下的狀況,調整開發的步調。
建議註解單純是加個 TODO: 的註記日後才不會忘了 cleanup
或是有些緊急的修改有當下的時空背景,怕一忙沒法馬上清
日後有空要 refactor 的時候,回想不起來當時狀況。
註解不是描述 code 做了什麼,而是描述為什麼會有這 hack
至於 code 做了什麼,自然是 code 寫好讀 code 就懂了
作者: kurtsgm   2024-06-01 18:30:00
倒數第二句真的是重點Hardcode又不留註解就是在雷
作者: NDark (溺於黑暗)   2024-06-01 18:42:00
反註解派該出來說註解無用論了
作者: k7ji91ab5m (囧嘻嘻)   2024-06-01 18:44:00
反註解派不會認為hardcode不用註解不懂在相輕甚麼
作者: NDark (溺於黑暗)   2024-06-01 18:46:00
連縮排用tab還是空白都能相輕了 還有不懂的新警察
作者: testPtt (測試)   2024-06-01 19:16:00
打開專案心情就很差的感覺 refactor還是越早越好
作者: B0988698088 (廢文少女小円♥)   2024-06-01 19:16:00
有反註解派哦?那他們怎麼處理需要註解的情境?通靈嗎
作者: ab4daa (nooooooooooooooooooo)   2024-06-01 19:28:00
果然無限QE怎麼輸
作者: abccbaandy (敏)   2024-06-01 19:34:00
結論:hard code就對了(?
作者: angusyu (〒△〒)   2024-06-01 20:28:00
你的結論就是怎樣哈扣都可以,真是可愛
作者: za755188   2024-06-01 20:40:00
樓上懷疑PCMan嗎?
作者: pyCassandra (Q口Q)   2024-06-01 20:43:00
推PCMan
作者: wei115 (ㄎㄎ)   2024-06-01 20:44:00
哈扣真的不是最差的選擇
作者: labbat (labbat)   2024-06-01 22:30:00
反註解派:程式碼即為說明書,程式碼即為文件,不hardcode寫出來的就是所有人應該看懂的常識
作者: CRPKT (crpkt)   2024-06-01 22:47:00
我推薦使用 ad-hoc 這個字取代 hard code
作者: peter98 (新兵)   2024-06-01 22:49:00
反註解派說程式碼即為所以不用寫註解的觀點沒有錯,但是反註解派的最大的問題是,他們對於自己的code太有自信,這是華人教育的傳統問題,華人教育是文章看不懂是讀者的問題。反註解派說程式碼即為"說明書"所以不用寫註解的觀點*
作者: VL1003 (路人V)   2024-06-01 22:54:00
反註解派的想法沒問題,就跟共產主義也沒問題,但實作就是問題一堆,理念很美好,但現實超難達成。
作者: tsaigi (菜雞)   2024-06-01 23:06:00
反註解派反的是那種無用的註解吧 例如這裡呼叫xxx 之類看code比看註解還有用的地方
作者: kurtsgm   2024-06-01 23:16:00
不用註解的前提是程式碼的命名、邏輯、流程都能簡單讀懂但通常會用hard code去解決問題一定有當時的時空背景在
作者: t64141 (榕樹)   2024-06-01 23:17:00
但實際上常常是:專案早期 hardcode勇敢欠債,成長期沒空改,穩定期東西沒壞就不要亂改(或已經改不動了)
作者: kurtsgm   2024-06-01 23:17:00
或是用通則無法解決 ...這種情況下後面再回頭看code只能靠回憶 幾乎無法單純讀懂
作者: t64141 (榕樹)   2024-06-01 23:20:00
至於註解不是寫不寫的問題,反而比較像是"如何適當使用註解"
作者: HZYSoft (PCMan)   2024-06-02 00:07:00
註解的使用不是我想回的重點,重點是平衡短期和長期效益按照當下的狀況,調整開發的步調。建議註解單純是加個 TODO: 的註記日後才不會忘了 cleanup或是有些緊急的修改有當下的時空背景,怕一忙沒法馬上清日後有空要 refactor 的時候,回想不起來當時狀況。註解不是描述 code 做了什麼,而是描述為什麼會有這 hack至於 code 做了什麼,自然是 code 寫好讀 code 就懂了
作者: viper9709 (阿達)   2024-06-02 00:46:00
推這篇專業
作者: henrylin8086 (小木)   2024-06-02 01:00:00
前期就幹模組化確實滿浪費時間的,不確定性高又有demo去喊芭樂拳的需求,直接hardcode省事。我的情境是專案中期會整個系統連程式語言都大改,這邊再開始做模組化都還來得及。
作者: mmonkeyboyy (great)   2024-06-02 01:43:00
我是都看專案的arch 兩著會連動其實很合文主說的前面快速後面還債 反正有空能還寫面太認真 後面要裝忙也很累
作者: jack0204 (Jarbar王朝)   2024-06-02 10:52:00
有的時候要先搶時間弄MVP驗證市場或技術方案會寫得很亂,但要有文件歸納重點方便日後重寫或重構與其說hardcode不好,不如說很多人技術不熟練只會這樣做順便說臨時修程式大多hardcode是因為你凌晨4點被call大概也沒心弄得很漂亮,只是幾天內要記得重構
作者: za755188   2024-06-02 16:14:00
不夠清楚的需求沒必要過度最佳化 但又有多少需求是清楚的呢?
作者: superpandal   2024-06-02 17:26:00
不過是不重構的藉口罷了 你不能保證你寫出來的都很清爽 堆到後面你不考慮共用還債就是推給別人還 這種也是種垃圾行為 當然好的方向想就是不喜歡被鳥盡弓藏不做模組化給後面的人爽而已 是否可以共用那也是看個人功力 只要寫的顯式即可未知才會拖慢開發速度 而不是已知 已知只要你對語言不是很不熟或惡搞都能完善到底然而這樣搞對你來講也許可以算已知 對接手的人就是未知了 要花成倍心思去解決 當然不寫注解要求就是寫的好 複雜需求簡歸納簡化 達成可以顯式除錯而不用通靈然而依照你上面這樣搞對你來講可以算已知至於如何共用的更好講究的是邏輯圓融 天人合一要達到樓主講的流程趨勢 對整潔本來就要有一定要求否則自己寫的都看不懂了 不要說別人 往後才會有下一步講到底最重要的還是整齊 模組化都不用搞到很高大上畢竟搞太多就會隱藏細節
作者: andy0055 (王昆)   2024-06-02 21:40:00
推 倒數第二行話…寫了一堆註解,結果關鍵的地雷卻不寫….
作者: gmoz ( This can't do that. )   2024-06-03 10:18:00
註解最大作用就是拿來貼Jira或confluence連結XD
作者: Araiman (阿拉麵非阿拉)   2024-06-03 13:52:00
有些事要做過大專案 踩過坑流過淚才能體會了
作者: Lipraxde (Lipraxde)   2024-06-03 15:13:00
"註解不是描述 code 做了什麼,而是描述為什麼會有這 hack"...不只是 hack,平常寫註解本來就該以補充程式碼以外的資訊、解釋由來為主,看一堆解釋底下程式碼在做什麼操作的註解...當作是在寫教學用的 sample code,看著浪費視覺空間
作者: TonyQ (自立而後立人。)   2024-06-03 15:17:00
//這裡定義了變數 a=1var a=1; //你不寫註解我也知道
作者: GDaaaa   2024-06-03 16:29:00
作者: shooter555 (shooter)   2024-06-03 23:54:00
// 註解是用來說這段垃圾code 是上層交代 不要怪我
作者: becca945 (頻果芽子)   2024-06-04 00:16:00
TODO: someone else do
作者: sb8888 (V5)   2024-06-04 13:06:00
我會留著hardcode的代碼重構 這樣不好嗎直接開個v2 這樣
作者: fatb (胖逼=口=)   2024-06-04 17:10:00
根據經驗不會有時間重構 如果能讓你有時間重構 那是PM時間壓得不夠緊 所以最好還是一次寫好尾聲部份就同意 最好寫得越簡單越笨越好 免得前面的大量測試做白工 (雖然一改都還是要重測 但出事就會被放大)
作者: eva19452002 (^^)   2024-06-04 19:30:00
不是說有一派主張不要寫註解,只要var和func名稱取得好,再加上程式內聚力強,就可以看懂程式在做什麼了
作者: brucetu (sec)   2024-06-04 19:57:00
看得懂程式在做什麼不一定看得懂為什麼要做這件事啊所以才要註解
作者: w0005151 (藍廳)   2024-06-04 22:41:00
對code有太多理想的人多半沒做過大專案
作者: viper9709 (阿達)   2024-06-05 00:37:00
看得懂程式在做什麼不一定懂為什麼要這樣做+1
作者: fatb (胖逼=口=)   2024-06-05 10:04:00
不一定是沒做過大專案 還有一種是主管職願意假日花時間那種
作者: wistful96 (wistful96)   2024-06-07 11:05:00

Links booklink

Contact Us: admin [ a t ] ucptt.com