109
правок
Изменения
Нет описания правки
Собственно, замечания:
* Список частых замечаний не прочитан или не осознан.
* Не надо смешивать пробелы и табы для отступов. Необходимо придерживатся придерживаться строго одного стиля (лучше с пробелами), иначе у кого-нибудь что-нибудь поедет и это будет невозможно читать. Кроме того, таким образом легко заметить копи-паст, который не одобряется.
* Тоже самое с фигурными скобками — придерживайтесь одного стиля.
* Не надо использовать приведение в C-стиле (type)v или type(v) — с помощью них можно привести практически все что угодно к чему угодно, следует использовать соответствующие C++ аналоги: static_cast, dynamic_cast, reinterpret_cast и const_cast.
* Если не предполагается, что переменная должна изменятся, следует объявлять ее константной. Особенно, если это касается сигнатуры функции.
* Лучше не создавать функций void print_something(something const & s, ostream & o), лучше перегружать operator<<, в котором точно не надо выводить в конце перевод строки.
* Есть замечательные стандарные стандартные функции, лежащие в <algorithm>. Не следует изобретать велосипеды и писать свои реализации. Наиболее полезные: reverse, copy, swap, fill, max, min. * Есть только один случай, когда название функции может являтся являться существительным — когда название отражает то, что функция возвращает: например, union, gcd, area и т.д.* Не надо писать if, for и while в одну строчку. Если внтри внутри for'а ничего не делается, ";" следует перенести на следующую строчку.
* Есть замечательное соглашение, что функции сравнении int compare(a, b) возвращают число, меньшее нуля, если a < b, равное нулю, если a = b, и большее нуля, если a > b. Не надо изобретать своих неинформативных возвращаемых значений.
* Следует объявлять переменные как можно ближе к месту первого использования. Это, во-первых, уменьшает число переменных в данной области видимости до тех, которые действительно необходимы, во-вторых, если первое испоьзование использование — это инциализацияинициализация, это уменьшает время проведенное переменной в неинициаизированном неинициализированном состоянии, что уменьшает вероятность ей в таком состоянии быть поиспользованнойиспользованной.
* Пользуйтесь нормальными словарями. Хотя бы lingvo.yandex.ru. Там можно узнать, например, который из переводов слов «площадь» или «больше» нужен. Там же можно посмотреть, что по-английски вычитание пишется как subtraction, а не substraction или еще как-нибудь.
* После if, for и while перед «(» должен быть пробел.
* Не надо объединять переменные в объявлениях по типу. Одновременно можно объявлять только такие небольшие группы как x,y, или a,b,c или еще что-нибудь подобное.
* Не надо делать using в заголовочных файлах вне классов и функций. Не надо добавлять в глобальную область видимость то, что никто не просил.
* Не надо писать бессмысленные комментарии в духе // constructors, или // ariphmetic arithmetic operators, или еще чего-нибудь подобного. Это и так очевидно.* Слудет Следует совмещать объявление и инициализацию объекта там, где это возможно.
* По возможности не следует использовать глобальные переменные. За их состоянием сложнее следить.
* В конце операторов ввода/вывода следует восстанавливать измененные параметры потока.
* Лучше явно подключать необходимые заголовочные файлы. Например, если main.cpp используется iostream, то напишите явно #include <iostream>, даже несмотря на то, что он подключается в big_int.h, который подключается в main.cpp, что в принципе достаточно для работы. * Не надо называть одинаковые вещи разными именами и наоборот. Если хочется иметь функцию-геттер size() и private поле size, назовите поле size_.* Не стоит копировать чужой код, особенно не думая.