чудеса легкости ФЛЕНОВ МИХАИЛ Спецвыпуск: Хакер, номер #071, стр. 071-052-4 [видимость методов.] Видимость методов также относится к рефакторингу. Ни один лишний метод не должен быть виден другим классам для прямого вызова. Дабы не следить за видимостью, я всегда создаю все методы закрытыми, и только если какой-то из них понадобилось вызвать из вне, я делаю его открытым. Когда ты заканчиваешь работу над программой, просмотри все классы и видимость их методов. Возможно, какой-либо метод ты сделал открытым, а потом нашел другой способ решения задачи. Не помешает закрыть этот метод. Да, на производительности программы это не скажется, но код станет лучше и опрятнее. [читабельность метода.] Язык С++ великолепен и позволяет нам одну и ту же операцию записать несколькими способами. Программисты на других языках так же могут записывать определенные операции в одну строку. Если строка кода становится нечитабельной, то следует задуматься, а не разбить ли ее на две строки? Длинные строки кода очень тяжелы для восприятия. Лучше всего, если строка будет помещаться на экран полностью. Если с вертикальной прокруткой для просмотра метода целиком можно смириться, то горизонтальная неудобна, и с ней необходимо бороться. [классы.] Помимо хорошего именования классов, они также, как и методы, должны решать узкую задачу. Не стоит создавать один класс, который будет решать задачу дома, сарая и гаража одновременно. Лучше выстроить иерархию из нескольких классов (возможно, с одним базовым, который будет содержать общие методы и свойства). В JBuilder и Delphi 2006 есть очень удобная возможность выделения методов в отдельный класс или интерфейс. Эти возможности спрятаны в меню Refactor/Extract Interface и Refactor/Extract superclass. Допустим, ты написал класс, который характеризует дом. Затем в программе понадобилось создать гараж. Так как некоторые характеристики гаража будут такими же, как и для дома, можно выделить их в суперкласс, а затем наследовать от него гараж, сарай и другие строения со схожими параметрами. [улучшение классов.] Что еще можно сделать, чтобы классы стали лучше? Тут уже нужен более глубокий анализ на уровне методов. Необходимо выяснить, действительно ли методы относятся к задаче, решаемой классом. Если нет, то метод необходимо вынести за пределы класса. Куда, - тут я ничего хорошего посоветовать не могу, потому что все зависит от программы. Если метод принимает очень много параметров, то это не есть хорошо. Посмотри, возможно, некоторые параметры можно хранить в качестве членов класса. Да, в этом случае понадобятся методы для установки значения данного члена (ничего пошлого, так называют свойства классов), но если данный параметр нужен в нескольких методах, то эти затраты оправданы на все 100%. [форматирование кода.] Оформление кода также можно отнести к рефакторингу. Тут у программистов Visual Studio немного больше преимуществ. Чего стоит меню Edit/Advanced. Тут есть все необходимое, чтобы сделать код более удобным для чтения. В Delphi тоже есть большинство этих функций, но они по умолчанию спрятаны. И если ты знаешь горячие клавиши и вынесешь соответствующие кнопки на панель, тебе будет гораздо удобнее работать. |