【发布时间】:2017-09-18 09:44:42
【问题描述】:
def readable
uptime = (Time.now - self).to_i
case uptime
when 0 then 'just now'
when 1 then 'uptime second ago'
when 2..59 then uptime.to_s + ' seconds ago'
when 60..119 then 'uptime minute ago' # 120 = 2 minutes
when 120..3540 then (uptime / 60).to_i.to_s + ' minutes ago'
when 3541..7100 then 'an hour ago' # 3600 = 1 hour
when 7101..82_800 then ((uptime + 99) / 3600).to_i.to_s + ' hours ago'
when 82_801..172_000 then 'uptime day ago' # 86400 = 1 day
else ((uptime + 800) / 86_400).to_i.to_s + ' days ago'
end
end
Linter 谈到以下错误,如何解决?
- FeatureEnvy:Time#readable 指的是“正常运行时间”而不是自身(也许将其移至另一个类?)[https://github.com/troessner/reek/blob/master/docs/Feature-Envy.md]
TooManyStatements:Time#readable 大约有 10 个语句 [https://github.com/troessner/reek/blob/master/docs/Too-Many-Statements.md]
可读的赋值分支条件大小太大 高的。 [20.64/15]
- 可读的圈复杂度太高。 [9/6]
- 方法行数过多。 [12/10]
【问题讨论】:
-
codereview.stackexchange.com 适合这类问题。
-
我投票决定将此问题作为题外话结束,因为它是工作代码,应该发布在Code Review
-
这是我暂时禁用 rubocop 规则 b/c 我同意这是一个非常简洁的实现。
标签: ruby refactoring rubocop reek