|
Программирование >> Обработка исключительных ситуаций
Свойства this.health = 100; this.ammo = 10 0: this.name = Noname ; public Monster( string name ) : thisO { this.name = name; public Monster( int health, int ammo, string name ) this.health = health; this.ammo = ammo; this.name = name; public int Health свойство Health связано с полем health get { return health; if (value > 0) health = value; else health = 0: public int Anmo свойство Anmo связано с полем ammo return ammo; if (value > 0) ammo = value; else ammo = 0; public string Name свойство Name связано с полем name return name; Листинг 5.10 (продолжение) public void PassportO Console.WriteLineC Monster {0} \t health = {1} ammo = {2} name, health, ammo); string name: int health, ammo; закрытые поля class Classl { static void MainO Monster Masha = new MonsterC 200. 200, Masha Masha. PassportO; --Masha.Health; Mashaimo += 100; Masha. PassportO; использование свойст е использование свойст е Результат работы программы; Monster Masha Monster Masha health health 200 ammo 199 ammo Рекомендации по программированию При создании класса, то есть нового типа данных, следует хорошо продумать его интерфейс - средства работы с классом, доступные использующим его программистам. Интерфейс хорошо спроектированного класса интуитивно ясен, непротиворечив и обозрим. Как правило, он не должен включать поля данных. Поля предпочтительнее делать закрытыми (private). Это дает возможность вно-следствии изменить реализацию класса без изменений в его интерфейсе, а также регулировать доступ к полям класса с помощью набора предоставляемых пользователю свойств и методов. Важно помнить, что поля класса вводятся только для того, чтобы реализовать характеристики класса, представленные в его интерфейсе с помощью свойств и методов. Не нужно расширять интерфейс класса без необходимости, на всякий случай , поскольку увеличение количества методов затрудняет понимание класса пользователем1. В идеале интерфейс должен быть полным, то есть предоставлять возможность выполнять любые разумные действия с классом, и одновременно Под пользователем имеется в виду программист, применяющий класс. Рекомендации по программированию 125 минимально необходимым - без дублирования и пересечения возможностей методов. Методы определяют поведение класса. Каждый метод класса должен решать только одну задачу (не надо объединять два коротких независимых фрагмента кода в один метод). Размер метода может варьироваться в широких пределах, все зависит от того, какие функции он выполняет. Желательно, чтобы тело метода помещалось на 1-2 экрана: одинаково сложно разбираться в программе, содержащей несколько необъятных функций, и в россыпи из сотен единиц по несколько строк каждая. Если метод реализует сложные действия, следует разбить его на последовательность шагов и каждый шаг оформить в виде вспомогательной функции (метода со спецификатором pri vate). Если некоторые действия встречаются в коде хотя бы дважды, их также нужно оформить в виде отдельной функции. Создание любой функции следует начинать с ее интерфейса, то есть заголовка. Необходимо четко представлять себе, какие параметры функция должна получать и какие результаты формировать. Входные параметры обычно перечисляют в начале списка параметров. Предпочтительнее, чтобы каждая функция вычисляла ровно один результат, однако это не всегда оправдано. Если величина вычисляется внутри функции и воз-зращается из нее через список параметров, необходимо использовать перед соответствующим параметром ключевое слово out. Если параметр значимого типа может изменить свою величину внутри функции, его предваряют ключевым словом ref. Величины ссылочного типа всегда передаются по адресу и, следовательно, могут изменить внутри функции свое значение. Необходимо стремиться к максимальному сокращению области действия каждой переменной, то есть к реализации принципа инкапсуляции. Это упрощает отладку программы, поскольку ограничивает область поиска ошибки. Следовательно, величины, используемые только в функции, следует описывать внутри нее как локальные переменные. Поля, характеризующие класс в целом, то есть имеющие одно и то же значение для всех экземпляров, следует описывать как статические. Все литералы, связанные с классом (числовые и строковые константы), описываются как поля-константы с именами, отражающими их смысл. При написании кода методов следует руководствоваться правилами, приведенными в аналогичном разделе главы 4 (см. с. 95).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |