Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C# для чайников

.pdf
Скачиваний:
198
Добавлен:
27.03.2015
Размер:
15.52 Mб
Скачать

Рис. 21.7. Стопки окон помогают эффективно использовать рабочее про­ странство окна Visual Studio

Модные штучки

Щелкните правой кнопкой мыши в окне Solution Explorer и выберите пункт View Class Diagram. Visual Studio сгенерирует в проекте новый файл C l a s s - D i a g r a m l . cd. Вы можете открыть его и воспользоваться Class Designer для визуализации и работы со связями в вашей программе с использованием сим­ волики в стиле UML (подробнее об этом можно узнать из раздела "class dia­ gram, presentation and documentation" справочной системы). Это не полнофунк­ циональное средство для работы с UML-диаграммами, но оно может помочь визуализировать вашу программу и быть полезным при работе с кодом.

Чтобы познакомиться с другими модными штучками в Visual Studio 2005, об­

ратите внимание на новое меню Refactor и команду Code Snippets Manager

в меню Tools, а кроме того, обратитесь к разделу "What's New" справочной системы. Запомните эти комбинации клавиш: <Ctrl+K>, а потом — <Ctrl+X>.

Программа может состоять из любого количества исходных файлов С# — ну, скажем, из любого разумного количества. Несколько тысяч может оказаться слишком большим числом, хотя, вероятно, Visual Studio приходилось сталкиваться с подобным количест­ вом при создании продуктов Microsoft.

"Ну и зачем создавать все эти файлы?" — спросите вы. Реальные программы могут быть очень большими, как уже говорилось в главе 19, "Работа с файлами и библиотека­ ми". В этой главе рассматривалась система продажи авиабилетов, состоящая из многих

493

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

частей: интерфейса для заказа билетов по телефону, для работы через Интернет, часть для работы с ценами и налогами и так далее. Такие программы становятся огромным задолго до их завершения.

Такие сложные системы могут состоять из множества отдельных классов, по одному для каждого описанного интерфейса. В главе 19, "Работа с файлами и библиотеками", бьш предложено не размещать все эти классы в одном большом файле P r o g r a m , с s , посколь­ ку это затруднит поиск классов, с которыми вы работаете, работу команды — так как про­ граммисты не могут работать одновременно с одним файлом, да и компиляция такого фай­ ла станет занимать слишком большое время. По этим причинам были даны рекомендации размещать классы в файлах по одному, давая файлам имена классов. В этой главе вы по­ знакомитесь с примером такого подхода.

Конечно, чем больше файлов, тем больше работы с ними. К счастью, Solution Ex­ plorer может помочь в решении практически всех задач при разделении большого проек­ та на множество исходных файлов. На рис. 21.8 показано окно Solution Explorer с от­ крытым проектом С#.

Упрощение жизни с помощью проектов и решений

Файл проекта с расширением . C S P R O J содержит инструкции о том, какие файлы входят в проект и как именно они должны быть скомбинированы. Именно с этим файлом вы и работаете посредством окна Solution Explorer.

Проекты могут объединять программы, которые зависят от одних и тех же пользова­ тельских классов, как правило, сложные программы разделяются на несколько проектов, в совокупности составляющих одно решение. Пара стандартных сценариев организации проектов уже была описана в главе 19, "Работа с файлами и библиотеками": объединение программы записи файлов с программой чтения, или программа, которая разделена на код в выполнимом файле, и одна или несколько библиотек классов. В этих сценариях при изменениях в одном проекте остальные перекомпилировались автоматически. Про­ грамма записи файла описывалась одним проектом, программа чтения — другим. Ана­ логично, у вас был один проект для выполнимого файла, и другой — для библиотеки. Набор проектов называется в Visual Studio решением (файлы решений имеют расшире­ ния . SLN).

Проект описывает не только исходные файлы, которые должны быть собраны вместе в одну программу. Файл проекта включает такие свойства, как, например, имя програм­ мы и аргументы, передаваемые ей при запуске из Visual Studio.

Каждая программа, независимо от ее размера, описывается решением Visual Studio, содержащим как минимум один проект. Чтобы увидеть пример много­ проектного решения, обратитесь к решению демонстрационной программы C l a s s L i b r a r y на прилагаемом компакт-диске. Это решение содержит два проекта, один — для небольшой тестовой программы, или "драйвера", и вто­ рой — для простой библиотеки классов. Эта программа также рассматривалась

вглаве 19, "Работа с файлами и библиотеками".

Вмире имеются миллионы программ. В следующем разделе будет рассмотрена толь­

ко одна демонстрационная программа V S I n t e r f a c e , определяющая класс U n i v e r ­ s i t y и класс S t u d e n t . Каждый класс находится в своем собственном файле. Програм­ ма добавляет несколько объектов S t u d e n t в U n i v e r s i t y , а затем выводит результат.

494

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

Рис. 21.8. Проект no умолчанию содержит шаблонный класс Pro­ gram, cs, выделенный в окне Solution Explorer

Отображение проекта

Перечисленные далее шаги создают схему приложения по умолчанию для программы V S I n t e r f a c e .

1.Выберите команду меню File1 ^New^Project.

2.Выберите пиктограмму Console Application.

3.Введите имя VSInterface и щелкните на кнопке ОК.

Выберите команду меню View"=>Solution Explorer для того, чтобы увидеть файл про­ екта V S I n t e r f a c e , как показано на рис. 21.8. Таким образом, создано решение V S I n ­ t e r f a c e , содержащее один проект с тем же именем V S I n t e r f a c e .

Изучение Solution Explorer

Окно Solution Explorer показывает две начальные подпапки, P r o p e r t i e s и Ref ­ e r e n c e s . P r o p e r t i e s содержит файл A s s e m b l y I n f o . c s , а также некоторые файлы "ресурсов" и "настроек". О настройках речь пойдет чугь позже, а что касается ресурсов, то тут достаточно будет сказать, что они содержат такие вещи, как изображения, пиктограм­ мы, строки, входящие в пользовательский интерфейс (такие как сообщения в диалоговых окнах) и тому подобное. Подробнее о ресурсах можно узнать из справочной системы..

Подпапка R e f e r e n c e s содержит все ссылки на внешние пространства имен, указанные с помощью команды меню Projects Add Reference. Ссылки, добавленные в ваш проект, со­ ответствуют вашим директивам u s i n g (включая некоторые "предположения" по умолчанию, которые могут не оправдаться для вашей программы; их можно удалить, если они вам не нужны). В окне также перечислены: исходный файл по умолчанию P r o g r a m , cs и прочие исходные файлы, которые вы добавляете в проект в процессе работы. (Эти файлы немного отличаются для графических программ Windows, как вы могли видеть при создании про­ граммы, описанной в главе 1, "Создание вашей первой Windows-программы на С#".)

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

495

Двойной щелчок на файле в окне Solution Explorer приводит к открытию окна дм его редактирования (если редактирование файла возможно). Файл P r o g r a m , cs содер­ жит трамплин программы на С# — функцию M a i n ( ) . Конечно, большинство програш в этой книге написаны непосредственно в одном этом файле. В предыдущих версия Visual Studio файл P r o g r a m , cs назывался C l a s s l . c s , что заставляло всякий раз его переименовывать. P r o g r a m , с s — вполне приличное название, в переименовании не нуждающееся.

В больших проектах файлы могут быть размещены в большем количестве подка­ талогов. Щелкните правой кнопкой мыши в окне Solution Explorer и выберите в меню команду A d d ^ N e w Folder. Перетащите файлы во вновь созданную пап­ ку. Visual Studio сам разберется, что к чему, и где лежат нужные файлы.

Вы можете редактировать файл A s s e m b l y l n f о. c s , снабжая вашу программу такими свойствами, как ее название и название компании, торговая марка и номер версии. Не стоит тратить время на эти свойства, следует только сказать, что это все­ го лишь простой текстовый файл. Эти свойства появляются на вкладке Version in­ formation ( В е р с и я ) окна свойств . ЕХЕ-файла, открывающегося при щелчке правой кнопкой мыши на файле в Проводнике Windows и выборе из раскрывающегося ме­

ню команды Properties.

Вы можете добавить в проект файлы любого вида. Обычно я храню здесь электрон­ ную таблицу или текстовый файл для собственных примечаний. Щелкните правой кноп­ кой мыши на проекте в окне Solution Explorer и выберите команду меню Add^Existing Item. Выберите добавляемый файл.

Свойства проекта

Щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer и выберите команду Properties, чтобы открыть диалоговое окно свойств про­ екта. Здесь можно обновить ряд настроек проекта. Многие категории в окне Properties имеют имена, которые вполне проясняют их предназначение, но вы всегда можете обратиться к справочному материалу: поищите раздел "project properties" в справочной системе. Одна из наиболее полезных вкладок окна Properties — вкладка Settings. Определите ваши собственные настройки: только для чтения — Application и для чтения и записи — User — и вы сможе­ те обратиться к ним из своей программы следующим образом:

/ / Э т у с т р о к у н а д о д о б а в и т ь в р а з д е л u s i n g u s i n g M y A p p N a m e . P r o p e r t i e s , -

/ /

. . . з а т е м г д е у г о д н о в в а ш е й п р о г р а м м е н а п и ш и т е ч т о - т о

/ /

в р о д е :

/ / д л я п о л у ч е н и я s t r i n g m y S t r i n g

з н а ч е н и я н а с т р о й к и т о л ь к о д л я ч т е н и я :

=S e t t i n g s . D e f a u l t . M y A p p S e t t i n g ;

/ / д л я у с т а н о в к и з н а ч е н и я н а с т р о й к и д л я ч т е н и я S e t t i n g s . D e f a u l t . M y U s e r S e t t i n g = m y U s e r S t r i n g ; / / Д о с т у п к р е с у р с а м о с у щ е с т в л я е т с я п р а к т и ч е с к и

из а п и с и :

т а к ж е

Таким образом, оказывается очень просто сохранить пользовательские настройки без необходимости управления ими самостоятельно с помощью классов S y s t e m . 10, опи­ санных в главе 19, "Работа с файлами и библиотеками". В завершенной программе, ко-

496

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

торую вы распространяете, пользовательские настройки хранятся в персональных облас­ тях Application Data каждого пользователя. (Эта папка является частью персонального профиля каждого пользователя и обычно хранится в папке С: \ D o c u m e n t s a n d S e t - tings\< u s e r n a m e > . ) Чтобы сохранить измененные настройки, вызовите в вашей про­ грамме S e t t i n g s . D e f a u l t . S a v e () (например, в конце функции M a i n () или когда вы закрываете Windows Form) . Сохраненные настройки загружаются автоматически при новом запуске приложения.

Навигация по исходному тексту

В больших программах достаточно трудно переходить от работы над методом

Акласса В к работе над методом С класса D. Вы можете найти определенный класс или метод путем открытия файла для редактирования и просмотра его содержимого или воспользоваться возможностью Class View, что значительно быстрее — особенно в больших проектах.

ВSolution Explorer вы должны дважды щелкнуть на файле для того, чтобы открыть его, а затем прокрутить его или воспользоваться средствами поиска для того, чтобы най­ ти искомый метод. Вы можете также применить два раскрывающихся списка поверх ка­ ждого окна редактора для поиска класса и его методов в текущем файле. Левый раскры­ вающийся список содержит классы текущего файла, а правый — члены выбранного класса. Я часто пользуюсь этими списками, но все же лично мне больше нравится ис­

пользовать Class View.

Class View рассматривает программу не как множество файлов, а как множество классов и их членов, что позволяет данному средству быть незаменимым помощником при навигации по проекту. Щелкните на классе в верхней панели для того, чтобы уви­ деть список его членов (с сигнатурами параметров) в нижней панели. Это очень полез­ но — иметь возможность быстро вспомнить об аргументах и типе возвращаемого значе­ ния метода. Вернитесь к рис. 21.7, на котором показан результат двойного щелчка на классе U n i v e r s i t y в окне Class V i e w открыт соответствующий исходный файл; двойной щелчок на методе E n r o l l () показывает этот член в открытом исходном фай­ ле. (Посредством правого щелчка на классе в окне Class View отображается раскры­ вающееся меню с некоторыми интересными возможностями.)

Держите окна Solution Explorer и Class View в закрепленном наложенном со­

стоянии, чтобы быстро переключаться между ними с помощью одного щелчка на вкладке.

Добавление класса

Размещать каждый класс в отдельном файле, да еще так, чтобы имя файла совпадало с именем класса — хорошая программистская привычка. Подклассы могут находиться либо в своих собственных файлах, либо в файле базового класса, в зависимости от того, насколько тесно они связаны друг с другом.

Классы S c h o o l и S t u d e n t определенно следует разместить в разных файлах. Точно так же нужно разделить классы H i g h S c h o o l , U n i v e r s i t y и S c h o o l , поскольку кон­ цептуально они достаточно далеки друг от друга. Вместе в одном файле лучше размес­ тить классы наподобие L e s s e r C a n a d i a n G o o s e и G r e a t e r C a n a d i a n G o o s e .

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

497

Рис. 21.9. Добавление нового класса в проект с использованием окна

Add New Item

Для того чтобы добавить класс U n i v e r s i t y в программу V S I n t e r f а с е , выполни­ те следующие шаги.

1. Щелкните правой кнопкой мыши на имени проекта V S I n t e r f а с е в окне

Solution Explorer, а затем выберите команду меню Add Add New Item.

В появившемся окне вам будет предложена масса шаблонов объектов на выбор. Их слишком много, чтобы поместиться на одном рисунке!

2.Выберите Class, введите University. cs в поле Name в нижней части ок­ на и затем щелкните на кнопке Open.

На рис. 21.9 показано окно Add New Item с выбранным шаблоном Class.

Содержимое нового исходного файла U n i v e r s i t y . cs выглядит очень похоже на содержимое файла P r o g r a m , c s , который строится по умолчанию при созда­ нии новой программы.

3.Повторите процесс для класса Student. После этого проект будет содер­ жать файлы Student.cs и University.cs наряду с Program.cs.

Вернитесь к рис. 21.8, на котором показан результат выполнения указанных ша­ гов. Три исходных файла представлены вкладками в окне редактирования.

Завершение демонстрационной программы

Данная версия класса S t u d e n t создает и выводит, информацию о студенте, состоящую из идентификатора и имени.

/ / V S I n t e r f а с е - ф а й л S t u d e n t . c s

/ /

S t u d e n t

- м о д е л и р о в а н и е с т у д е н т а , к о т о р ы й в с о с т о я н и и с а м

/ /

н а п и с а т ь

с в о е и м я

u s i n g

S y s t e m ;

n a m e s p a c e

V S I n t e r f a c e

498

/ / /

< s u m m a r y >

 

 

 

 

 

 

 

/ / / S t u d e n t - у ч а щ и й с я ш к о л ы

 

 

 

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

 

p u b l i c c l a s s S t u d e n t

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

p r i v a t e

s t r i n g s S t u d e n t N a m e ;

 

 

 

 

p r i v a t e

i n t

n I D ;

 

 

 

 

 

p u b l i c

S t u d e n t ( s t r i n g

s S t u d e n t N a m e ,

i n t

n I D )

 

{

 

 

 

 

 

 

 

 

 

t h i s . s S t u d e n t N a m e = s S t u d e n t N a m e ;

 

 

 

t h i s . n I D = n I D ;

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

/ / /

< s u m m a r y >

 

 

 

 

 

 

/ / / N a m e - и м я у ч а щ е г о с я

 

 

 

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

p u b l i c

s t r i n g N a m e { g e t { r e t u r n s S t u d e n t N a m e ; } }

 

/ / /

< s u m m a r y >

 

 

 

 

 

 

/ / / T o S t r i n g -

в о з в р а щ а е т и м я и и д е н т и ф и к а т о р

 

/ / /

< / s u m m a r y >

 

 

 

 

 

 

p u b l i c

o v e r r i d e

s t r i n g

T o S t r i n g ( )

 

 

 

{

 

 

 

 

 

 

 

 

 

r e t u r n S t r i n g . F o r m a t ( " { 0 }

( { l } ) " ,

s S t u d e n t N a m e ,

n I D ) ;

}

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

Конструктор класса S t u d e n t получает имя и идентификатор студента. Метод

 

T o S t r i n g ()

перекрывает

версию

базового

класса

по умолчанию

O b j e c t .

 

Эта пользовательская версия возвращает имя студента и его идентификатор в

 

скобках. В главе 18, "Эти исключительные исключения", более подробно рас­

 

сказано о перекрытии T o S t r i n g ( ) .

 

 

 

 

Класс S t u d e n t включает комментарии документирования, помеченные как / / / . Та­ кое документирование делает код более понятным, в особенности если классы распреде­ лены по нескольким файлам, и может оказаться полезным для других программистов (да даже и для самого автора исходного текста через некоторое время). Об использовании таких документирующих комментариев и генерации справочных файлов для ваших про­ грамм уже рассказывалось в главе 8, "Методы класса".

Вы можете перекомпилировать вашу программу даже до того, как введете исходный текст файла S t u d e n t . cs — после того, как введете исходный текст файлов U n i v e r s i t y . cs и P r o g r a m , c s . Это неплохая и д е я — инкрементная разработка программ. Перекомпилируйте и исправляйте вашу программу до тех пор, пока компилятор не перестанет выводить сообщения об ошибках или предупреждения. Поступайте так для каждого класса или даже метода, пока не избавитесь от всех ошибок при компиляции.

Исходный текст файла U n i v e r s i t y . cs столь же прост, как и его предше­ ственник:

/ /

V S I n t e r f а с е

- ф а й л U n i v e r s i t y . c s

 

/ /

U n i v e r s i t y -

п р о с т е й ш и й к о н т е й н е р д л я с т у д е н т о в

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

499

u s i n g

S y s t e m ;

 

u s i n g

S y s t e m . C o l l e c t i o n s ;

n a m e s p a c e

V S I n t e r f a c e

{

 

 

 

/ / / < s u m m a r y >

 

/ / / U n i v e r s i t y -

у ч е б н о е з а в е д е н и е

/ / /

< / s u m m a r y >

 

p u b l i c c l a s s U n i v e r s i t y

{

 

 

 

p r i v a t e

s t r i n g

s N a m e ;

p r i v a t e

S o r t e d L i s t s t u d e n t s ; / / С л о в а р ь

p u b l i c

U n i v e r s i t y ( s t r i n g s N a r a e )

{

t h i s . s N a m e = s N a m e ;

s t u d e n t s = n e w S o r t e d L i s t ( ) ;

}

/ / / < s u m m a r y >

/ / /

E n r o l l - д о б а в и т ь с т у д е н т а в у н и в е р с и т е т

/ / /

< / s u m m a r y >

p u b l i c

v o i d

E n r o l l ( S t u d e n t

s t u d e n t )

{

 

 

 

s t u d e n t s . A d d ( s t u d e n t . N a m e ,

s t u d e n t ) ;

}

 

 

 

p u b l i c

o v e r r i d e s t r i n g T o S t r i n g O

{

 

 

 

s t r i n g s =

sNarae + " \ n " ;

 

s + = " С п и с о к с т у д е н т о в : " + " \ n " ;

/ / И т е р а ц и я п о в с е м с т у д е н т а м у н и в е р с и т е т а с / / и с п о л ь з о в а н и е м о б ы ч н о г о п е р е ч и с л и т е л я

I E n u m e r a t o r i t e r = s t u d e n t s . G e t E n u m e r a t o r О ; w h i l e ( i t e r . M o v e N e x t ( ) )

{

 

o b j e c t о = i t e r . C u r r e n t ;

 

 

 

 

 

 

/ / С л е д у ю щ и й п о д х о д н е р а б о т а е т , п о т о м у ч т о и т е р а т о р

 

/ / д л я S o r t e d L i s t в о з в р а щ а е т з а п и с и с л о в а р я ,

к о т о р ы е

 

/ / в к л ю ч а ю т к а к с т у д е н т а ,

т а к и к л ю ч :

 

 

 

/ /

 

 

 

 

 

 

 

 

 

 

/ / S t u d e n t s t u d e n t =

( S t u d e n t ) о ;

 

 

 

 

/ / / / Р а б о т о с п о с о б е н с л е д у ю щ и й в а р и а н т :

 

 

 

/ / ( о б р а т и т е в н и м а н и е н а п р е о б р а з о в а н и е т и п о в )

 

D i c t i o n a r y E n t r y d e =

( D i c t i o n a r y E n t r y ) о,-

 

 

 

S t u d e n t s t u d e n t =

( S t u d e n t ) d e . V a l u e ;

 

 

 

 

s + = s t u d e n t . T o S t r i n g ( )

+ " \ n " ;

 

 

 

}

 

 

 

 

 

 

 

 

 

 

r e t u r n

S ;

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

Д а н н ы й

файл

указывает, что его содержимое является

частью

пространства имен

V S I n t e r f a c e . Класс

U n i v e r s i t y

состоит

не

более чем из

имени

и

отсортированной

коллекции

студентов.

Метод E n r o l l ( )

добавляет объекты

типа S t u d e n t в S o r t e d ­

L i s t с использованием имени студента в качестве ключа сортировки — другими слова­ ми, студенты хранятся в списке в отсортированном порядке.

500

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

Метод U n i v e r s i t y . T o S t r i n g () выводит название университета, гимн и имена всех студентов. Он делает это путем создания итератора, метод M o v e N e x t () которого применяется для перехода от одного элемента списка к другому, получая каждый эле­ мент посредством свойства C u r r e n t . Поскольку класс S o r t e d L i s t , в котором хра­ нятся студенты, представляет собой словарь, итератор возвращает не сохраненные объ­ екты, а записи из словаря (объекты класса D i c t i o n a r y E n t r y ) , содержащие объект вместе с ключом, применяемым для сортировки. Обратите внимание на использованные преобразования типов.

Коллекции и их итерирование описаны в главах 15, "Обобщенное программирова­ ние", и 20, "Работа с коллекциями". Здесь вместо синтаксиса M o v e N e x t () можно применить блок итератора, рассмотренный в предыдущей главе, а можно восполь­ зоваться циклом f o r e a c h :

f o r e a c h ( D i c t i o n a r y E n t r y d e i n s t u d e n t s )

{

S t u d e n t s t u d e n t = ( S t u d e n t ) d e . V a l u e ; s + = s t u d e n t . T o S t r i n g ( ) + " \ n " ;

}

Как вы вскоре убедитесь, цикл f o r e a c h предпочтительнее.

Преобразование классов в программу

Классы S t u d e n t и U n i v e r s i t y не образуют программу. Консольное приложение начинается со статического метода M a i n ( ) . Этот метод может быть в любом классе, однако по умолчанию он находится в классе P r o g r a m .

Содержимое исходного файла P r o g r a m , cs изменено следующим образом:

/ / V S I n t e r f а с е - д е м о н с т р а ц и о н н а я п р о г р а м м а , с о с т о я щ а я и з

/ / н е с к о л ь к и х к л а с с о в . К л а с с ы S t u d e n t и U n i v e r s i t y н а х о д я т с я

/ / в с в о и х с о б с т в е н н ы х и с х о д н ы х ф а й л а х .

 

/ / Ф а й л P r o g r a m . c s

 

 

 

u s i n g

S y s t e m ;

 

 

 

 

n a m e s p a c e

V S I n t e r f a c e

 

 

 

{

 

 

 

 

 

 

c l a s s

P r o g r a m

 

 

 

 

{

 

 

 

 

 

 

s t a t i c

v o i d

M a i n ( s t r i n g [ ]

a r g s )

 

{

 

 

 

 

 

 

U n i v e r s i t y

u n i v e r s i t y

=

 

 

 

n e w U n i v e r s i t y ( " И н с т и т у т с л у ч а й н ы х н а у к " ) ;

u n i v e r s i t y . E n r o l l ( n e w

S t u d e n t ( " D w a y n e " ,

1 2 3 4 ) ) ;

u n i v e r s i t y . E n r o l l ( n e w

S t u d e n t ( " M i k e y " ,

1 2 3 5 ) ) ;

u n i v e r s i t y . E n r o l l ( n e w

S t u d e n t ( " M a r k " ,

1 2 3 6 ) ) ;

C o n s o l e . W r i t e L i n e ( u n i v e r s i t y . T o S t r i n g ( ) ) ; C o n s o l e . W r i t e L i n e ( ) ;

/ / О ж и д а е м п о д т в е р ж д е н и я п о л ь з о в а т е л я

C o n s o l e . W r i t e L i n e ( " Н а ж м и т е < E n t e r > д л я " +

" з а в е р ш е н и я п р о г р а м м ы . . . " ) ;

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

501

C o n s o l e . R e a d ( ) ;

}

}

}

При компиляции программы файл проекта говорит Visual Studio о том, что в одну программу следует объединить все три ф а й л а — U n i v e r s i t y . c s , S t u d e n t . c s и P r o g r a m . c s .

При выполнении программы выводится простой (но отсортированный!) список сту­

дентов:

 

И н с т и т у т

с л у ч а й н ы х н а у к

С п и с о к

с т у д е н т о в :

D w a y n e

( 1 2 3 4 )

M a r k

( 1 2 3 6 )

M i k e y

( 1 2 3 5 )

P r e s s

E n t e r t o t e r m i n a t e . . .

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

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

Используйте дополнительные пробелы и пустые строки. Избегайте излишнего сжатия кода, которое наблюдается в настоящей книге. Вот класс S t u d e n t , пере­

писанный в более свободном формате:

 

/ / V S I n t e r f а с е

- ф а й л S t u d e n t . c s

 

/ / S t u d e n t

- м о д е л и р о в а н и е

с т у д е н т а , к о т о р ы й в с о с т о я н и и

сам

/ / н а п и с а т ь

с в о е и м я

 

 

# r e g i o n

U s i n g

D i r e c t i v e s

 

 

u s i n g

S y s t e m ;

 

 

 

# e n d r e g i o n

U s i n g D i r e c t i v e s

 

n a m e s p a c e

 

V S I n t e r f a c e

 

 

{

 

 

 

 

 

 

III

< s u m m a r y >

 

 

 

/ / / S t u d e n t - у ч а щ и й с я ш к о л ы

 

/ / /

< / s u m m a r y >

 

 

p u b l i c

c l a s s

S t u d e n t

 

 

{

 

 

 

 

 

 

# r e g i o n

P r i v a t e D a t a

F i e l d s

 

/ / И м е н а п е р е м е н н ы х н а ч и н а ю т с я с о с т р о ч н о й б у к в ы ,

н о

502

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]