【问题标题】:Ruby style for displaying long arrays用于显示长数组的 Ruby 样式
【发布时间】:2015-03-24 14:59:21
【问题描述】:

我正在使用rubocop 来检查我的代码的样式约定是否符合最佳实践。我有一系列颜色,想知道显示它们的最佳方式。我读到行应该少于 80 个字符,所以我这样做了。

colors = [:light_red, :red, :pink, :orange, :light_yellow, :yellow,
          :light_green, :green, :light_blue, :blue, :white, :black]

我从 rubocop 收到以下异常消息

C: Align the elements of an array literal if they span more than one line

这是否意味着,我应该做这样的事情

colors = [:light_red,
          :red,
          :pink,
          :orange,
          :light_yellow,
          :yellow,
          :light_green,
          :green,
          :light_blue
          :blue,
          :white,
          :black]

这占用了大量的空间,我认为我的方式更有效。

关于在 ruby​​ 中显示多行数组的风格规则是什么?

【问题讨论】:

  • 除此之外,在这种情况下,您应该使用 %i 文字。

标签: ruby arrays coding-style


【解决方案1】:

关于在哪里结束一行有不同的想法,所以我不讨论这个。

如果您要更改列表中项目之间的行,我可以说的一件事是,您也应该在分隔符(在这种情况下为[])和第一项/最后一项。不是:

....... [:foo,
         :bar,
         :baz]

但是:

....... [
          :foo,
          :bar,
          :baz,
        ]

相对于分隔符的缩进级别将项目缩进两个空格是一种惯例。

另一个提示是在最后一项之后添加逗号,如上所示。虽然这是可选的,并且对代码没有任何影响,但这将使您以后更容易编辑列表(更改顺序、添加、删除项目等)。

【讨论】:

  • 我想补充一下,如果您采用第二种方式,那么您可以使用标签,而人们将标签宽度设置为什么并不重要,因为它看起来都是正确的。
【解决方案2】:

Batsov 在https://github.com/bbatsov/ruby-style-guide#align-multiline-arrays 中对此进行了描述。看起来您的变体是正确的。也许您对robocop 的默认规则进行了更改?

【讨论】:

    【解决方案3】:

    在 v2.3 中,您将能够使用Enumerable#tinyfy

    p colors.tinyfy(1)
    

    [:light_red, :red, :orange, :light_yellow, :yellow, :light_green, :light_blue, :blue, :white, :black]

    p colors.tinyfy(2)
    

    [:light_red, :red, :orange, :light_yellow, :yellow, :light_green, :light_blue, :blue, :white, :black]

    p colors.tinyfy(3)
    

    [:light_red, :red, :orange, :light_yellow, :yellow, :light_green, :light_blue, :blue, :white, :black]

    p colors.tinyfy(4)
    

    [:light_red, :red, :orange, :light_yellow, :yellow, :light_green, :light_blue, :blue, :white, :black]

    p colors.tinyfy(10)
    

    ..........

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2021-10-16
      • 2015-06-29
      • 1970-01-01
      • 2017-07-09
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多