C++: библиотека программиста



Download 1,95 Mb.
Pdf ko'rish
bet19/144
Sana24.02.2022
Hajmi1,95 Mb.
#223123
TuriРеферат
1   ...   15   16   17   18   19   20   21   22   ...   144
Bog'liq
C -Eldjer-Djeff-for-Real-Programmers-RUS-www.itlibitum.ru

 
17 
Несколько слов о стиле программирования 
Вот эти несколько слов: стиль программирования меня не волнует. Я достаточно краток? Если хотя бы 
половина времени, израсходованного на правильную расстановку фигурных скобок, тратилась на 
обдумывание программы или еще лучше — на общение с пользователями, то вся отрасль работала бы 
намного эффективнее. Конечно, единство стиля — вещь хорошая, но я еще не видел книги или 
руководства по стилю, которые бы стоили даже часового собрания группы в начале проекта. К тому же 
ни одна книга или руководство по стилю не превратят код неаккуратного программиста в нечто 
осмысленное. В сущности, стиль часто используется как оправдание недостатка внимания к самой 
программе. Наконец, я еще не видел, чтобы в спорах о стиле один программист в чем-то убедил 
другого, поэтому любые дискуссии на эту тему считаю бесполезной тратой времени. 
У меня есть свои собственные принципы и свой стиль, но в основном я собираюсь отказаться от своего 
пути и понемногу пользоваться всеми стилями, с которыми мне приходилось встречаться. Книга 
посвящена языковым идиомам, а не расположению фигурных скобок или регистру символов. Надеюсь, 
мое решение будет раздражать всех читателей в равной мере. 
Я также весьма вольно обошелся с подставляемыми (inline) функциями классов, особенно с 
виртуальными. В каноническом варианте подставляемые функции должны выглядеть следующим 
образом: 
class Foo { 
public: 
void 
MemberFn(); 
}; 
inline void Foo::MemberFn() 

... 

В моей книге этот фрагмент будет выглядеть иначе: 
class Foo { 
public: 
void MemberFnO {...}; 
}; 
Я оформлял как подставляемые даже виртуальные функции классов, хотя одни компиляторы 
отвергают такой синтаксис, а другие обрабатывают его неправильно. Делалось это для экономии места. 
Если бы тексты всех подставляемых функций приводились отдельно, книга заметно выросла бы в 
размерах, а разрывы страниц чаще приходились на середину листинга. Так что не относитесь к 
подставляемым функциям слишком серьезно. 
Садитесь в любимое кресло, заводите хорошую музыку, ставьте под руку чашку чая и попытайтесь 
получить удовольствие! 



Синтаксис С++ 
За годы преподавания C++ я узнал, что подавляющее большинство программистов C++ (включая 
самых опытных) редко пользуется некоторыми возможностями языка. Конечно, дело это сугубо 
индивидуальное, но при всей сложности и глубине C++ небольшой обзор не повредит никому. В этой и 
двух следующих главах я постараюсь выровнять уровень подготовки читателей перед тем, как пе-
реходить к действительно интересным темам. Эта глава не заменит Annotated Reference Manual или 
другое справочное руководство — вы не найдете в ней полной спецификации языка. Я лишь 
рассмотрю некоторые языковые средства, которые часто понимаются неверно или не понимаются 
вовсе. Придержите шляпу и приготовьтесь к стремительному облету синтаксиса C++! 
Переменные и константы 
Болтовню о том, что такое переменные и для чего они нужны, пропускаем. Нашего внимания 
заслуживают две темы: константность и сравнение динамических объектов со стековыми. 
const 
Ключевое слово 
const
, которое в разных контекстах принимает разные значения, одно из самых 
информативных в C++. Да, между этими значениями есть кое-что общее, но вам все равно придется 
запомнить все конкретные случаи. 
Константные переменные 
Если переменная объявлена с ключевым словом 
const
, значит, она не должна меняться. После 
определения константной переменной вы уже не сможете изменить ее значение или передать ее в 
качестве аргумента функции, которая не гарантирует ее неизменности. Рассмотрим простой пример с 
константной целой переменной. 
const int j = 17;
// Целая константа 
j = 29;
// Нельзя, значение не должно меняться 
const int i;
// Нельзя, отсутствует начальное значение 
Третья строка неверна, поскольку в ней компилятору предлагается определить случайную переменную, 
которую никогда не удастся изменить, — этакий странный генератор случайных целых констант. 
Вообще говоря, вы сообщаете компилятору, какой конструктор он должен использовать в конкретном 
случае. Если бы переменная 
i
относилась к нетривиальному классу, то при объявлении константного 
экземпляра пришлось бы явно указать конструктор и его аргументы. 
int
— вырожденный случай, 
поскольку на самом деле 
const int j=17;
— то же, что и 
int j(17)

Но вот компилятор узнал, что нечто должно быть константным. Он просыпается и начинает искать 
ошибки — не только фактические, но и потенциальные. Компилятор не разрешит использовать ваше 
константное нечто в любом неконстантном контексте, даже если шестилетний ребенок разберется в 
программе и докажет, что в ней нет ни одной ошибки. 
const i = 17; 
int& j = 1; 
// Нельзя, потому что позднее j может измениться 

Download 1,95 Mb.

Do'stlaringiz bilan baham:
1   ...   15   16   17   18   19   20   21   22   ...   144




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish