это в порядке для использования начинает/заканчивает в Ruby путем, я использовал бы #region в C#?

Я недавно переместился от C# до Ruby, и я пропускаю способность сделать разборные, маркированные регионы кода. Мне просто пришло в голову, что должно быть нормально делать этот вид вещи:

class Example
  begin # a group of methods

    def method1
      ..
    end

    def method2
      ..
    end

  end

  def method3
    ..
  end
end

... но это на самом деле в порядке, чтобы сделать это? method1 и method2 заканчивают тем, что были тем же видом вещи как method3? Или есть ли некоторая идиома Ruby для того, чтобы сделать это, что я еще не видел?

5
задан Simon 8 July 2010 в 14:50
поделиться

4 ответа

Как уже говорили другие, это не меняет определение метода.

Однако, если вы хотите маркировать группы методов, почему бы не использовать семантику Ruby для их маркировки? Вы можете использовать модули, чтобы разделить ваш код на части, которые принадлежат друг другу. Это хорошая практика для больших классов, даже если вы не используете модули повторно. Когда код вырастет, будет легко разделить модули на отдельные файлы для лучшей организации.

class Example
  module ExampleGroup
    def method1
      # ..
    end

    def method2
      # ..
    end
  end
  include ExampleGroup

  def method3
    # ..
  end
end
6
ответ дан 18 December 2019 в 09:47
поделиться

Думаю, все в порядке. Хотя я нечасто его видел. Другой способ сделать то же самое, используя меньший отступ, - это закрыть и снова открыть класс, например:

class Example
  def method1
    ..
  end

  def method2
    ..
  end
end

# optionally put some other code here

class Example
  def method3
    ..
  end
end

Я думаю, что это часто используется, чтобы вы могли поместить другой код посередине, например, когда есть константа, определенная в первом блоке класса , который используется для определения константы в среднем коде, который используется для определения константы во втором блоке класса . Таким образом, вам никогда не придется обращаться к константе до ее определения.

2
ответ дан 18 December 2019 в 09:47
поделиться

Добавление произвольного кода Ruby в угоду вашему редактору совершенно не кажется мне разумным. Я думаю, вам следует попробовать получить приличный текстовый редактор, который можно было бы настроить для использования какого-либо ключевого слова, которое вы указываете в своих комментариях, чтобы включить сворачивание кода, например:

# region start AAA

some(:code, :here)

# region end AAA

И если вы позволите мне быть саркастичным: вы должен знать, что Ruby намного выразительнее, элегантнее и красивее, чем C #, и есть вероятность, что никакой код Ruby не должен быть скрыт в первую очередь! ;)

6
ответ дан 18 December 2019 в 09:47
поделиться

Да, это можно делать (т.е. это не меняет семантику вашего кода).

Однако это не совсем обычный паттерн, и он может запутать читателей вашего кода, которые не поймут назначение блока begin ... end.

1
ответ дан 18 December 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: