Как я могу реорганизовать свой код в классы в C #? - PullRequest
3 голосов
/ 07 октября 2010

Я работаю над проектом на C # w / XNA и хочу реорганизовать его и разделить его части на классы.

В настоящее время это всего лишь один файл game.cs, но я хочунемного почистить.К сожалению, я не слишком знаком с классами.Возможно, кто-то может помочь мне разобраться, как это сделать, или направить меня к какому-то учебнику?

Ответы [ 3 ]

5 голосов
/ 07 октября 2010

Ну, начнем с размышления о том, какие биты данных объединяются естественным образом. Например, если у вас есть имя игрока, его рейтинг, позиция, количество жизней и т. Д., Это может означать, что у вас должен быть класс Player. Итак, взгляните на все состояния, разбейте его на разные группы, а затем проверьте, какие из существующих методов работают только с той или иной группой состояний ... и поместите методы с состоянием, в котором они заинтересованы.

Конечно, становится сложнее, когда одному методу нужно иметь дело с состоянием из нескольких объектов: обычно это означает, что вы поместите код в один тип и передадите другой тип в качестве параметра.

Во многом это чувство интуиции, если честно - все вышеперечисленное является лишь отправной точкой. Со временем это станет несколько проще, и вы, вероятно, начнете думать больше с точки зрения обязанностей , чем просто с данными - но это хорошая отправная точка, поскольку у вас, вероятно, уже есть нужные данные, просто не организованные в правильном направлении ... в то время как определение обязанностей внутри системы может быть намного сложнее.

3 голосов
/ 07 октября 2010

В разработке программного обеспечения есть полезный принцип, известный как «Ноль, Один, Много».

  • Либо у вас есть ноль чего-либо - поэтому вы не потрудитесь реализоватьво-первых,
  • Или у вас есть один чего-то - вам, вероятно, не нужно делать это классом.
  • Или вы можете иметь много чего-то - вы, вероятно, должны сделать это классом.

(Важный вывод состоит в том, что нет случая иметь два, три или четыре чего-либо.)

Глядя на ваш сайт, я вижу, что вы делаете клон Понг.У вас есть два весла - так что это подпадает под «много» - так что сделайте себе класс веслом.Таким образом, вы можете создать два экземпляра класса, по одному для каждого игрока.

Таким образом, каждое весло совместно использует одни и те же функции, но использует разные данные.Сокращение дублирования кода (что хорошо).

У вас также есть один мяч.Делаете ли вы это классом или нет, это, вероятно, дело вкуса (и какие амбиции у вас могут быть для добавления режима «multi-ball»).Я бы посоветовал не делать это уроком, пока вы не обнаружите, что вам это необходимо.

2 голосов
/ 07 октября 2010

Классы - это шаблон для объекта, который может быть создан, абстрактное описание объекта. Когда экземпляр создается и заполняется, он содержит данные, описывающие эту сущность.

Объект обычно должен инкапсулировать одну буквальную «вещь» или отвечать за управление одним конкретным набором функций.

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...