#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()
? Я не вижу в этом никакого вреда. Просто будьте последовательны со всем вашим проектом, это принесет пользу вам и другим, изучающим ваш код.