重构 [讨论] 大量 String 判断式的重构方法

artone · 发布于 2016年11月15日 · 最后由 lotusfire 回复于 2016年11月17日 · 680 次阅读
3417

Dash for iOS open source 了,先来看看里面这段精美的 if statement:

图片来源:Twitter

虽说我不会写 Objective-C,不过如果在 Ruby 上遇到应该我会这样写:

if [
    "bash",
    "Chai",
    "D3JS",
    "Go",
    "Javascript",
    "Ruby",
].include? platform

  # do something

end

阵列内容可以按照字母排序,肉眼看也比较容易阅读。大家都怎么写呢?

共收到 8 条回复
314

对于一位年收入上百万的程序员,实在是不好意思重构他的代码

13587

当涉及到大量String的时候,记得用Set,O(1) vs O(n)

platforms = Set.new %w[bash Chai D3JS Go Javascript Ruby]

foo if platforms.include? platform
6061

Set 或 HashMap 吧

23529

图里的代码还有&&,还有caseInsensitiveEqual,还有contains啊....

3417

#4楼 @mizuhashi 画面太花了我还真没细看。😅

28344

和用set/map相比,这样可以节省内存,硬编码的字符串都会放到资源段

23530

有没有可能是代码生成器的结果

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册