Именование переменных в динамически типизированных языках (таких как Ruby) - PullRequest
2 голосов
/ 09 сентября 2011

Скажите, у меня есть переменная patients. Он может представлять количество пациентов (Integer), набор объектов пациентов (Patient класс), массив строк или хэш.

Иногда мне нужен простой счет, но number_of_patients кажется слишком многословным. patients_number является неоднозначным, поскольку оно может представлять идентификатор пациента или количество пациентов. Замена count на number немного лучше, но не всегда соответствует контексту.

Эта проблема хуже в Rails из-за соглашения об использовании множественного числа для коллекций. Неверно использовать существительное во множественном числе для обозначения Integer. Проблема простирается от представления к модели, потому что модели часто нуждаются в атрибутах для подсчета вещей, плюс они могут иметь связанные коллекции (например, report имеет documents, представляющий Document объекты, поле с именем diseases, представляющее Array и поле с именем evaluated, представляющее Integer).

Существуют ли какие-либо соглашения для рассмотрения этих случаев?

Ответы [ 3 ]

3 голосов
/ 09 сентября 2011

Я бы использовал patients_count, потому что это то, что ActiveRecord использует, когда :counter_cache => true присваивается belongs_to, например:

class Patient
  belongs_to :hospital, :counter_cache => true
end

будет пытаться увеличить hospital.patients_count каждый раз, когда ассоциированный пациент будет добавлен в больницу. ( Документация по Rails API )

2 голосов
/ 09 сентября 2011

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

Количество пациентов всегда будет называться мною numPatients или num_patients (в зависимости от языка).

Массив / хэш / набор пациентов, скорее всего, будет называться patients.

YMMV

1 голос
/ 09 сентября 2011

Реализация множественности редко имеет значение, потому что вы перебираете перечислимые одинаково, независимо от класса поддержки.Количество / размеры вещей должны быть названы таким образом, чтобы идентифицировать их как таковые - patients - это то, что говорится, пациенты, тогда как num_patients / etc.представляет счет.

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