匿名 ಠ_ಠ

#純靠北工程師8em

2025-02-02

4個月前

地雷識別筆記:

有以下狀況者,高機率什麼都不會。

1. 套專業術語,什麼遞迴、升冪降冪OO函數、演算法之類的。

再遞迴啊,每個迴圈都把全部資料抓進記憶體,然後只拿自己要的那一點點。
你知不知道因為遞迴的關係,
你抓進記憶體的資料在回傳前「通通不會被釋放」,
反而迴圈一脫離迴圈區塊,區塊裡的東西沒用到的就自動丟了等GC出來。

你他X還把整個資料表抓進來,還N次,
幸好只是有階層的選單資料,行數才剛破百。

有沒有想過為什麼遞迴會變成考題?
因為這東西在系統開發裡面用得到而且真的適用的場合少的可憐啊。
先不說記憶體問題,遞迴還會導致程式難以追蹤,產出結果也不直觀。
根本看不出實際產出長怎樣,只能直接看產出結果去逆推邏輯。

會用遞迴說真的不是厲害,更多是不肯動腦的結果,
很多直覺要用遞迴的場合,實際上想辦法把迴圈拉平效能跟資源都會更好。
而把這個迴圈寫出來並加以最佳化的技術,就是所謂的演算法。

2. 不講實作方式講代名詞,ex:傳入一個變數然後用switch-case處理 =>寫一個狀態機。

講那麼多就一個switch-case,光說不練才會這樣。
這種人高機率連Switch Case是啥都不知道也不會寫,更不用說去判斷使用時機了。

3. 把「這有一點複雜」、「這很複雜」、「不要把事情複雜化」之類的句子掛在嘴邊。

不動腦不分析才會整天覺得事情複雜。
這種人最常做的事情是把簡單的東西變複雜,

Ex : 該開成三個資料表的東西,怕資料表太多,所以統合成一個。
類型A、B、C 各自代表不同的業務邏輯。
類型A    #1,#2,#3~#23欄位有值,其他欄位空白(不是NULL),
類型B    #1,#2,#24...#31 有值
類型C    #1,#2,#32...#45 有值

是的,這很簡單...非常的簡單。