Показать сообщение отдельно
  #2  
Старый 08.07.2014, 22:30
phomm phomm вне форума
Новичок
 
Регистрация: 07.10.2013
Адрес: Тюмень
Сообщения: 50
Версия Delphi: 7/2007/XE+/FPC
Репутация: 22
По умолчанию

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

Код, если, честно - так себе. Его пока единственная заслуга - понятные имена переменных, плюс опущу оценку того факт, что они ещё с префиксами типов перменной (Венгерская нотация - достаточно спорная концепция, и сейчас уже от неё многие отвернулись).

Код, в первую очередь, плох тем, что не следует принципу разделения логики и визуализации (интеракции с пользователем). В частности, это формируется тем, что нет никаких структур данных, вся логика зашита в обработчики событий на форме и контролы на ней.
Также, хотя и особняком, стоит плохая декомпозиция (которая коррелирует с отсутствием структур данных), ведущая к большой копипасте кода.
Немного связан с вышеназнываными проблемами и факт использования пачки глобальных переменных, во-первых, не имеющих никакого контроля над ними (как области видимости и доступа на чтение/запись, так и допутсимых значений), во-вторых, никак не структурированных.

Плюс, чисто на любителя - я удаляю стандартные кэпские комменты вида { Public declarations }

Как вижу правильную организаию данной задачи я: Есть сущности сцены и менеджера сцен (на данный момент сцены это сплеш-скрин и меню-скрин, а менеджер осуществляет их переключение, руководствуясь определённой логикой), есть сущности Контролов (на данный момент это кнопки, вроде как я вижу контрол с функцией "Фон", плюс возможно для курсора и прочих), и, конечно, сущность программного цикла, которая по сути некий таймер, рассылающий оповещения другим сущностям что произошёл квант времени и надо обновить свои состояния. Можно добавить и сущность ресурсного менеджера, который отвественен за ресурсы типа графика, шрифты, звуки - он грузит их, выгружает, выдаёт по требованию других сущностей.
Поскольку у Вас много кода отведено кнопкам, можно рассмотреть их подробнее: Кнопка содержит унаследованные от сущности контрол свойства (позиция и размеры) и методы+события для реализации наведения курсора на кнопку, нажатия по кнопке и т.п. Специфичное для кнопки это состояния нажата, отжата, наведена и т.п. Состояние определяет и графические данные, при смене состояния меняются и данные, данные естественно инкапсулированы в сущность кнопки (например, в виде ссылок на конкретные граф.ресурсы из менеджера резурсов).
Ответить с цитированием