ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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


Вряд ли вы обладаете настолько феноменальной памятью, чтобы помнить все классы и методы даже из одного пространства имен, скажем, System. Конечно, можно запомнить синтаксис С# и несколько других деталей, но все же лучше не забывать о том, как пользовать­ ся справочной системой, поиск нужной информации в которой имеет несколько видов.

Окно справочной системы Visual Studio называется Document Explorer. Зна­ ние этого факта может помочь избежать определенной неразберихи.

F1

Помощь по клавише <F1> предоставляет быстрый доступ к информации о полях или конструкциях в существующем коде, которые вы плохо помните или не вполне понимаете.

Например предположим, что вам не понятна разница между оператором new и одно­ именным модификатором метода. Вы можете щелкнуть на слове new в любом месте в окне редактирования и нажать <F1>. Visual Studio откроет окно помощи, как показано на рис. 21.10. (Если вы не понимаете разницу между терминами new, см. в главеб, "Объединение данных — классы и массивы", описание оператора new, а^ в главе 12, "Наследование", — наследования new. Или, как видно из приведенной копии экрана,

имеется еще ограничение

new () у обобщенных классов, так что можно заглянуть

и в главу 15, "Обобщенное

программирование".)

Рис. 21.10. Справочная система Visual Studio поможет разо­ браться с разными значениями ключевого слова new

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

506

Часть VII. Дополнительные главы

- ж


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. Дополнительные главы


Поиск

Опция Search в меню Help наиболее полезна, когда вы в точности не знаете, что именно вам нужно. Это полнотекстовый поиск по всем темам справочной системы.

Например, требуется коллекция, отсортированная в алфавитном порядке. Для поиска следует выбрать H e l p O Search для того, чтобы открыть вкладку Search. Но при вводе sorted в поле Search For полученные результаты оказываются не слишком полезны­ ми, так что лучше ввести collection classes.

На рис. 21.13 показаны результаты поиска для "collection classes". Если вы максими­ зируете окно Help, то увидите несколько закладок справа от окна: Local Help, M S D N

Online, Codezone Community и Questions. По умолчанию вы получаете результаты

поиска в локальных файлах.

Puc. 21.13. Используйте полнотекстовый поиск, если вам не помогли ни контекст­ ный поиск по <F1 >, ни предметный указатель

Если вы подключены к Интернету, справочная система вернет также темы, располо­ женные в других областях (если вы подключаетесь по телефонной линии, это будет очень медленный поиск). Щелкните на закладке справа для вывода этих тем. Local Help обращается к файлам, хранящимся на вашем компьютере. M S D N Online обращается к справочным ресурсам на сайте Microsoft Developer Network (MSDN). Codezone C o m ­ munity обращается к множеству независимых сайтов, где вы часто можете найти допол­ нительную информацию и пообщаться с другими программистами на С# в форумах. За­ кладка Questions позволяет выполнить поиск в группах новостей, посвященных Х# и вопросам, связанным с .NET.

(Чтобы получить советы о том, как составлять хорошие запросы, откройте справку,

выберите H e l p ^ H e l p on Help, щелкните на Techniques for Locating Help, а затем на Full-Text Searches.)

Глава 21. Использование интерфейса Visual Studio

509