Программирование >>  Дополнительные возможности наследования 

1 ... 227 228 229 [ 230 ] 231 232 233 ... 265


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

Используйте законченные предложения с соответствующей пунктуацией и прописными буквами в начале предложений. Потом вы скажете себе за это спасибо. Избегайте условных обозначений и сокращений, понятных только вам. То, что сейчас кажется очевидным, через несколько месяцев может показаться абсолютно непонятным.

Используйте пустые строки для отделения логических блоков профаммы. Объединяйте строки программы в логические фуппы.

Организация доступа к данным и методам

Организация доступа к данным и методам также должна подчиняться определенным правилам. Ниже приведен ряд советов, касающихся того, как нагляднее описать в программе различия в доступе к ее разным членам.

Всегда используйте спецификаторы public:, private; и protected;. Не следует полагаться на установки доступа, делаемые по умолчанию.

Сначала объявите открытые (public) члены, затем защищенные (protected;), а за ними закрытые (private:). Объявляйте переменные-члены после методов.

Сначала объявите конструктор (конструкторы), а затем - деструктор. Сфуппируй-те вместе перезафужаемые методы и методы доступа.

Методы и переменные-члены внутри каждой фуппы желательно расположить по именам в алфавитном порядке. Следует также упорядочить по алфавиту включения файлов с помощью директивы einclude.

Несмотря на то что с замещенными функциями использование ключевого слова virtual необязательно, лучше им не пренебрегать. Оно напомнит вам, что данная функция является виртуальной, и обеспечит преемственность объявлений.

Определения класспв

Старайтесь сохранять порядок определения методов таким же, как и в объявлении. Это ускорит поиск нужного метода.

При определении функции размещайте тип возвращаемого значения и все другие спецификаторы на предыдущей строке, чтобы имя класса и функции располагалось в начале строки. Это значительно облегчит поиск функций.

Старайтесь избегать этого в файлах заголовков, кроме случая включения файла заголовка базового класса, от которого производится данный класс. Использование директив flinclude также необходимо в тех случаях, когда в объявляемом классе используются объекты другого класса. Для классов, на которые просто делаются ссылки, достаточно будет передать ссылку или указатель.

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

597511



Во всех файлах заголовков следует использовать систему защиты от повторного объявления, с которой вы познакомились выше при рассмотрении макросов.

Используйте макрос assertO без всяких ограничений. Он не только помогает находить ошибки, но и облегчает чтение программы. Этот макрос также помогает сконцентрировать мысли автора на том, что является допустимым, а что - нет.

Ключевое слово coost

Используйте ключевое слово const везде, где считаете нужным: для параметров, переменных и методов. Часто существует потребность в использовании как константных, так и неконстантных версий некоторых методов. Будьте очень осторожны при явном приведении типа с константного к неконстантному и наоборот (хотя иногда такой подход оказывается единственным способом решения проблемы). Убедитесь в целесообразности этих действий и добавьте подробный комментарий.

Сделаем еще один шаг оперед

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

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

Где оолдчоюь справвчндю онформацою о советы

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

Я принимаю участие в группах новостей Internet, посвященных С++ (сотр. lang. C++ и сотр.lang,C++.moderated), и рекомендую их в качестве превосходных источников информации и поддержки.

Кроме того, стоит поискать локальные группы пользователей. Во многих городах есть так назьшаемые группы по интересам (в том числе и группы С++), в которых можно встретить других программистов и обменяться идеями.



Журналы

Закрепить свои навыки можно, подписавшись на хороший журнал, посвященный программированию на языке С++. По моему мнению, самым лучшим журналом по этой тематике является С++ Report издательства SIGS Publications. Каждый выпуск этого журнала содержит полезные статьи, поэтому их стоит сохранять - ведь то, что не волнует вас сегодня, станет чрезвычайно важным уже завтра. (Предостережение: я написал об этом журнале в первом и втором издании книги, но теперь я веду в нем ежемесячную рубрику, и потому налицо конфликт интересов. Тем не менее я по-прежнему считаю, что этот журнал - потрясающее издание.)

Журнал С++ Report можно приобрести в издательстве S1GS Publications по адресу: P.O. Box 2031, Langhome, PA 19047-9700.

Выскажите свое мненив в кноав

Если у вас есть комментарии, предложения или замечания относительно этой или других книг, я бы с интересом их выслушал. Пишите мне по адресу:

jliberty@libertyassociates.com или посетите мой Web-узел: www.libertyassociates.com. Я с нетерпением буду ждать ваши отзывы.

Рвкомвнуувтся

Обратитесь к другим книгам по С++. Нет такой книги, в которой все темы были бы рассмотрены одинаково полно и которая могла бы научить всему, что нужно знать профессиональному программисту С++. Подпишитесь на хороший журнал по С++ и подключитесь к хорошей группе шовостей пользователей С++.

Нв рвкомвнуувтся

Не ограничивайтесь при освоении С++ только чтением чужих программ. Лучший способ изучения языка - самому писать программы.

Резюме

Сегодня вы узнали много подробностей о работе с препроцессором. При каждом запуске компилятора сначала запускается препроцессор, который расшифровывает и выполняет такие директивы, как edefine и #ifdef.

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

Макросы обеспечивают сложную текстовую подстановку на основе парамефов, передаваемых им во время компиляции профаммы. Чтобы гарантировать правильное выполнение подстановки, каждый парамеф макроса нужно заключить в круглые скобки.

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



1 ... 227 228 229 [ 230 ] 231 232 233 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика