Я недавно переместился от C# до Ruby, и я пропускаю способность сделать разборные, маркированные регионы кода. Мне просто пришло в голову, что должно быть нормально делать этот вид вещи:
class Example
begin # a group of methods
def method1
..
end
def method2
..
end
end
def method3
..
end
end
... но это на самом деле в порядке, чтобы сделать это? method1 и method2 заканчивают тем, что были тем же видом вещи как method3? Или есть ли некоторая идиома Ruby для того, чтобы сделать это, что я еще не видел?
Как уже говорили другие, это не меняет определение метода.
Однако, если вы хотите маркировать группы методов, почему бы не использовать семантику Ruby для их маркировки? Вы можете использовать модули, чтобы разделить ваш код на части, которые принадлежат друг другу. Это хорошая практика для больших классов, даже если вы не используете модули повторно. Когда код вырастет, будет легко разделить модули на отдельные файлы для лучшей организации.
class Example
module ExampleGroup
def method1
# ..
end
def method2
# ..
end
end
include ExampleGroup
def method3
# ..
end
end
Думаю, все в порядке. Хотя я нечасто его видел. Другой способ сделать то же самое, используя меньший отступ, - это закрыть и снова открыть класс, например:
class Example
def method1
..
end
def method2
..
end
end
# optionally put some other code here
class Example
def method3
..
end
end
Я думаю, что это часто используется, чтобы вы могли поместить другой код посередине, например, когда есть константа, определенная в первом блоке класса
, который используется для определения константы в среднем коде, который используется для определения константы во втором блоке класса
. Таким образом, вам никогда не придется обращаться к константе до ее определения.
Добавление произвольного кода Ruby в угоду вашему редактору совершенно не кажется мне разумным. Я думаю, вам следует попробовать получить приличный текстовый редактор, который можно было бы настроить для использования какого-либо ключевого слова, которое вы указываете в своих комментариях, чтобы включить сворачивание кода, например:
# region start AAA
some(:code, :here)
# region end AAA
И если вы позволите мне быть саркастичным: вы должен знать, что Ruby намного выразительнее, элегантнее и красивее, чем C #, и есть вероятность, что никакой код Ruby не должен быть скрыт в первую очередь! ;)
Да, это можно делать (т.е. это не меняет семантику вашего кода).
Однако это не совсем обычный паттерн, и он может запутать читателей вашего кода, которые не поймут назначение блока begin ... end
.