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