Ruby空格:{:a => 1}比{:a => 1}好吗?

看看其他人的代码,在花括号块中包含一个额外的空间似乎很常见。 这有什么理由吗? 对我而言似乎增加了额外的击键以增加丑陋。 特别是当事物嵌套时:

lambda { (1..5).map { |i| { :a => { :b => i } } } } 

出于某种原因,它看起来更简洁,更连贯:

 lambda {(1..5).map {|i| {:a => {:b => i}}}} 

也许额外的空间是一些文本编辑器的副作用或有历史原因或什么? 我没有在样式指南中看到这个问题,如果它像2个空格缩进我想遵循惯例,但如果没有充分的理由我想我会继续按照自己的方式做事。 你更喜欢哪个?为什么?

我看到的大多数Ruby代码(希望我编写的所有代码)都使用这种样式:

 { :key => 'value' } 

这就是我已经习惯并内化的东西。

当所有的事情都说完了,这个特定的风格问题并不是最重要的。 也就是说,Ruby社区(和其他人一样)认为将您的风格(a)与您正在使用的项目以及(b)整个代码社区相匹配非常重要。 这就是为什么我建议使用额外的空白区域。

顺便说一句,这是一个很好的Ruby风格指南: http : //www.caliban.org/ruby/rubyguide.shtml#style

您可以使用组合。 在我以前工作的地方,我们有一种模糊的风格规则,即“在括号内使用空格,除非它们是结构的外支架”。 这听起来令人困惑,但它通常可以帮助您达到具有直观视觉感的东西。

 lambda {(1..5).map {|i| {:a => { :b => i }} }} 

我喜欢这个间距如何设置内部哈希值(返回值),而不会感觉太闷,并且尾随}}可以帮助您看到它被两层嵌套所包围。

似乎只是一种风格问题。 我认为它们很难看,遗漏了额外的空间。

编辑:我同意下面的评论,只是说这是一个风格的问题并没有给你做任何你想做的许可。 如果其他人必须阅读或维护代码,那么坚持一种共同的风格只是良好的编码实践。 所以,如果有人说服我,大多数Ruby代码都以这种方式使用空格,那么我就是第一个放入空间的人。 就我个人而言,我仍然认为它很难看,但这远远不如让其他人能够阅读我的代码那么重要。

你展示的例子是风格问题。 如果你要把它全部放在一条线上,我想你会占用空间。 但是,如果你放

 [1,2,3].slice (2) 

在你的代码中,Ruby会给你一个警告

警告:不要在参数括号之前放置空格

所以,我猜Ruby对括号充满热情,但不是大括号。

我不是Ruby程序员,但是我倾向于在括号/括号之后放置额外的空格,如果我在它们之间有更长的时间 – 例如,如果声明或额外的计算作为函数的参数,则更长。

所以我会说 – 虽然我不是Ruby程序员 – 按照您的意愿/作为您的雇主(如果您不是自由职业者/业余爱好者)愿意。

在某种程度上,我认为这是个人品味的问题。 通常我发现添加空格有助于提高可读性 – 但并非总是如此。 在你的例子中,我个人会:

 lambda{ (1..5).map{ |i| {:a=>{:b=>i}} } } 

当然,如果您发现阅读有问题,如果您愿意,几乎总是可以选择不使用lambda。

如果您正在与一群其他人一起编码 – 或者为了向Ruby社区展示您的代码的特定目的 – 您还必须考虑他们会发现可读的内容。

但我不确定我是否非常关心我上面的例子是否是“正常的ruby间距”。

散列开头/结尾处的额外空间可能是一种很好的风格,可以提高键/值的可读性,这些键/值以字母开头/结尾。

 {:a => "b"} #is less readable than { :a => "b" } #more readable. 

它部分归因于大括号,我很少在Ruby([])的哈希开头看到空格。
Ruby 1.9中引入的新哈希语法可能会修改它

 {a: "b"} #same as {:a => "b"} 

我一直认为在花括号块中包含额外空间是最可读的,但如果前面的字符是右括号,则省略最后一个空格。 要使用您的示例:

 lambda { (1..5).map { |i| { :a => { :b => i }}}} 

恕我直言,在大多数情况下,空间表现为合成噪音,并且很难打字…我发现令人惊讶的是ruby社区最近对他们的痴迷,少数人关心他们试图将他们作为10年后的标准强加给他们没有这样的规范……