Улучшение читаемости имени объекта в Rails - PullRequest
0 голосов
/ 18 января 2019

Контекст

Учитывая, что соглашение об именовании объекта в Rails выглядит так:

/app/models/foo/bar.rb => class Foo::Bar

если у меня есть структура папок:

/app/models/foo/bar/object1.rb
/app/models/foo/bar/object2.rb
/app/models/foo/main.rb

Для вызова этого объекта из моего основного я должен сделать:

class Foo::Main

  def some_method
    Foo::Bar::Object1.new
    Foo::Bar::Object2.new
  end

end

Это прекрасно работает. Но вот мой вопрос:

Вопрос

Есть ли способ улучшить читаемость имени объекта ?

Учитывая, что в моем Foo::Main находится в том же пространстве имен Foo; Есть ли способ назвать их (Foo::Bar::Object1.new и Foo::Bar::Object2.new) с более коротким именем?

Я бы хотел назвать их Bar::Object1.new и Bar::Object2.new, в этом контексте (или Object1.new и Object2.new)

Ожидаемое

class Foo::Main

  def some_method
    Bar::Object1.new
    Bar::Object2.new
  end

end

Этот код является примером того, что я ожидал, но он не работает.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

если вам интересно узнать больше о лучших практиках синтаксиса, я бы предложил использовать такой инструмент, как Rubocop: https://github.com/rubocop-hq/rubocop

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

0 голосов
/ 18 января 2019

Если вы хотите использовать верхний модуль, вам нужно использовать вложение без сокращения A::B:

module Foo
  class Main

    def some_method
      Bar::Object1.new
      Bar::Object2.new
    end
  end
end

Источники:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...