Глава 2 Организация кода
Глава 2
Организация кода
2.0. Введение
Возможно, что одной из причин популярности C++ является его способность одинаково хорошо подходить для маленьких, средних и больших проектов. Для небольшого прототипа или исследовательского проекта можно написать всего несколько классов, а при росте проекта и увеличении числа сотрудников C++ позволяет масштабировать приложение, разбив его на модули, различающиеся по степени своей независимости. Недостатком здесь является то, что вы должны потратить время на то, чтобы вручную выполнить реорганизацию (добавить пространства имен, реорганизовать физическое расположение заголовочных файлов и т.д.). Обычно это стоит того, так как при этом приложение становится модульным и позволяет отдельным людям сосредоточиться только на их локальной функциональной области.
Количество необходимого ручного труда обратно пропорционально количеству времени, потраченному на первоначальную разработку модульности. Начните с нескольких хороших методик достижения модульности, и ваш код будет масштабируемым.
Если вы еще не используете пространства имен, вы, возможно, по крайней мере, слышали о них и уже используете одно из них: пространство имен std, которое является пространством имен, содержащим стандартную библиотеку. Исходя из моего опыта, пространства имен используются не настолько часто, насколько следовало бы но это не потому, что они очень сложны или их использование требует больших усилии. Рецепт 2.3 объясняет, как с помощью пространств имен сделать код модульным.
Многие рецепты этой главы описывают методики, применяемые в заголовочных файлах. Так как здесь обсуждается несколько возможностей, каждая из которых относится к отдельной части заголовочного файла, я поместил во введение пример 2.1, который показывает, как выглядит типичный заголовочный файл, который использует все методики, описанные в этой главе.
Пример 2.1. Заголовочный файл
#ifndef MYCLASS_H__ // защита #include, рецепт 2.0
#define MYCLASS_H__
#include <string>
namespace mylib { // пространства имен, рецепт 2.3
class AnotherClass; // предварительное объявление класса, рецепт 2.2
class Logger;
extern Logger* gpLogger; // объявление внешнего хранилища, рецепт 2.1
class MyClass {
public:
std::string getVal() const;
// ...
private:
static int refCount_;
std::string val_;
};
}
// Встраиваемые определения, рецепт 2.4
inline std::string MyClass::getVal() const {
return(val_);
}
#include "myclass.inl"
} // namespace
#endif // MYCLASS_H__
После написания заголовочного файла также вам будет нужен файл реализации, под которым я понимаю файл .cpp, содержащий не только объявления, но и определения. Файл реализации оказывается менее сложным, чем заголовочный файл, но ради полноты пример 2.2 содержит пример реализации файла, идущего в комплекте с заголовочным файлом из примера 2.1.
Пример 2.2. Файл реализации
#include "myclass.h"
namespace mylib {
MyClass::refCount_ = 0; // статическое определение, рецепт 8.4
MyClass::foo() { // реализация метода
// ...
};
}
Конечно, файлы реализации будут полны обдуманных, хорошо написанных комментариев, но ради простоты я оставляю этот вопрос за скобками.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 8 Введение в синхронизацию выполнения кода ядра
Глава 8 Введение в синхронизацию выполнения кода ядра В приложениях, рассчитанных на работу с совместно используемой памятью (shared memory), необходимо позаботиться о том, чтобы совместно используемые ресурсы были защищены от конкурентного доступа. Ядро — не исключение.
Организация
Организация Значительное число приложений включены в Часть 2 (это немного увеличивает объем книги). Это облегчает чтение. Таким образом, не нужно все время заглядывать в Приложения при прочтении Части 2. Это очень неудобно, особенно если читать txt версию книги. Данная книга
Глава 14 Организация удаленного доступа с помощью X Window и VNC
Глава 14 Организация удаленного доступа с помощью X Window и VNC В главе 13 рассматривались серверы удаленной регистрации rlogind, Telnet и SSH. Совместно с клиентскими программами, выполняющимися на других компьютерах, эти серверы позволяют пользователям регистрироваться в системе
Глава 26 Организация виртуальной частной сети
Глава 26 Организация виртуальной частной сети Одна из проблем передачи данных в Internet связана с шифрованием информации. Во многих часто применяющихся протоколах, например Telnet и FTP, не предусмотрено кодирование информации. Данные, в том числе пользовательское имя и пароль,
Глава 30 Организация шлюза в Интернете для локальной сети
Глава 30 Организация шлюза в Интернете для локальной сети В этой главе мы займемся созданием точки доступа в Интернет для локальной сети. Обычно для этого используется выделенная линия, по концам которой установлены модемы, подключаемые к последовательному порту. В
Организация
Организация Представляет собой единицу компании или другой сущности (например, государственное учреждение или обслуживающий филиал), целиком управляющую многими проектами. Все проекты внутри организации подчиняются общему руководителю высшего уровня и общим
Глава 7 Организация документооборота
Глава 7 Организация документооборота Представление о документообороте По определению документооборот – это движение или обращение документов с момента их создания или получения до завершения исполнения, отправки или сдачи в архив.Документ, как уже говорилось выше, –
Глава 13 Использование неуправляемого кода
Глава 13 Использование неуправляемого кода Несмотря на то что библиотека .NET Compact Framework имеет множество классов для выполнения самых разных задач, во многих случаях приходится прибегать к вызовам функций Windows API. А в некоторых случаях использование функций Windows API даже
Глава 6 Компьютерная организация данных и их обработка
Глава 6 Компьютерная организация данных и их обработка 6.1. Основные определения и понятия Понятия «информация» и «данные» являются базовыми, первичными понятиями в информатике, поэтому на протяжении многих лет существовала и существует в настоящее время проблема при их
Глава 12 Организация работы на основных стоках
Глава 12 Организация работы на основных стоках Название главы может показаться несколько громким, и, вероятно, пробежав глазами несколько первых страниц, вы не найдете информации об интересующих вас фотобанках. Все очень просто – в начале книги мы уже говорили, что
Глава 5 Агрессивные формы кода и борьба с ними
Глава 5 Агрессивные формы кода и борьба с ними ? Все гениальное – просто. Пишем вирус одной строкой!? Веб-страница в обличии Фредди Крюгера – "потрошит" ваш винчестер!? Антология сокрытия вирусного кода? Как работает эвристический анализатор кода и почему даже два
4 Организация
4 Организация ГОВОРИМ МЫ О МОБИЛЬНОМ ВЕБЕ или об обычном, базовые принципы информационной архитектуры — правильная разметка кода, баланс ширины и глубины, основы поведения пользователя — остаются неизменными. Но для правильной организации взаимодействия с мобильным