加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正确使用Ruby语句修饰符

发布时间:2020-12-16 21:25:47 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用 Ruby,并在 RubyMine建议我更改此代码时发现语句修饰符: if !VALID_DIRECTIONS.include?(direction) raise ArgumentError,"Invalid direction"end 对此: raise ArgumentError,"Invalid direction" if !VALID_DIRECTIONS.include?(direction)
我刚刚开始使用 Ruby,并在 RubyMine建议我更改此代码时发现语句修饰符:
if !VALID_DIRECTIONS.include?(direction)
   raise ArgumentError,"Invalid direction"
end

对此:

raise ArgumentError,"Invalid direction" if !VALID_DIRECTIONS.include?(direction)

我喜欢它如何使代码更简洁.但是,我可以看到它乍一看可能具有误导性并强加可读性问题,因为它将效果置于条件之前.然后,也许那只是因为我已经习惯了C风格的语言.

有没有人因使用语句修饰符而遇到麻烦,或者你觉得他们已经改进了你的代码?此外,是否有人有使用修饰符的一般指导原则(即,对某些操作特别有效,或者对其他操作不适用)?

解决方法

我发现我通常可以毫不费力地阅读那些尾随条件(因为它们有时被称为),前提是仍然遵循其他代码可读性指南.在同一行上放置一个60个字符的表达式和一个40个字符的条件,你最终会得到一个100个字符的文本,这肯定是不可读的,完全独立于尾随条件的问题.

在您展示的特定代码示例中,非常明显的是必须有条件跟随.谁不想在没有先查看参数的情况下引发ArgumentError?

此外,尾随条件类似于数学和函数语言中的guard子句,它们也倾向于在它们保护的表达式之后编写.

最后但并非最不重要的是,如果foo并且在方法开头的quux表达式(作为一种防护,实际上被认为是好的样式),则放置几个提升Bar如果foo并返回nil,以简化方法的控制流程.再说一遍:因为这些来自方法的开头,很明显必须有一个条件,否则从方法的开头返回就没有意义了.

PS:我实际上会使用除非那里,以摆脱否定.在更复杂的条件下,我发现除非有时难以解析,但在这种情况下,它更明显,至少恕我直言.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读