NilCheck修复安全导航操作员(&amp ;.)

时间:2017-01-12 10:46:35

标签: ruby ruby-2.3.1 reek safe-navigation-operator

这个简单的方法只需使用安全导航操作符运行status方法。

def current_status
  account&.status
end

但是,瑞克报告了这个警告:

MyClass#current_status performs a nil-check [https://github.com/troessner/reek/blob/master/docs/Nil-Check.md]

如何正确编写这样的方法以避免Nil Check?

我还从thinkbot验证了this post,但对于一个安全的导航操作员来说,它似乎“太多了”。

Ruby 2.3.1

2 个答案:

答案 0 :(得分:2)

链接post中“示例4”的建议很冗长但非常好:

account&.status

如果对你来说“太多”, <div ng-hide="loading" ng-repeat="prov in providers"> <div data-toggle="collapse" style="position:relative;font-weight:bold;" data-target="#collapse-{{$index}}">{{prov.name}} <div id="collapse-{{$index}}" class="collapse"> <div ng-repeat= "p in prov.subnets"> <div class="col-sm-7 col-md-7" style="font-weight:normal;font-size:90%"> {{p.zone}} </div> <div class="col-sm-5 col-md-5"><progress-bar></progress-bar></div> </div> </div> </div> </div> 可能就好了。

无论你做什么:你都需要尽可能测试你的代码

答案 1 :(得分:0)

好吧,tell-dont-ask看起来还不错,但是Example 4看起来像是解决这个特定情况的矫kill过正。

@andredurao我认为,出于某种原因,reek可以通过此替代方法通过检查:

def current_status
  return unless account

  account.status
end