Частые замечания в заданиях по C++ — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «В этой статье приведены некоторые замечания, которые довольно часто встречаются в работа…»)
 
Строка 1: Строка 1:
В этой статье приведены некоторые замечания, которые довольно часто встречаются в работах по C++.
+
В этой статье приведены некоторые замечания, которые довольно часто встречаются в работах по C++. Пока никак не упорядочены.
  
 
Собственно, замечания:
 
Собственно, замечания:
* Не надо использовать приведение в C-стиле (type)v или type(v) --- с помощью них можно привести практически все что угодно к чему угодно, следует использовать соответствующие C++ аналоги: static_cast, dynamic_cast, reinterpret_cast и const_cast.
+
* Не надо смешивать пробелы и табы для отступов. Необходимо придерживатся строго одного стиля (лучше с пробелами), иначе у кого-нибудь что-нибудь поедет и это будет невозможно читать. Кроме того, таким образом легко заметить копи-паст, который не одобряется.
 +
* Тоже самое с фигурными скобками — придерживайтесь одного стиля.
 +
* Не надо использовать приведение в C-стиле (type)v или type(v) с помощью них можно привести практически все что угодно к чему угодно, следует использовать соответствующие C++ аналоги: static_cast, dynamic_cast, reinterpret_cast и const_cast.
 +
* Не надо заменять символы их ascii-кодами — следует писать '0', а не 48.
 +
* Если не предполагается, что переменная должна изменятся, следует объявлять ее константной. Особенно, если это касается сигнатуры функции.
 +
* Лучше не создавать функций void print_something(something const & s, ostream & o), лучше перегружать operator<<, в котором точно не надо выводить в конце перевод строки.
 +
* Есть замечательные стандарные функции std::reverse, std::copy и т.д., лежащие в <algorithm>. Не следует изобретать велосипеды и писать свои реализации.
 +
* Есть только один случай, когда название функции может являтся существительным — когда название отрашает то, что функция возвращает: например, union, gcd, area и т.д.
 +
* Не надо писать if, for и while в одну строчку.
 +
* Есть замечательное соглашение, что функции сравнении int compare(a, b) возвращают число, меньшее нуля, если a < b, равное нулю, если a = b, и большее нуля, если a > b. Не надо изобретать своих неинформативных возвращаемых значений.
 +
* Следует объявлять переменные как можно ближе к месту первого использования. Это, во-первых, уменьшает число переменных в данной области видимости до тех, которые действительно необходимы, во-вторых, если первое испоьзование — это инциализация, это уменьшает время проведенное переменной в неинициаизированном состоянии, что уменьшает вероятность ей в таком состоянии быть поиспользованной.

Версия 05:16, 4 июня 2011

В этой статье приведены некоторые замечания, которые довольно часто встречаются в работах по C++. Пока никак не упорядочены.

Собственно, замечания:

  • Не надо смешивать пробелы и табы для отступов. Необходимо придерживатся строго одного стиля (лучше с пробелами), иначе у кого-нибудь что-нибудь поедет и это будет невозможно читать. Кроме того, таким образом легко заметить копи-паст, который не одобряется.
  • Тоже самое с фигурными скобками — придерживайтесь одного стиля.
  • Не надо использовать приведение в C-стиле (type)v или type(v) — с помощью них можно привести практически все что угодно к чему угодно, следует использовать соответствующие C++ аналоги: static_cast, dynamic_cast, reinterpret_cast и const_cast.
  • Не надо заменять символы их ascii-кодами — следует писать '0', а не 48.
  • Если не предполагается, что переменная должна изменятся, следует объявлять ее константной. Особенно, если это касается сигнатуры функции.
  • Лучше не создавать функций void print_something(something const & s, ostream & o), лучше перегружать operator<<, в котором точно не надо выводить в конце перевод строки.
  • Есть замечательные стандарные функции std::reverse, std::copy и т.д., лежащие в <algorithm>. Не следует изобретать велосипеды и писать свои реализации.
  • Есть только один случай, когда название функции может являтся существительным — когда название отрашает то, что функция возвращает: например, union, gcd, area и т.д.
  • Не надо писать if, for и while в одну строчку.
  • Есть замечательное соглашение, что функции сравнении int compare(a, b) возвращают число, меньшее нуля, если a < b, равное нулю, если a = b, и большее нуля, если a > b. Не надо изобретать своих неинформативных возвращаемых значений.
  • Следует объявлять переменные как можно ближе к месту первого использования. Это, во-первых, уменьшает число переменных в данной области видимости до тех, которые действительно необходимы, во-вторых, если первое испоьзование — это инциализация, это уменьшает время проведенное переменной в неинициаизированном состоянии, что уменьшает вероятность ей в таком состоянии быть поиспользованной.