Пособие по практике программирования

и понятны. Последняя версия тоже





поскольку выражения вроде
queue.capacity+++;
n=queue.nusers()
вполне ясны и понятны. Последняя версия тоже еще не идеальна: термины "items" и "users" обозначают одно и то же, так что для одного понятия следовало бы использовать только один термин.
Используйте активные имена для функций. Имя функции должно базироваться на активном глаголе (в действительном залоге), за которым может следовать существительное:
now = date.getTime();
putchar( "\n-);
Функции, которые возвращают логическое значение (истина или ложь — t rue или false), нужно называть так, чтобы их смысл не вызывал сомнений. Так, из вызова
? if (checkoctal(c)) ...
непонятно, когда будет возвращаться t rue, а когда false, а вот вызов
if (isoctal(c)) ...
не оставляет сомнений в том, что результат будет истиной, если аргумент — восьмеричное число, и ложью — в противном случае.
Будьте точны. Как мы уже решили, имя не только обозначает объект, но и предоставляет читателю некоторую информацию о нем. Неверно подобранное имя может стать причиной совершенно таинственных ошибок.
Один из нас написал и не один год распространял макрос, называемый isoctal, имеющий некорректную реализацию:
«define isoctal(c) ((с) >= '0' && (с) <= '8')?
вместо правильного
«define isoctal(c) ((c)>= '0' && (с) <= '7')
В этом случае имя было правильным, а реализация ошибочной; правильное имя облегчило раскрытие ошибки.
В следующем примере имя и код находятся в полнейшем противоречии:
? public boolean inTable(Object obj) {
? int j = this.getlndex(ob]);
? return (j == nTable);
? }
Функция getlndex возвращает значение от 0 до nTable-1 в случае, если объект найден, и nTable, если объект не найден. Таким образом, возвращаемое логическое значение будет прямо противоположно тому, что подразумевается в имени функции. Во время написания кода это, может быть, не страшно, но, если программа будет дорабатываться позднее, да еще другим программистом, подобное неправильное имя наверняка станет причиной затруднений.

Содержание раздела