|
Каждый программист, будь то мужчина или женщина, имеет индивидуальные соображения по поводу того, что называют хорошим стилем программирования. Обычно эти идеи почерпнуты из множества источников, включая книги, журнальные статьи и другие языки. Я потратил достаточно много времени на разработку стиля программирования, используемого в этой книге. Моя основная цель заключается в том, чтобы сделать код более легким для понимания. Для этого нужно сохранить отдельные классы относительно простыми и в то же время сделать интерфейсы классов непротиворечивыми и понятными (вам необязательно знать, что находится внутри класса, чтобы быть в состоянии использовать его). Для простоты я также не активировал ряд возможностей C++. Эффективность - вторичный параметр. Хотя я уверен, что мой программный код достаточно эффективен, я избегал некоторых сложных подходов, которые могли бы сделать его еще более эффективным. Гибкость также вторична. Этот код достаточно легко использовать во многих случаях, однако я опустил ряд деталей (таких как конструкторы преобразования и виртульные функции-члены), которые могли сделать его еще более гибким. Далее представлен список некоторых используемых мною соглашений в случайном порядке: - я интенсивно привлекаю спецификаторы области видимости (такие как public, protected или private) в определениях классов. Вам не нужно - я упростил обработку ошибок. Многие из них обрабатываются через вывод простого сообщения в cerr и вызов функции exit. Хотя это делает код менее устойчивым, зато значительно его упрощает. Если вы хотите использовать мой код в коммерческом продукте, вам, вероятно, придется дорабо
- я использую там, где возможно, статические (спецификатор static), локальные для файла функции и переменные. Это иногда позволяет мне со - многословные идентификаторы записываются с прописными буквами - имена переменных всегда начинаются со строчной буквы. Имена переменных-членов - с символа подчеркивания. (Это позволяет различать локаль - я интенсивно использую новую запись для приведения типов. Вместо (double) i применяется static_casti.Teм нe мeнee лyчшe нe брать в расчет динамическое приведение (dynamic_cast), так как не все - чтобы код был достаточно простым, я избегал привлечения шаблонов, вложенных типов, больших иерархий наследования, пространств имен, статичес - я использую новый тип данных bool, появившийся в C++, хотя есть компиляторы, которые не поддерживают его. Учитываю только основные возможности, чтобы вы могли запустить код, добавив следующие строки:
#define true (1) #define false (0)
|