Re: [閒聊] 程式大師請進

作者: ZooseWu (N5)   2024-01-30 19:36:59
現在才看到這一串
※ 引述《surimodo (搖滾少女!! 活力棉花糖!!)》之銘言:
: 如果有一個要大量 if else 的判斷式
: 你們會怎麼優化
: 完全符合
: 類似
: if 'A' == a:
: doSomething()
如果是有規律的話就用規律解
例如他是a~z的話 可以直接-65就是陣列索引
var myv = 'c' // 'c' = 67
var doSths = [doSthA, doSthB, doSthC...];
doSths[myv - 65].invoke();
如果沒有規律的話
可以拉一層出來
有需要我在簡單寫一個範例
※ 引述《surimodo (搖滾少女!! 活力棉花糖!!)》之銘言:
: 我看文章寫
: 如果 function 參數太多
: 可以用建構者模式封裝
: 舉例來說
: 本來是 function(a,b,c...)
: 就變成
: user = UserBuilder.add(a).add(b) build()
: function(user)
: 這樣會比較好嗎
: 實務上感覺很少見
看過幾個作法
1.查詢取代臨時變數
2.拉一個型別出來 定義好再塞進去
例如
var style = new FontStyle
style.size = 12
style.bold = true
someText.setStyle(style)
3.Curry化
一個蠻奇特的技巧
不過這有點難解釋
4.你的function有問題
你的function有這麼多參數
八成有問題
建議重構
※ 引述《Wardyal (我獨自升級 超級好看!)》之銘言:
: 具體寫法就是 0000 0001 << f 去推
改用整數存就好了啊
要用<<去推通常是要記錄複數狀態
例如同時發生err 1跟err 5就可以用101紀錄
這樣一個變數可以同時存多個狀態
C#好像叫做enum flags
但如果錯誤只會單獨發生就完全沒這個必要
你直接把原本的變數就當整數用
例如 err = 9
他就會存成 0000 1001
8個bit理論上能存256個狀態
作者: JIWP (JIWP)   2024-01-30 19:40:00
大師
作者: JerryChungYC (JerryChung)   2024-01-30 19:43:00
大師
作者: Knightmrk (mrk5454)   2024-01-30 19:49:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com