Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Вопрос этикета, как назвать переменную-массив, в единственном или множественном числе?

Вопрос этикета, как назвать переменную-массив, в единственном или множественном числе?

Страницы: 1 2 3 4 Следующая »
Роман ШуваловУчастникwww2 апр. 201810:39#0
#define MAX_POINTS 1000

point_t point[MAX_POINTS];
int points_count;

1. Массив логично было бы назвать points, но при перечислении point[x] выглядит красивее чем points[x], т.к. мы подбираем только один элемент. Или нет?
2. points_count или point_count? Или total_points, чтобы при написании "poi.." подсказка не выдавала лишнее?

DelfigamerПостоялецwww2 апр. 201810:47#1
point_list Изображение

total_points не рекомендуется, потому что 1. грамматически неверно 2. нарушает принцип группа_элемент.

Правка: 2 апр. 2018 10:47

Роман ШуваловУчастникwww2 апр. 201810:49#2
Delfigamer
> point_list
А список списков list_list? Не хотелось бы устраивать FactoryFactory как на Яве.
DelfigamerПостоялецwww2 апр. 201810:51#3
Не делай списоков списков.

А вообще, почему не

std::vector< point_t > points;
points.reserve( 1000 );
, например?

Правка: 2 апр. 2018 10:54

dayllengerПостоялецwww2 апр. 201811:33#4
Роман Шувалов
> при перечислении point[x] выглядит красивее чем points[x]
1. Ни разу не красивее, к тому же
int p = point[5];  // ?
int pnt = point[5];  // ???
2. point_count - это какой-то "точечный счёт" получается.
0iStalkerМодераторwww2 апр. 201811:40#5
Delfigamer
> point_list

pt_array/pt_vector/pt_store/итд

Правка: 2 апр. 2018 11:42

entrywayПостоялецwww2 апр. 201812:10#6
Во множественном конечно. В единственном дико ведь.
foreach(point as point)
sort(point)

Правка: 2 апр. 2018 13:11

Vlad2001_MFSПостоялецwww2 апр. 201812:52#7
#define MAX_POINTS 1000

point_t points[MAX_POINTS];
int points_count; // а если уж совсем по-своему, то pointsCount)

Правка: 2 апр. 2018 13:45

Роман ШуваловУчастникwww2 апр. 201813:04#8
> point_list

> pt_array/pt_vector/pt_store/итд

Перед словом _list, _array и т.д. point/pt в единственном числе?

Delfigamer
> Не делай списоков списков.
У меня тут сложная хренотень с чуть ли не четырьмя уровнями вложенности, а ты говоришь не делай списков списков.

DelfigamerПостоялецwww2 апр. 201813:33#9
Роман Шувалов
> Перед словом _list, _array и т.д. point/pt в единственном числе?
Скорее, более важно, чтобы все поля (а у тебя фактически одна структура с полями) назывались одной группой, то есть - либо points_list|points_count, либо point_list|point_count. С точки зрения английской грамматики, «список точек»|«количество точек» - это второй вариант.

Роман Шувалов
> У меня тут сложная хренотень с чуть ли не четырьмя уровнями вложенности, а ты
> говоришь не делай списков списков.
Называй вещи не тем, как они реализованы, а тем, зачем они нужны. Иными словами - в названии должен быть заключён интерфейс, а не реализация.
Например, если у тебя очень крутая 3Д-сцена, называй свои объекты не List->List->List->Point, а Scene->Mesh->Polygon->Vertex.

Правка: 2 апр. 2018 13:41

gudleifrПостоялецwww2 апр. 201814:54#10
"куртка замшевая… Три. Куртки" (с)

Это не вопрос этикета, это вопрос перехода на подходящий язык.

1. На Perl для обращения к массиву в целом, и к его элементам используются разные префиксы,

foreach (@kurtka) ...
x = $kurtka[5];

2. В FORH можно изобретать любые словоформы, например,

: КУРТКА ... ;
: КУРТКИ КУРТКА ;
: КУРТОК КУРТКА ;
1 КУРТКА 3 КУРТКИ 5 КУРТОК

3. В C можно использовать

#define kurtkа(N) kurtki[N]

Правка: 2 апр. 2018 16:03

DelfigamerПостоялецwww2 апр. 201815:58#11
gudleifr
Интересное наблюдение. Код на русском выглядит коряво, потому что русская система склонений идёт вразрез с матаноподобным синтаксисом большинства языков. Тот же std::unique_ptr< int[] > coats = new int[ 1000 ]; - читается как натуральный английский без каких-либо проблем, тогда как в стд::единичный_указ< целый[] > куртки = создать целый[ 1000 ]; мозг спотыкается на каждом втором слове в неправильном падеже.
Standard unique pointer to integer array "coats", initialized with a newly allocated integer array of length 1000.

А вообще, X[N] - это «элемент объекта X по индексу N», так что правильнее будет всё-таки coats[N] - мы применяем оператор 'элемент по индексу N' к объекту 'коллекция курток'.
Ну и поскольку код = математика, то одну вещь настоятельно рекомендуется называть одним именем, поэтому kurtka(N) вместо kurtki[N] - это плохо и в общем случае так делать не надо.
И конечно же, согласно традициям этого форума, надо ещё придраться и сказать, что, если вместо макро можно написать функцию - всегда следует писать функцию.

Правка: 2 апр. 2018 16:15

gudleifrПостоялецwww2 апр. 201816:10#12
Delfigamer
Кстати, в первых вариантах языков с записями писали X(Y) вместо Y.X .

Delfigamer
> всегда следует писать функцию.
Поэтому и написал "C" , а не "C++".

Правка: 2 апр. 2018 16:11

fantomassПостоялецwww2 апр. 201817:16#13
Мне нравиться так:

• Дефайны/константы: всё большими с разделением через бревно - "const int SOME_CONSTANT = 0x1";
• Поля енама: ваще пофиг. Хоть как;
• Структуры и классы: существительные с большой буквы (нарицательное) - "class MyClass | struct MyStruct | enum MyEnum | namespace MyNamespace";
• Переменные/поля значения/ссылки: существительное с маленькой - "string mainCaption = "bla-bla-bla" | int items_amount = 65536 | float weightMargin = 0.1415f". Как упоминали выше разделяем "группа_обьект", но склеиваем словосочетания "названиеГруппы_названиеОбьекта";
• Переменные/поля аббревиатуры: всё с маленькой - "int guid", в словосочетании разделяем - "int player_guid"; По вкусу - вариант для тех, кому лень шифт зажимать постоянно;
• Булевы переменные/поля флаги: должно звучать как вопрос, причастия и/или слова со всякими добавками типа "is"/"on"/"in" - "bool isMuted = true; bool onJumping = false; bool inMainMenu = false";
• Переменные/поля массивы/хэши/листы: существительные с маленькой, но во множественном - "Vector3 vector_tmp, vectors[]; vectors.push(vector_tmp)";
• Функции/методы: глаголы с маленькой - "function update()" (так как в некоторых языках фуи, как в js например, - это теже переменные);
• Проперти: существительные с маленькой в нужном числе. Ну то есть надо ко всем полям и переменным по-умолчанию относиться как к проперти, до момента, когда в коде возникают повторяющиеся паттерны в виде "inventory.weight; inventory.update()". Тогда прописывать их явно. Изначально - можно забить;
• Хитрые ссылочные переменные и указатели: бревно в конце "int* i_ = null";
• Коллбэки/делегаты/эвет лисенеры: добавляем "on" - "function onPostUpdate = null";
• Область видимости private: добавляем "_" в начале (ибо сортировка) переменной - "private int _amount = 0; private function _updatePage()";
• Локальные переменные: по вкусу и смыслу - тупые названия "Vector3 a, b, c", аля приватные "Vector3 _v1, _v2, _tmpVec", постфикс "Vector3 v1_t, v2_t, vec_t", префикс z_/zz/zzz (опять же сортировка) "Vector3 z_v1, zz_v2, zzzVec";
• Аргументы в функции: не выдумывать ничего, просто не забывать про "this" - "function newExtraStuff(Stuff extraStuff) { this.extraStuff = extraStuff }";
• Огромная пачка всяких спец.сокращений, типа i - iterator, a - amount, r - result, er/err[] - error/errors[], (n,x) - min,max, v - vector, t - temp, тд тп.

Чего там ещё бывает?..

Роман ШуваловУчастникwww2 апр. 201817:20#14
fantomass
> Чего там ещё бывает?..
Вопрос был исключительно о массивах, в единственном или множественном числе писать. Ну и о переменной, хранящий число элементов массива.

Спасибо за высказанные мнения. Учитывать я их, конечно, не буду Попробую учесть. Вот только point_count глаза режет, points_count не режет.

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр