Мне действительно не нравятся # 2 или # 3. Когда вы выравниваете такие вещи, вы группируете вещи вместе. Даже если они "симметричны", это совсем не то, что вы хотите при назначении переменных. как
a = 1
foobar = 2
baz = 3
визуально вы группируете a, foobar и baz и группируете 1, 2 и 3. Даже если 1, 2 и 3 связаны, они все равно должны быть сгруппированы с их метками, показывая, что они могут быть связаны. достигается эффективным пробелом вокруг заданий.
Итак, структуры данных являются примером того, что вы действительно хотите сгруппировать
some_method([[1, "foo"],
[2, "bar"],
[3, "baz"]])
(imo) читать труднее, чем
some_method([[1, "foo"],
[2, "bar"],
[3, "baz"]])
Это что-то вроде ситуации, но у меня есть №4 для вас.
some_var = Hash.new.tap do |h|
h[:name] = "blah"
h[:address] = "101 blahblah lane"
end
another = "Olly olly oxen free!"
Object # tap даст результат, который вы нажмете в блоке, и оцените блок как объект, который вы нажали. Таким образом, в этом примере Hash.new возвращается, модифицируется блоком, а затем возвращается для присвоения some_var. Некоторые люди, с которыми я работаю, абсолютно ненавидят это, но я нахожу это фантастическим, говоря: «Все здесь напрямую связано с инициализацией этого выражения»