每次看到軟體工程師在互相吵,總要搬出 Clean Code 來說,其實蠻無言的。
到底什麼是 Clean Code 啊?
把函式拆成一堆無限的 helper function,真的沒有比較好維護。
抽象層上面又加一個抽象層,也不見得比較容易理解。
Magic number、Magic string?真的不用每個數字或字串都硬要給個常數。
適當就好。像 3.14 還硬要寫成 const PI,誰不知道那是 π?
再來幾點想法:
為什麼不能 hardcode?
你有想過嗎,hardcoded 的東西直接存在記憶體裡,使用起來其實是最快的耶。重點你要釐清麼時候適合寫死什麼時候適合從file system裡面load config,又或者是以呼叫API去動態性的取資料。(但你知道API也不一定是最優解嗎?網路延遲,或是對方網站掛掉怎麼辦?)
資料存在資料庫不一定是 best practice
要看你的目標客群是誰。如果你做的是 SaaS 或高併發服務,維持 Data consistency 的 DB 確實是必須的。
但如果只是做 demo app,用 DB 其實浪費時間,in-memory storage 方便又快。但記得自己處理好 thread-safe 跟適當上鎖。
軟體工程大部分就是 trade-off,沒有絕對對錯。你做的每一個決策之前甚至寫一個函式一個抽象層前你都要快速想過各種的對與錯以及邊界條件。
不服的歡迎討論
