Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Директивы включения следует сортировать (по месту в иерархии системы, ниже уровень — выше позиция) и группировать. Оставляйте пустую строку между группами




#include <fstream>

#include <iomanip>

 

#include <qt/qbutton.h>

#include <qt/qtextfield.h>

 

#include "com/company/ui/PropertiesDialog.h"

#include "com/company/ui/MainWindow.h"


Пути включения не должны быть абсолютными. Вместо этого следует использовать директивы компилятора.

Директивы включения должны располагаться только в начале файла.

Общая практика. Избегайте нежелательных побочных эффектов, которые может вызвать «скрытое» включение где-то в середине файла исходного кода.

 

5.1


43. Локальные типы, используемые в одном файле, должны быть объявлены только в нём.

Улучшает сокрытие информации.

44. Разделы класса public, protected и private должны быть отсортированы. Все разделы должны быть явно указаны.

Сперва должен идти раздел public, что избавит желающих ознакомиться с классом от чтения разделов protected/private.

Приведение типов должно быть явным. Никогда не полагайтесь на неявное приведение типов.

floatValue = static_cast<float>(intValue); // НЕЛЬЗЯ: floatValue = intValue;


Этим программист показывает, что ему известно о различии типов, что смешение сделано намеренно.

5.2


46. Следует инициализировать переменные в месте их объявления.

Это даёт гарантию, что переменные пригодны для использования в любой момент времени. Но иногда нет возможности осуществить это:

int x, y, z;

getCenter(&x, &y, &z);


В этих случаях лучше оставить переменные неинициализированными, чем присваивать им какие-либо значения.

Переменные никогда не должны иметь двойной смысл.

Улучшайте читаемость, убеждаясь, что все представленные концепции не предполагают разночтений. Сокращайте возможность ошибки из-за побочных эффектов.

Следует избегать использования глобальных переменных.

Не существует причины использовать глобальные переменные в C++ (на самом деле существует.— Примечание переводчика). То же касается глобальных функций и (статических) переменных, область видимости которых — весь файл.

49. Не следует объявлять переменные класса как public.

Эти переменные нарушают принципы сокрытия информации и инкапсуляции. Вместо этого используйте переменные с модификатором private и соответствующие функции доступа. Исключение — класс без поведения, практически структура данных (эквивалент структур языка C). В этом случае нет смысла скрывать эти переменные.

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

(Пункт № 50 отсутствует.— Примечание переводчика.)

51. Символ указателя или ссылки в языке C++ следует ставить сразу после имени типа, а не с именем переменной.

float* x; // НЕ РЕКОМЕНДУЕТСЯ: float *x;

int& y; // НЕ РЕКОМЕНДУЕТСЯ: int &y;


То, что переменная — указатель или ссылка, относится скорее к её типу, а не к имени. Программисты на C часто используют другой подход, но в C++ лучше придерживаться этой рекомендации.

53. Следует избегать неявного сравнения булевых (логических) переменных и указателей с нулём.

if (nLines!= 0) // НЕ РЕКОМЕНДУЕТСЯ: if (nLines)

if (value!= 0.0) // НЕ РЕКОМЕНДУЕТСЯ: if (value)


Стандарт C++ не гарантирует, что значения переменных int и float, равные нулю, будут представлены как бинарный 0. Также при явном сравнении видно сравниваемый тип.

Логично было бы предположить, что также и указатели не следует неявно сравнивать с нулём, например, if (line == 0) вместо if (line). Последнее является очень распространённой практикой в C/C++, поэтому также может быть использовано.

Переменные следует объявлять в как можно меньшей области видимости.

Это упрощает контроль над действием переменной и сторонними эффектами.

5.3


55. Нельзя включать в конструкцию for() выражения, не относящиеся к управлению циклом.

sum = 0; // НЕЛЬЗЯ: for (i = 0, sum = 0; i < 100; i++)

for (i = 0; i < 100; i++) sum += value[i];

sum += value[i];


Улучшайте поддержку и читаемость. Строго разделяйте контроль над циклом и то, что в нём содержится.





Поделиться с друзьями:


Дата добавления: 2015-10-20; Мы поможем в написании ваших работ!; просмотров: 422 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2462 - | 2328 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.