【问题标题】:Should I split a ruby single-line if statement into multi-line if statement because the line is long?我应该将 ruby​​ 单行 if 语句拆分为多行 if 语句,因为该行很长吗?
【发布时间】:2021-08-18 18:47:30
【问题描述】:

我有一个很长的 ruby​​ 单行语句,大约 200 个字符。根据ruby style guide 的说法,这里倾向于使用单行 if 语句,因为正文是单行的。

address = Module::InnerModule::Class.new(long_address) if Module::Class.new(long_address).is_good? 

但是,200 个字符远远超过了通常的行长阈值(通常最多为 120)。我应该将 if 语句拆分为多行语句以减少行长(还是应该接受该行很长)?

if Module::Class.new(long_address).is_good? 
  address = Module::InnerModule::Class.new(long_address)

另外,如果分割线后仍然很长,会发生什么?这里的最佳做法是什么?我是 Ruby 新手,因此我希望能提供有关最佳实践的任何建议。

【问题讨论】:

  • 您正在使用它,因此您可以最好地判断它最适合您阅读的方式。重新格式化它,直到它看起来适合你。
  • @user1934428 我理解所涉及的主观性,但还有其他人在从事同一个项目。了解 Ruby 社区对此的看法不是更好吗(而不是仅使用我的个人意见)?
  • 也许,但Stack Overflow 不鼓励讨论问题,这取决于个人的个人意见,也许是因为这会导致无休止的讨论。有些人不喜欢将if 完全添加到语句中,其他人使用字体以便他们可以轻松看到长度为 300 个字符的行,我更喜欢行不超过 72 个字符 - 你怎么能指望这个可以合理讨论吗?

标签: ruby coding-style


【解决方案1】:

除了样式问题,如果您想保持当前语义,您可以在某些关键字和运算符处换行,而无需使用反斜杠转义换行符。例如:

address =
  Module::InnerModule::Class.new(long_address) if
    Module::Class.new(long_address).is_good?

否则,请更改您的语义或重构您的代码以适应您想要的行长和选择的样式。关于如何分割行的问题是可以回答的,但是分割、缩进或重构的“最佳”方法在很大程度上是主观的,并且主要是可读性和意图的结合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-26
    • 2013-02-12
    • 2022-12-16
    • 2012-01-08
    • 2023-03-13
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多