Re: [討論] hard code 速度會快嗎?
※ 引述《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 就懂了
--
Sent from PCMan on PCMan's PC
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.166.208 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1717233115.A.3ED.html
推
06/01 18:30,
5月前
, 1F
06/01 18:30, 1F
→
06/01 18:30,
5月前
, 2F
06/01 18:30, 2F
→
06/01 18:42,
5月前
, 3F
06/01 18:42, 3F
推
06/01 18:44,
5月前
, 4F
06/01 18:44, 4F
→
06/01 18:45,
5月前
, 5F
06/01 18:45, 5F
推
06/01 18:46,
5月前
, 6F
06/01 18:46, 6F
→
06/01 19:16,
5月前
, 7F
06/01 19:16, 7F
推
06/01 19:16,
5月前
, 8F
06/01 19:16, 8F
→
06/01 19:16,
5月前
, 9F
06/01 19:16, 9F
推
06/01 19:28,
5月前
, 10F
06/01 19:28, 10F
推
06/01 19:34,
5月前
, 11F
06/01 19:34, 11F
→
06/01 20:28,
5月前
, 12F
06/01 20:28, 12F
推
06/01 20:40,
5月前
, 13F
06/01 20:40, 13F
推
06/01 20:43,
5月前
, 14F
06/01 20:43, 14F
推
06/01 20:44,
5月前
, 15F
06/01 20:44, 15F
→
06/01 22:30,
5月前
, 16F
06/01 22:30, 16F
→
06/01 22:31,
5月前
, 17F
06/01 22:31, 17F
推
06/01 22:47,
5月前
, 18F
06/01 22:47, 18F
→
06/01 22:49,
5月前
, 19F
06/01 22:49, 19F
→
06/01 22:49,
5月前
, 20F
06/01 22:49, 20F
→
06/01 22:50,
5月前
, 21F
06/01 22:50, 21F
→
06/01 22:50,
5月前
, 22F
06/01 22:50, 22F
→
06/01 22:51,
5月前
, 23F
06/01 22:51, 23F
→
06/01 22:54,
5月前
, 24F
06/01 22:54, 24F
→
06/01 22:55,
5月前
, 25F
06/01 22:55, 25F
推
06/01 23:06,
5月前
, 26F
06/01 23:06, 26F
→
06/01 23:06,
5月前
, 27F
06/01 23:06, 27F
推
06/01 23:16,
5月前
, 28F
06/01 23:16, 28F
→
06/01 23:17,
5月前
, 29F
06/01 23:17, 29F
推
06/01 23:17,
5月前
, 30F
06/01 23:17, 30F
→
06/01 23:17,
5月前
, 31F
06/01 23:17, 31F
→
06/01 23:17,
5月前
, 32F
06/01 23:17, 32F
→
06/01 23:17,
5月前
, 33F
06/01 23:17, 33F
推
06/01 23:20,
5月前
, 34F
06/01 23:20, 34F
→
06/01 23:20,
5月前
, 35F
06/01 23:20, 35F
→
06/02 00:07,
5月前
, 36F
06/02 00:07, 36F
→
06/02 00:07,
5月前
, 37F
06/02 00:07, 37F
→
06/02 00:08,
5月前
, 38F
06/02 00:08, 38F
→
06/02 00:09,
5月前
, 39F
06/02 00:09, 39F
還有 23 則推文
還有 1 段內文
→
06/02 17:34,
5月前
, 63F
06/02 17:34, 63F
→
06/02 17:35,
5月前
, 64F
06/02 17:35, 64F
→
06/02 17:39,
5月前
, 65F
06/02 17:39, 65F
→
06/02 17:40,
5月前
, 66F
06/02 17:40, 66F
→
06/02 17:42,
5月前
, 67F
06/02 17:42, 67F
→
06/02 17:45,
5月前
, 68F
06/02 17:45, 68F
→
06/02 17:50,
5月前
, 69F
06/02 17:50, 69F
→
06/02 18:00,
5月前
, 70F
06/02 18:00, 70F
→
06/02 18:01,
5月前
, 71F
06/02 18:01, 71F
→
06/02 18:02,
5月前
, 72F
06/02 18:02, 72F
→
06/02 18:05,
5月前
, 73F
06/02 18:05, 73F
→
06/02 18:06,
5月前
, 74F
06/02 18:06, 74F
推
06/02 21:40,
5月前
, 75F
06/02 21:40, 75F
→
06/02 21:41,
5月前
, 76F
06/02 21:41, 76F
→
06/03 10:18,
5月前
, 77F
06/03 10:18, 77F
→
06/03 13:52,
5月前
, 78F
06/03 13:52, 78F
推
06/03 15:13,
5月前
, 79F
06/03 15:13, 79F
→
06/03 15:13,
5月前
, 80F
06/03 15:13, 80F
→
06/03 15:13,
5月前
, 81F
06/03 15:13, 81F
→
06/03 15:13,
5月前
, 82F
06/03 15:13, 82F
→
06/03 15:13,
5月前
, 83F
06/03 15:13, 83F
→
06/03 15:17,
5月前
, 84F
06/03 15:17, 84F
→
06/03 15:17,
5月前
, 85F
06/03 15:17, 85F
推
06/03 16:29,
5月前
, 86F
06/03 16:29, 86F
→
06/03 23:54,
5月前
, 87F
06/03 23:54, 87F
→
06/04 00:16,
5月前
, 88F
06/04 00:16, 88F
推
06/04 13:06,
5月前
, 89F
06/04 13:06, 89F
→
06/04 13:07,
5月前
, 90F
06/04 13:07, 90F
推
06/04 17:10,
5月前
, 91F
06/04 17:10, 91F
→
06/04 17:11,
5月前
, 92F
06/04 17:11, 92F
→
06/04 17:12,
5月前
, 93F
06/04 17:12, 93F
→
06/04 17:13,
5月前
, 94F
06/04 17:13, 94F
→
06/04 19:30,
5月前
, 95F
06/04 19:30, 95F
→
06/04 19:31,
5月前
, 96F
06/04 19:31, 96F
→
06/04 19:57,
5月前
, 97F
06/04 19:57, 97F
→
06/04 19:57,
5月前
, 98F
06/04 19:57, 98F
推
06/04 22:41,
5月前
, 99F
06/04 22:41, 99F
推
06/05 00:37,
5月前
, 100F
06/05 00:37, 100F
→
06/05 10:04,
5月前
, 101F
06/05 10:04, 101F
推
06/07 11:05,
5月前
, 102F
06/07 11:05, 102F
討論串 (同標題文章)
Soft_Job 近期熱門文章
44
154
14
90
PTT職涯區 即時熱門文章