Улучшить читаемость большого attr_accessor

Что я должен делать при определении констант или attr_accessor символы, которые очень большие? Например, что-то вроде этого:

ATTRIBUTES = %w(id name full_name owner private html_url description fork url forks_url keys_url collaborators_url teams_url hooks_url issue_events_url events_url assignees_url branches_url tags_url blobs_url git_tags_url git_refs_url trees_url statuses_url languages_url stargazers_url contributors_url subscribers_url subscription_url commits_url git_commits_url comments_url issue_comment_url contents_url compare_url merges_url archive_url downloads_url issues_url pulls_url milestones_url)

attr_accessor :name, :login, :full_name, :owner, :private, :html_url, :description, :fork, :url

в классе это ужасно. Это лучший способ? Я хочу знать, есть ли другие способы просто улучшить читаемость.

4 ответа

Решение

Изменить линии на определенной ширине:

ATTRIBUTES = %w[
  id name full_name owner private html_url description fork url forks_url
  keys_url collaborators_url teams_url hooks_url issue_events_url events_url
  ...
]

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

ATTRIBUTES = %w[
  id name
  full_name
  owner
  private
  html_url
  ...
]

или если у вас есть форматирование времени, вы можете сделать несколько столбцов и выровнять их:

ATTRIBUTES = %w[
  id                 name                full_name          owner             
  private html_url   description fork    url                forks_url
  keys_url           collaborators_url   teams_url          hooks_url
  issue_events_url   events_url          ...
]

В Ruby 2.0 появилось новое буквальное выражение %i[...] был введен для массива символов:

attr_accessor *%i[
  name
  login
  full_name
  owner
  private
  ...
]

Вы можете использовать YAML файл или установить файл конфигурации. Затем, когда вы инициализируете, вы можете назначить значения.

Пример YAML:

#configuration file 
config: 

  FIRST_NAME: "Bob"
  USER_ID: "abc13324"
  LAST_NAME: "Smith"
  Etc....

Пример Ruby:

class NewClass
     def initialize
         configFile = YAML.load_file("pathToYourYamlFile.yaml")
         @firstName = configFile['config']['FIRST_NAME']
         @lasttName = configFile['config']['LAST_NAME']
         @user_id = configFile['config']['USER_ID']
         etc....
     end
 end 

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

На протяжении многих лет, благодаря отрыву от разных языков, я стал использовать этот вид макета:

ATTRIBUTES = %w(
  archive_url assignees_url
  blobs_url branches_url

  collaborators_url comments_url commits_url compare_url 
  contents_url contributors_url

  description downloads_url
  events_url
  fork forks_url full_name
  git_commits_url git_refs_url git_tags_url
  hooks_url html_url
  id issue_comment_url issue_events_url issues_url
  keys_url
  languages_url
  merges_url milestones_url
  name
  owner
  private pulls_url

  stargazers_url statuses_url subscribers_url
  subscription_url

  tags_url teams_url trees_url
  url
)

%w(
  description
  fork full_name
  html_url
  login
  name
  owner
  private
  url
).each { |a| attr_accessor a.to_sym }

Строки сортируются в алфавитном порядке, а каждое отдельное слово в строке сортируется в алфавитном порядке.

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

Большинство редакторов облегчают сортировку, и это первый шаг, который убирает грязный список, что является болью, после этого нет ничего сложного в том, чтобы его поддерживать. Я использую Vim, который имеет sort команда, но Sublime Text 2, который я рассматриваю как замену "блокнота", тоже делает это.

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

С добавлением Ruby v2.0 %iвторой пример можно изменить на:

%i(
  description
  fork full_name
  html_url
  login
  name
  owner
  private
  url
).each { |s| attr_accessor s }

Это не большое изменение, но немного чище.

Мне кажется, все это имена столбцов таблицы.

Если да, вам не нужен attr_accessor для них, rails автоматически предоставляет к ним доступ.

Ты можешь позвонить object.name, object.html_url и так далее.

Можете ли вы подтвердить, если это так

Другие вопросы по тегам