Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #71, ОКТЯБРЬ 2006 г.

чудеса легкости

ФЛЕНОВ МИХАИЛ

Спецвыпуск: Хакер, номер #071, стр. 071-052-4


[видимость методов.]

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

Когда ты заканчиваешь работу над программой, просмотри все классы и видимость их методов. Возможно, какой-либо метод ты сделал открытым, а потом нашел другой способ решения задачи. Не помешает закрыть этот метод. Да, на производительности программы это не скажется, но код станет лучше и опрятнее.

[читабельность метода.]

Язык С++ великолепен и позволяет нам одну и ту же операцию записать несколькими способами. Программисты на других языках так же могут записывать определенные операции в одну строку. Если строка кода становится нечитабельной, то следует задуматься, а не разбить ли ее на две строки?

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

[классы.]

Помимо хорошего именования классов, они также, как и методы, должны решать узкую задачу. Не стоит создавать один класс, который будет решать задачу дома, сарая и гаража одновременно. Лучше выстроить иерархию из нескольких классов (возможно, с одним базовым, который будет содержать общие методы и свойства).

В JBuilder и Delphi 2006 есть очень удобная возможность выделения методов в отдельный класс или интерфейс. Эти возможности спрятаны в меню Refactor/Extract Interface и Refactor/Extract superclass. Допустим, ты написал класс, который характеризует дом. Затем в программе понадобилось создать гараж. Так как некоторые характеристики гаража будут такими же, как и для дома, можно выделить их в суперкласс, а затем наследовать от него гараж, сарай и другие строения со схожими параметрами.

[улучшение классов.]

Что еще можно сделать, чтобы классы стали лучше? Тут уже нужен более глубокий анализ на уровне методов. Необходимо выяснить, действительно ли методы относятся к задаче, решаемой классом. Если нет, то метод необходимо вынести за пределы класса. Куда, - тут я ничего хорошего посоветовать не могу, потому что все зависит от программы.

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

[форматирование кода.]

Оформление кода также можно отнести к рефакторингу. Тут у программистов Visual Studio немного больше преимуществ. Чего стоит меню Edit/Advanced. Тут есть все необходимое, чтобы сделать код более удобным для чтения. В Delphi тоже есть большинство этих функций, но они по умолчанию спрятаны. И если ты знаешь горячие клавиши и вынесешь соответствующие кнопки на панель, тебе будет гораздо удобнее работать.

Назад на стр. 071-052-3  Содержание  Вперед на стр. 071-052-5