ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2025
Просмотров: 3212
Скачиваний: 1
Этот код (из небольшого переводчика на Pig Latin10, который я как-то писал) сле дует за кодом, который пытается найти первую гласную в целевом слове, если та ковая существует. Если ее нет, i n d e x O f F i r s t V o w e l принимает значение -1. Однако буква у также может рассматриваться как гласная в некоторых ситуациях, так что этот метод должен принимать во внимание и ее.
В методе, вызывающем Н а s N o V o w e l s ( ) , следующая строка гораздо проще для понимания, чем исходное логическое выражение:
i f ( H a s N o V o w e l s ( y p o s , v o w e l P o s ) ) { r e t u r n 'USE_WHOLE_WORD; }
Данный пример иллюстрируетрефакторинг (реорганизацию кода).
Пишите код, который открывает его предназначение. Например, следующий метод, реализующий алгоритм преобразования английских слов на "поросячью ла тынь" ("убрать буквы перед первой гласной, перенести их в конец слова и добавить 'ау'"), автоматически рассказывает о решаемой задаче даже без комментариев:
p u b l i c s t r i n g C o n v e r t T o P i g L a t i n ( s t r i n g w o r d )
r e t u r n G e t B a c k P a r t ( w o r d ) + G e t F r o n t P a r t ( w o r d ) + " a y " ;
Код написан на высоком уровне, с использованием имен методов, которые ясно указывают их предназначение, не детализируя, как именно они работают — с применением циклов, ветвлений и т.д. Легко увидеть, как минимум в общем, что делает каждый вызов метода. Исходная версия этого метода была полна конст рукций i f , циклов, сложных логических выражений и локальных переменных.
Алгоритм "поросячьей латыни" прост, но некоторые его составные части несколь ко запутанны — как, например, поиск первой гласной для разбивки слова. Ис пользование описанного стиля работает сверху вниз (от общего к частному), от кладывая детали. Как можно предположить, методы G e t B a c k P a r t () и G e t F r o n t P a r t () написаны одинаково, с явным указанием намерений на каждом шагу и переносом деталей в подчиненные методы. Многие программы в этой кни ге можно улучшить посредством этого стиля, либо используя его изначально, либо прибегая к рефакторингу.
Можно снизить сложность еще больше, если создать вспомогательные клас сы, инкапсулирующие часть работы, вместо одного или двух классов, тяну щих все на себе. Всегда старайтесь инкапсулировать мелкие детали в классах или наборах методов. В частности, посмотрите, нет ли кода, который может изменить ся в будущем, и инкапсулируйте его в собственном классе. Моя любимая книга на эту тему — Head First Design Patterns Фриманов (Freeman) (O'Reilly, 2004).
Эти и подобные методы помогут вам справиться с величайшей проблемой програм мирования: управлением сложностью. Плотный, закрученный код трудно понимаем, а это — прямой путь к ошибкам.
10"Поросячья латынь" — искажение слов английского языка по определенным правилам;
вчем-то аналог знакомого с детства "языка" в стиле "э-чи-то-чи дет-чи-ский-чи я-чи-зык-чи". —
Примеч. ред.
Глава 21. Использование интерфейса Visual Studio |
505 |
Visual Studio пытается обеспечить доступ к справочным файлам, инсталлиро ванным на вашем компьютере, и к дополнительным ресурсам Web. Если вы не подключены к Интернету, то можете получить сообщение о том, что справоч ной системе не предоставляется доступ в Web.
Вы можете выбрать, где будет выводиться окно справочной системы. В Visual Studio выберите команду меню T o o l s ^ O p t i o n s . В разделе Environment слева
щелкните на пункте Help, General. Выберите External Help Viewer или Inte
grated Help Viewer из |
Show Help Using и щелкните на кнопке ОК . Лично |
я предпочитаю External |
Help Viewer, когда справочная система запускается |
в виде отдельной программы и не мешает самому Visual Studio. Integrated Help Viewer помещает справку в свернутое окно вместе с вашими исходными файла ми. Но попробуйте оба варианта и решите сами, что вам больше нравится.
Предметный указатель
Если справка < F 1 > — не то, что вам нужно, пбскольку у вас нет соответствующего ключевого слова или идентификатора, вы можете продолжить поиск в предметном ука зателе (Index Help). Предметный указатель наиболее полезен, когда вы знаете тему, ко торая может вам помочь, но не уверены в деталях.
Например, вам может потребоваться коллекция некоторого вида, и при этом из вестно, что большинство классов коллекций находятся в пространстве имен S y s t e m . C o l l e c t i o n s . Для поиска следует выбрать команду меню Help^lndex, а за тем в окне Index ввести collections в поле ввода Look For, что предоставит список тем, связанных со словом collections. (Этот список находится в левой части окна Help. В правой части выводится текст найденной вами темы.) Двойной щелчок на элементе
. N E T Framework в списке тем дает вам окно, показанное на рис. 21.11.
Рис. 21.11. Окно предметного указателя особенно полезно, если известна часть ответа на задаваемый вопрос
Затем следует щелкнуть на S y s t e m . C o l l e c t i o n s , и эта тема открывает список членов пространства имен C o l l e c t i o n s . При прокрутке списка в нем можно найти класс S o r t e d L i s t . В соответствии с кратким описанием справа это именно то, что нужно. Итак, результаты поиска выглядят так, как показано на рис. 21.12.
Рис. 21.12. Найдена информация по определенному классу
Каждый член слева в окне тем представляет собой гиперссылку. Щелчок на S o r t e d - L i s t открывает информацию об этом классе, включая гиперссылки на члены класса, так что вы можете легко получить более детальную информацию.
Текстовое поле Filtered By в окне Index Help позволяет ограничить список тем, в которых выполняется поиск. На рис. 21.11 и 21.12 поиск велся в рамках "Visual С#". Без этого ограничения поиск мог бы вернуть информацию о кол лекциях, не имеющих ничего общего с С#. Справочная система Microsoft De veloper Network (MSDN) существенно больше, чем справка по С#. Фильтрация работает для предметного указателя, поиска и содержания.
Когда тема показана в окне Help, можно щелкнуть на кнопке Sync with Table of Contents на панели инструментов (книга с белым кругом, на котором изо бражены левая и правая стрелки). Это выделит тему на вкладке содержания Contents. Вы можете выполнить прокрутку, чтобы увидеть, что тема, посвя щенная классу S o r t e d L i s t , находится в Class Library Reference для .NET Framework Software Development Kit (SDK). Вкладка Contents полезна для по лучения обзора информации.
Обратите внимание на опцию Help Favorites в меню Help. Эта вкладка позволяет со хранить тему как "избранную". Позже вы сможете быстро к ней вернуться. На рис. 21.10 показано окно Help Favorites с некоторыми из избранных тем. Чтобы добавить текущую тему из предметного указателя в список избранного, щелкните на окне темы правой кнопкой мыши и выберите команду Add to Help Favorites.
508 |
Часть VII. Дополнительные главы |