630___________________________________________Глава 11

Хороший стиль программирования

Хороший стиль программирования ————————————————————————

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

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

inline double Circ(double R){return 6.28318 * R;}

Обращение в любом месте программы вида Circ(2) приведет к встраиванию г
соответствующем месте кода 6.28318 * 2 (если компилятор сочтет это целесообраз
ным).

11.5.7 Перегрузка функций

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

Хороший стиль программирования ———————————————————————

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

Пусть, например, вы хотите определить функции, добавляющие в заданную
строку типа (char *) символ пробела и значение целого числа, или значение числа
с плавающей запятой, или значение булевой переменной. Причем хотите обраща-
ться в любом случае к функции, которую называете, например, ToS, предоставив
компилятору самому разбираться в типе параметра и в том, какую из функций
надо вызывать в действительности. Для решения этой задачи вы можете описать
следующие функции:

char * ToS(char *S,int X)
(return strcat(strcat(S," "),IntToStr(X).c_str());}

char * ToS(char *S, double X)
{return strcat(strcat(S," "),FloatToStr(X).c_str());}

char * ToS(char *S, bool X)
(if (X) return strcat(S," true");

else return strcat(S," false");)

Тогда в своей программе вы можете написать, например, вызовы:

char S[128] = "Значение =";

Labell-Caption = ToS(S,5);

ИЛИ

char S[128] = "Значение =";

Label2-Caption = ToS (3,5.3);

