114 _____ ___________Часть II. Программирование на C++
ные эффекты, к ним относящиеся. И пусть внутри функций код говорит сам за себя. Однако если какие-то строки окажутся действительно нетривиальными, добавьте к ним комментарий.
Наконец желательно кратко описывать глобальные переменные. Следы свободно разбросанных по всему тексту глобальных переменных очень легко потерять.
Конечно, это только советы. Экспериментируйте не только со стилем ваших комментариев, но и с их количеством, тогда в конце концов вы достигнете нужного качества.
Именование переменных и функций
Существенную роль в улучшении доступности и читаемости кода, помимо комментариев, играют также соглашения об именах. Очень часто программисты, не задумываясь, вводят функции и переменные с ничего не выражающими именами. Возьмите, к примеру, переменную
int x:
В некоторых случаях это осмысленное имя. Если вы строите двумерный график в плоскости х-у, то х — замечательное имя для переменной: ясное, емкое и соответствующее проблемной области. Если вы решаете линейное уравнение с аргументом х, то и здесь такое имя подходит как нельзя лучше;
это неизвестное в большинстве уравнений, встречающихся вам еще со школьных времен. Однако оно далеко не столь замечательно, когда им начинают обозначать количество рабочих дней сотрудника на конец месяца или процентную ставку по его пенсионному счету. Например, откуда ясно, что следующее выражение вычисляет ожидаемый годовой доход по счету (весьма упрощенно, разумеется):
float у = z * х / 100;
Нужное вычисление исправно выполняется, но программисту, незнакомому с задачей, эта строка ничего не говорит. Если вы ненавидите печатать, то подобные переменные вам как бальзам на душу, но вы войдите в положение программиста, которому придется иметь дело с вашим текстом. Исправить положение может комментарий, например:
'// годовой доход = начальная сумма * процент / 100 float у = z * х / 100;
однако тогда вам придется комментировать х, у и z везде, где только они встретятся, поскольку без соответствующего пояснения они абсолютно безлики. А вот пример написания, требующего несколько большего числа нажатий на клавиши, но в корне улучшающего ситуацию:
float yearlylnterest == beginningBalance * interestRate / 100;