Войти
ПрограммированиеФорумОбщее

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

Страницы: 1 2 3 4 Следующая »
#0
10:39, 2 апр. 2018
#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.." подсказка не выдавала лишнее?

#1
(Правка: 10:47) 10:47, 2 апр. 2018

point_list Изображение

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

#2
10:49, 2 апр. 2018

Delfigamer
> point_list
А список списков list_list? Не хотелось бы устраивать FactoryFactory как на Яве.

#3
(Правка: 10:54) 10:51, 2 апр. 2018

Не делай списоков списков.

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

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

#4
11:33, 2 апр. 2018

Роман Шувалов
> при перечислении point[x] выглядит красивее чем points[x]
1. Ни разу не красивее, к тому же

int p = point[5];  // ?
int pnt = point[5];  // ???
2. point_count - это какой-то "точечный счёт" получается.
#5
(Правка: 11:42) 11:40, 2 апр. 2018

Delfigamer
> point_list

pt_array/pt_vector/pt_store/итд

#6
(Правка: 13:11) 12:10, 2 апр. 2018

Во множественном конечно. В единственном дико ведь.
foreach(point as point)
sort(point)

#7
(Правка: 13:45) 12:52, 2 апр. 2018
#define MAX_POINTS 1000

point_t points[MAX_POINTS];
int points_count; // а если уж совсем по-своему, то pointsCount)
#8
13:04, 2 апр. 2018

> point_list

> pt_array/pt_vector/pt_store/итд

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

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

#9
(Правка: 13:41) 13:33, 2 апр. 2018

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

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

#10
(Правка: 16:03) 14:54, 2 апр. 2018

"куртка замшевая… Три. Куртки" (с)

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

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

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

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

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

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

#define kurtkа(N) kurtki[N]

#11
(Правка: 16:15) 15:58, 2 апр. 2018

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] - это плохо и в общем случае так делать не надо.
И конечно же, согласно традициям этого форума, надо ещё придраться и сказать, что, если вместо макро можно написать функцию - всегда следует писать функцию.
#12
(Правка: 16:11) 16:10, 2 апр. 2018

Delfigamer
Кстати, в первых вариантах языков с записями писали X(Y) вместо Y.X .

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

#13
17:16, 2 апр. 2018

Мне нравиться так:

• Дефайны/константы: всё большими с разделением через бревно - "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, тд тп.

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

#14
17:20, 2 апр. 2018

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

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

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее