Здесь собрана информация по всем необходимым инструментам для работы с кодом Корсаров
Подстатья
15 258
38
Total commander это total говно тоже. Нп++ умеет искать по папке, но более красиво это делает... Да любая блт ide это делает более красиво, в каком году мы живем)
Это заключительный урок данного цикла. Здесь я дам некоторые советы, которые помогут вам писать понятный, читаемый код.
Подстатья
15 164
23
avuremybe, понятно, спасибо)
26
EugeAl, начинающему кодеру лучше начинать с первой статьи в этом цикле, а не с последней.
К этому моменту он бы уже знал, что у всех функций после имени скобки ставятся. И перепутать ее с переменной невозможно, хоть как ее не называай.
У массивов, о которых пишет Назар, тоже есть свой оператор. И об этом тоже говорилось в соответствующем уроке.
int ships;   // это переменная
int ships(); // это функция
int ships[]; // а это массив
23
nazarpunk, Понятно. В общем, это на совести автора кода.
30
EugeAl, если ты назвал функцию ships то сам себе злобный Буратина. Но адекватный пример придумать несложно - nearestShips это массив кораблей или функция по их получению?
Но именование функций с маленькой буквы это устоявшаяся практика, ничего зазорного в этом нет.
23
Во-первых, имена переменных начинаются с буквы в нижнем регистре. Если имя переменной состоит из одного слова, то это слово должно быть записано в нижнем регистре
...
Имена функций, как правило, начинаются с буквы в нижнем регистре
А как читающему кодеру отличать, например переменную ships (предположим, что она хранит текущее кол-во кораблей на карте) от функции ships (допустим, она спавнит группу кораблей на карту)?
Это ж действительно какой-то "ниндзя код" получается - ещё разбираться, что там после названия написано, а не сразу по названию понять.
С функциями в верхнем регистре таких проблем не будет...
26
Есть множество способов разделять области видимости - префиксы, модули, CRUD наборы функций, акцессоры, мутаторы, структуры.
Я с этим полностью согласен.
Но есть одна проблема.
Из всего перечисленного в скрипты Корсаров завезли только венгерскую нотацию.
И я ее рекомендовал только для глобальных переменных. Которых я вообще использовать не рекомендую.
Можно, конечно, без подчеркивания. Просто букву g. С доступными типами, в принципе, не пересекается 🤔
38
Венгерская нотация - это не только мусор и шум в коде, но еще и лишняя трата времени как на код, так и на рефакторинг.
Никогда не используйте венгерскую нотацию в типизированных языках
Есть множество способов разделять области видимости - префиксы, модули, CRUD наборы функций, акцессоры, мутаторы, структуры. Нет ни одной проблемы, которую бы решала эта нотация в долгосрочных перспективах
это моё личное мнение

Те, кто советует венгерскую нотацию, слишком мало рефакторил конструкции вида
g_myStruct.m_lpMySub.pszMyString
На новые типы данных

До статьи:
struct VectorNode {
  float x;
  float y;
  float z;
  PointNode * next;
}

VectorNode * nodes;

void VectorNodeInit(VectorNode * nodes, unsigned int count)
После статьи:
struct VectorNode {
  float fX;
  float fY;
  float fZ;
  PointNode * m_lpNext;
}

VectorNode * g_lpNodes;

void g_fnVectorNodeInit(VectorNode * lpNodes, unsigned int u32Count)

numberOfChars
Не правильно.
g_nNumberOfChars
30
avuremybe, это реальный боевой пример такого форматирования кода.