6 / 6 / 3
Регистрация: 31.08.2015
Сообщений: 56
|
||||||||||||||||
1 | ||||||||||||||||
Советы от опытных новичку11.11.2016, 17:15. Показов 722. Ответов 1
Метки нет (Все метки)
Понимаю, что программировать можно по-разному, вариантов реализаций может быть много, но все же есть какое-то представление о правильном коде. Так вот, реализуя более менее сложный собственный проект (roguelike игру) я натыкаюсь на некоторые сложности в организации структуры приложения и взаимодействии классов. Вот вопросы, которые у меня возникли:
1) Имеется, например, класс ActiveElement с полем Activated. Суть его в том, что активен (Active=true) может быть лишь один ActiveElement в какой либо коллекции. Имеется также класс, который агрегирует коллекцию этих ActiveElement's (назовем класс хозяина Page). Так вот, как по вашему, контроль за тем, чтобы оставался один активный элемент нужно переложить на Page, или сделать экземпляры ActiveElement более автономными, передавая им в конструктор List<ActiveElement> Elements? Пытаюсь каждый раз проводить аналогию, что класс-хозяин это пилот самолета, а агрегируемый класс - это сам самолет. Так вот пилот управляет самолетом, а не наоборот. Но чем плох автопилот? 2) Со временем мои классы разрослись так, что передаваемые фактические параметры не умещаются в 1 строчку.Например, так: Кликните здесь для просмотра всего текста
Сильно это не мешает, но несколько усложняет читабельность. Как вы справляетесь с данной проблемой? Будет ли хорошей практикой сделать какой нибудь класс, к примеру, TabInitInfo? содержащий информацию для создания экземпляра? или перед созданием объекта лучше создать переменные с более понятными названиями, например: Кликните здесь для просмотра всего текста
3) Имеет ли смысл все события задавать делегатом EventHandler? В чем его преимущество в отличие от Action'a? 4) Описываю ситуацию. Имеется два класса: родительский (Machine) и дочерний(Car). Допустим, у родительского есть виртуальное свойство Enabled, которое включает и отключает компоненты класса (например, двигатель машины). Переопределяю его в Car (у авто помимо двигла можно выключить еще и радио, например, или фары). В конструкторе есть булево значение, задающее начальное состояние: выключена машины или нет. В коде это выглядит примерно так: Кликните здесь для просмотра всего текста
Или же лучше в конструкторе Machine вместо Enabled = enabled писать engine.Enabled = enabled (тут пример не шибко сложный, но вдруг у machine таких IEnablinObj'эктов много?), а потом в конструкторе Car дописывать radio.Enabled = enabled. В этом случае, конечно, проверку на null у radio можно в свойстве у car убрать.
0
|
11.11.2016, 17:15 | |
Ответы с готовыми решениями:
1
Новичку нужен совет опытных в yii Собираю советы ОПЫТНЫХ back-end PHP-программистов Требуются советы опытных по поводу выбора CMS или Framework Нужны советы опытных верстальщиков! Зацените и скажите в чем разница |
11 / 11 / 4
Регистрация: 03.07.2014
Сообщений: 28
|
|
11.11.2016, 17:26 | 2 |
Могу посоветовать книгу:
Тепляков С. Паттерны проектирования на платформе .NET. — СПб.: Питер, 2015. — 320 с.: ил. ISBN 978-5-496-01649-0
0
|
11.11.2016, 17:26 | |
11.11.2016, 17:26 | |
Помогаю со студенческими работами здесь
2
Советы новичку Советы новичку Дайте советы новичку Дайте советы новичку,,пожалуйста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |