Имена всех констант записываются заглавными буквами (это помогает отличать их
от переменных)
Тип int используется только как замена типу bool. В остальных
случаях следует явно указывать short или long. (В разных
компиляторах int может иметь разный размер, но во всех, с которыми YH
когда-либо имели дело short и long имеют размер 16 и 32 бита
соответственно).
Переменные должны иметь осмысленные имена. Не следует пренебрагать увеличением
их количества для упрощения понимания. Так, счётчики циклов есть смысл называть
соответственно объектам, в этих циклах перечисляющися.
Переменные могут (и в указанных случаях должны) иметь префиксы: p для
указателей, индексные переменные i, переменные, выражающие количества - c,
использующиеся для инициализации переменные - init.
Если имеются два из трех следующих условий: условие инициализации, условие
выхода или условие приращения, то цикл должен описываться оператором for.
Если счётчик имеет постоянное приращение в каждой итерации цикла, то это
приращение должно быть описано в операторе for.
При указании размера элемента массива использовать выражения вида sizeof(array[0]),
а не указывать тип явно. Такая запись останется в силе и при изменении типа
данных элементов массива.
Каждое нетривиальное число в программе должно быть именованной константой.
Использовать 0 вместо NULL.
После константы указывать её значение также в коментариях. Если значения
констант изменяются при отладке, такой коментарий помогает их быстро
восстановить.
Буфер всегда нызвается buffer.
Имена переменных пишутся со строчной буквы (pVectorField, vectorField),
все последующие слова в имени - с заглавной. Все слова в именах функций пишутся
с заглавной буквы (InitVectorField).
В коде должно быть достаточное число пробелов, чтобы он был достаточно
читаемым.
В задачах, где на входе даётся несколько тестов, цикл работы по номеру теста должен выглядеть
так: for(iCase = 0; iCase < cCases; ++iCase)
Все методы класса должны быть описаны в его области определения. При этом часть из
них станет inline, что не увеличит время работы программы. Соблюдение этого
правила также позволяет легко копировать код класса из одного файла в другой.
Если после объявления цикла оператор занимает больше одной строки, то нужно
заключать его в фигурные скобки.
Сокращения min, max, cur всегда записываются в именах переменных
в виде префиксов.
Вместо классов везде используются структуры.
Параметры шаблона всегда начинаются с префикса T.
Каждая ссылка в программе должна быть константной.
Классы векторов - шаблоны с параметром базового типа координат. Названия
Vector2D и Vector3D. Операция % - векторное произведение,
возвращает скаляр для Vector2D и вектор для Vector3D.
Операция * - скалярное произведение.
При использовании определителей в явном виде выделять функции Det2 и
Det3 - шаблоны с параметром типа переменных.
При решении систем линейных уравнений в явном виде выделять функции SolveLinear2
и SolveLinear3. Параметры - зависят от ситуации.
Граф задаётся структурой Graph. При это матрица смежности является членом структуры
и называется Adj, а количество вершин cVertices.
Стек задаётся структурой Stack с методами Push, Pop и OnTop.
Очередь задаётся структурой Queue с методами In (добавляет в хвост tail),
Out (берёт из головы head) и OnHead.