【问题标题】:Is indentation obligatory in Ruby? [duplicate]Ruby中的缩进是强制性的吗? [复制]
【发布时间】:2016-02-10 03:47:48
【问题描述】:

我在 Ruby on Rails 的代码中遇到了一些错误,但我不知道是不是因为它没有缩进。 Ruby 代码可以在没有缩进的情况下工作吗?

【问题讨论】:

    标签: ruby coding-style indentation


    【解决方案1】:

    对于严格使用 Ruby 的项目,缩进无关紧要。 Here's a SO answer to the same question that has a good example of functioning Ruby code with poor indentation。如果您一般对适当的缩进样式感到好奇,Github's Ruby style guide 将是您的一个很好的参考。

    由于您特别提到了 Rails,我想您的模板代码可能会遇到错误。如果您使用的是 slim 或jade 之类的模板(您的视图将有.slim.jade.haml),缩进可能很重要,缺少缩进会导致错误。例如,

    h1 Example code
    
    - @foos.each do |foo|
      p = foo
    

    是有效的苗条代码,但是

    h1 Example code
    
     - @foos.each do |foo|
    p = foo
    

    会产生语法错误。

    【讨论】:

      【解决方案2】:

      正如@sawa 所说,缩进不是强制性的这是一种很好的做法,因为它可以让您的代码更容易阅读(对于人类而言),这意味着更容易发现任何错误。根据Eloquent Ruby 一书,一个明智的做法是使用每行两个空格 进行缩进,因为这显然是一个缩进,但不会占用太多的行空间.本书还建议不要使用 tabs,因为 tab 没有通用长度,因此它们的长度可能会有很大差异。看看这一切的实际效果...

      没有缩进的代码:

      class Human
      def laugh
      puts "laugh"
      end
      def cry
      puts "cry"
      end
      

      代码不太正确,但不是很明显错误在哪里。

      带有缩进和合理间距的代码:

      class Human
        def laugh
          puts "laugh"
        end
      
        def cry
          puts "cry"
        end
      

      在这里更容易看到应该与开课对齐的end 丢失了。简而言之,是的,缩进你的代码并使用合理的间距(例如方法之间的空间)。它将帮助您和任何使用或阅读您的代码的人。

      【讨论】:

        【解决方案3】:

        缩进不像在 python 中那样严格。如果缩进关闭,您的代码应该可以正常工作,但其他开发人员可能无法维护或阅读。

        【讨论】:

        • 是的,我对代码中的质量要求有所了解。但我有这个疑问。
        • 不是“不那么严格”;这根本不重要(除非关闭heredoc、阻止评论和__END__)。
        猜你喜欢
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 2020-07-05
        • 2012-04-09
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 2016-11-22
        相关资源
        最近更新 更多