"Орешек знаний тверд, Но все же мы не привыкли отступать..." (с)
Шаг 8 (Рефакторинг ГВР) Версия 0.2
Запись от ashsvis размещена 15.11.2018 в 14:12
Обновил(-а) ashsvis 15.11.2018 в 15:06 (слово пропустил)
Обновил(-а) ashsvis 15.11.2018 в 15:06 (слово пропустил)
Метки c#, векторная графика
Приветствую вас, уважаемые читатели! Вчера пропустил день публикации, думал, сделаю перерывчег... ![]() Первым делом убрал это страшное по всему коду:
![]() Сперва есть идея, потом прототип, желательно минимально работающий, потом пытаемся его расширить и тут-то надобность и возникает в наследовании, интерфейсах и прочая... [отступ]Действительно, когда потребовалось добавить круг (круг, Карл!), то базовый массив точек тут, конечно, не причём, ибо круг - это частный случай эллипса, а эллипс строится на прямоугольнике, у которого Location и Size, и никакого массива точек. Поэтому пришлось классы писать под прямоугольник, квадрат, эллипс и круг (ещё хотел ромб сделать, но не всё сразу... ![]() [отступ]Все эти классы наследуются от класса Figure (вернее, сделал, что наследуются Polyline, Polygon, Rect и Oval напрямую, потом от Oval наследуется Circle, а от Rect наследуется Square). Соответственно, пришлось с методами повозиться у базового класса Figure (и сделать его всё-таки абстрактным и базовые методы кое-какие абстрактные, а кое-какие вообще вынес под интерфейсы, так как, когда метод абстрактный, то его в каждом наследнике нужно переопределять, и бывает, в наследнике он вообще не нужен). Это, так сказать, первая большая переделка - создать древо (древо - красиво звучит!) классов. Вторая новость - вместо индексов маркеров (положительные числа для размерных маркеров, отрицательные - для узловых) создал маркеры настоящие, объектные. Да все их красиво назвал и расставил по нужным местам. ![]() В общем, размусоливать более не буду, вот версия для растерзания: SimpleVectorGraphicsEditor V0_2.zip [отступ]Извиняюсь, что выложил здесь, а не на гитхабе. Опыта работы с ним не было, а с разбегу не получается. Это первое. А второе, по-поводу Undo/Redo с командами. С материалом по ссылкам я познакомился и (о ужас!) я не совсем уверен, нужно ли эту штуку применять в простом ГВР, если этот примитивный механизм и так справляется... P.S. А формат записи в файл надо будет менять, ибо совместимости записанных файлов от версии к версии нет. Нужно сделать xml, да ещё с контролем версий. Всем спасибо за внимание, пока! |
Всего комментариев 2
Комментарии
-
Гм... ну если кратко, то все фигня
Кажется даже стало хуже, чем предыдущая версия.
Куча ненужных классов, куча непонятных интерфейсов. Класс Figure это вообще феерия
Бесконечные
что однозначно свидетельствует о неправильной модели классов. Брр....C# 1 2 3
if (marker is BottomMiddleSizeMarker) ... else if (marker is BottomRightSizeMarker) ... else if (marker is MiddleLeftSizeMarker) ... else
Вы очень спешите писать код. Сначала нужно разработать простую и гибкую модель. И потом уже писать все остальное. У вас же свалка.
В общем мне даже лень это все разбирать. Тут работать и работать.
Если есть желание разобраться с архитектурой - создайте тему на форуме. Формат блога тут не очень подходит.Запись от Storm23 размещена 15.11.2018 в 21:05 -
Ок. Создаю тему.
http://www.cyberforum.ru/windows-forms/thread2352217.htmlЗапись от ashsvis размещена 16.11.2018 в 05:29
Обновил(-а) ashsvis 16.11.2018 в 06:57 (Добавил ссылку на тему)