Советы по именованию объектов

#naming-conventions

#соглашения об именовании

Вопрос:

У меня есть список, и я пытаюсь решить, называть ли его item или items . Если я вызываю это items , становится ясно, что foo(items) передается список элементов, а не один элемент. С другой стороны, я бы предпочел писать item[i] для ссылки на конкретный элемент вместо items[i] (потому что я бы сказал «принесите мне пункт 7», а не «принесите мне пункты 7»).

У меня также есть функция, и я пытаюсь решить, вызывать ее value или get_value . Если я назову это value , я могу написать приятные утверждения типа value_squared = value() ^ 2 (которые, я думаю, лучше, чем value_squared = get_value() ^ 2 ), но у меня могут возникнуть проблемы с написанием таких вещей, как value = value() , тогда value = get_value() как это не будет проблематично.

(Я знаю, что на этот вопрос нет правильного ответа, и что это два вопроса. Я открыт для предложений отредактировать / удалить / переместить / разделить его и т. Д., Поскольку я не совсем уверен, что делать правильно. Однако я хотел бы увидеть некоторые ответы, поскольку я хотел бы писать код таким образом, чтобы его было легко понять другим.)

Комментарии:

1. Подумайте, какой язык вы тоже используете, и ознакомьтесь с соглашениями в нем. т. Е. Стандартно не использовать префиксы доступа с помощью get в objective-c. т.Е. person.getName() в java это по соглашению person.name в obj-c.

2. Я согласен с Джеймсом. На это невозможно ответить, не зная языка, о котором идет речь. У каждого достаточно распространенного языка есть свои идиомы, которым вы должны подчиняться.

3. @musiKk На данный момент меня больше всего интересует Python, для которого я не смог найти никаких указаний по этому вопросу. Я согласен, что лучше всего следовать установленным соглашениям, и я вижу из комментария Джеймса, что такие соглашения существуют, по крайней мере, для некоторых языков. Я предполагаю, что я также заинтересован в этом с философской точки зрения, хотя: т.Е. Если бы вы разрабатывали новый язык, какое соглашение вы бы поддержали?

Ответ №1:

Назовите список («контейнер») «элементами». Назовите каждый элемент в списке «элементом» 🙂

«элементы [i]» вполне уместно.

Так же:

   foreach (ListItem item in items) {
    ...
  

Ответ №2:

Мне нравятся имена во множественном числе для списков и префикс «get» для функций. Я думаю, что сразу же знание того, что это списки и функции, перевешивает негативы.

Ответ №3:

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

Речь идет о магазине, в котором вы работаете, а не о том, правы вы или нет. Кроме того, это просто имя.

В моем случае я не люблю "s"'s ничего добавлять. Например, если я разрабатываю систему проблем базы данных со связанными комментариями, я называю свою таблицу проблем Issue , потому что один единственный кортеж (или строка) представляет одну проблему. То же самое для моей таблицы комментариев, которую я в конечном итоге называю Comment . Меня не волнует, что общее количество всех строк представляет «Проблемы», для меня таблица представляет одну сущность. Но опять же, это личные предпочтения.

Вы также упомянули об этом:

On the other hand, I would prefer to write item[i] to refer to a particular element instead of items[i] (because I would say "bring me item 7", not "bring me items 7").

Но если ваш список вызывается items , то, если вы это сделали items[i] , должно быть легко увидеть, что вы ссылаетесь на один элемент в списке. Для меня это очень читабельно.

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