Как сделать так, чтобы N-концы Руби выглядели лучше? - PullRequest
2 голосов
/ 20 июля 2009

Когда я пишу несколько скриптов, я обычно достигаю точки, когда мой код выглядит так:

          end
        end
      end
    end
  end
end

Я не знаю о вас, но это выглядит очень уродливо для меня. С этим можно что-то сделать?

Ответы [ 6 ]

18 голосов
/ 20 июля 2009

Не вкладываете ли вы свой код так много? Рефакторинг использовать больше методов? Вместо этого использовать блоки, переданные другим подпрограммам?

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

5 голосов
/ 20 июля 2009

Совет разбить на мелкие кусочки - это хорошо. Но если вам нужно много таких вложенных блоков, вы можете пометить ключевые слова end комментариями.

    end # End conditional statement
  end # End method declaration
end # End class declaration

Все еще безобразно, но, по крайней мере, яснее.

Другие ранее упомянутые опции являются предпочтительными.

4 голосов
/ 20 июля 2009

Если эти внутренние блоки делают что-то простое для имени (и, возможно, для повторного использования?), Почему бы не преобразовать их в небольшие отдельные функции? Тогда вы получите более короткие последовательности концовок.

В противном случае другой подход использует Python: -)

2 голосов
/ 21 июля 2009

Попробуйте использовать небольшие тестируемые функции. Не только ваши функции и, что более важно, логику легко тестировать, но и ваш код становится более читабельным.

1 голос
/ 18 октября 2011

Если вы готовы скомпилировать свой собственный Ruby, вы можете использовать синтаксис в стиле ennnnnnnd (ссылка на доклад RubyKaigi). К сожалению для вас, это было предложено и отклонено ядром Ruby.

1 голос
/ 21 июля 2009

Я видел вложенные блоки "{}" и мягкие вкладки с 4 пробелами и:

конец, конец, конец, конец

Полагаю, это экономит вертикальное пространство, но я не рекомендую. Приведенные выше комментарии о том, как избежать глубокого вложения и комментирования строк, заканчивающихся блоком, являются верными подходами. Возможно, глубокое вложение заключается в том, чтобы избежать затрат на вызов метода для вещей, которые нужно ускорить, но читаемость почти всегда превосходит такого рода «оптимизацию»

...