查看其他人的代码,在花括号块中包含额外空间似乎很常见。这有什么理由吗?对我而言似乎增加了额外的击键以增加丑陋。特别是当事情嵌套时:
lambda { (1..5).map { |i| { :a => { :b => i } } } }
出于某种原因,它看起来更加简洁和连贯:
lambda {(1..5).map {|i| {:a => {:b => i}}}}
也许额外的空格是一些文本编辑器的副作用还是有历史原因或什么?我没有在样式指南中看到这个问题,如果它像2个空格缩进我想遵循惯例,但如果没有充分的理由我想我会继续按照自己的方式做事。您更喜欢哪种?为什么?
答案 0 :(得分:7)
我看到的大多数Ruby代码(希望我编写的所有代码)都使用这种风格:
{ :key => 'value' }
这是我已经习惯并内化的。
当一切都说完了,这个特定的风格问题并不是最重要的。也就是说,Ruby社区(和其他人一样)认为将您的风格(a)与您正在使用的项目以及(b)整个代码社区相匹配非常重要。这就是为什么我建议使用额外的空格。
顺便说一下,这是一个很好的Ruby风格指南: http://www.caliban.org/ruby/rubyguide.shtml#style答案 1 :(得分:3)
似乎只是一种风格问题。我认为它们很难看,遗漏了额外的空间。
编辑: 我同意下面的评论,只是说这是一个风格的问题并没有给你做任何你想要的许可。如果其他人必须阅读或维护代码,那么坚持共同的风格只是良好的编码实践。所以如果有人说服我,大多数Ruby代码都以这种方式使用空格,那么我就是第一个放入空间的人。就我个人而言,我仍然认为它很丑陋,但这远远不如让其他人能够阅读我的代码那么重要。
答案 2 :(得分:3)
您可以使用组合。在我以前工作的地方,我们有一种模糊的风格规则,即“在括号内使用空格,除非它们是结构的外支架”。这听起来令人困惑,但它通常可以帮助您达到一种具有良好直观视觉感的东西。
lambda {(1..5).map {|i| {:a => { :b => i }} }}
我喜欢这个间距如何设置内部哈希值(返回值),而不会感觉太松弛,并且尾随}}
可以帮助您看到它被两层嵌套所包围。
答案 3 :(得分:1)
你展示的例子是风格问题。如果你要把它全部放在一条线上,我想你会占用空间。但是,如果你把
[1,2,3].slice (2)
在你的代码中,Ruby会给你一个警告
警告:不要放空间 参数括号
所以,我猜Ruby对括号充满热情,但不是大括号。
答案 4 :(得分:0)
我不是Ruby程序员,但是我倾向于在括号/括号后添加额外的空格,如果我之间有更长的时间 - 例如,如果声明或额外的计算作为函数的参数,则会更长。
所以我会说 - 虽然我不是Ruby程序员 - 按照您的意愿/作为您的雇主(如果您不是自由职业者/业余爱好者)愿意。
答案 5 :(得分:0)
在某种程度上,我认为这是个人品味的问题。通常我发现添加空格有助于提高可读性 - 但并非总是如此。在你的例子中,我个人认为:
lambda{ (1..5).map{ |i| {:a=>{:b=>i}} } }
当然,如果您发现阅读有问题,如果您愿意,几乎总是可以选择不使用lambda。
如果您正在与其他人进行编码 - 或者为了向Ruby社区展示您的代码的特定目的 - 您还必须考虑他们会发现可读的内容。
但我不确定我是否非常关心我上面的例子是否是“正常的红宝石间距”。
答案 6 :(得分:0)
散列开头/结尾处的额外空间可能是制作的好样式,以提高以字母开头/结尾的键/值的可读性。
{:a => "b"} #is less readable than
{ :a => "b" } #more readable.
部分归因于大括号,我很少在Ruby([])的哈希开头看到空格。
Ruby 1.9中引入的新哈希语法可能会修改此
{a: "b"} #same as {:a => "b"}
答案 7 :(得分:0)
我一直认为在花括号块中包含额外空格是最可读的,但如果前面的字符是右括号,则省略最后一个空格。要使用您的示例:
lambda { (1..5).map { |i| { :a => { :b => i }}}}
答案 8 :(得分:0)