Форум программистов, компьютерный форум, киберфорум
Наши страницы
ashsvis
Войти
Регистрация
Восстановить пароль
"Орешек знаний тверд, Но все же мы не привыкли отступать..." (с)
Оценить эту запись

Шаг 8 (Рефакторинг ГВР) Версия 0.2

Запись от ashsvis размещена 15.11.2018 в 14:12
Обновил(-а) ashsvis 15.11.2018 в 15:06 (слово пропустил)

Приветствую вас, уважаемые читатели!

Вчера пропустил день публикации, думал, сделаю перерывчег... Но доводить до ума программу надо, тем более что на вопиющие недостатки кода указали мне. Спасибо!

Первым делом убрал это страшное по всему коду:
C#
1
2
3
4
if (kind == DrawingKind.Polygon)
    graphics.DrawPolygon(pen, points); // рисование контура
else
    graphics.DrawLines(pen, points);
[отступ]Действительно, если "мясо наращивать", то надо к этому всё приспособить. Правда у меня метод разработки такой.
Сперва есть идея, потом прототип, желательно минимально работающий, потом пытаемся его расширить и тут-то надобность
и возникает в наследовании, интерфейсах и прочая...

[отступ]Действительно, когда потребовалось добавить круг (круг, Карл!), то базовый массив точек тут, конечно, не причём, ибо
круг - это частный случай эллипса, а эллипс строится на прямоугольнике, у которого Location и Size, и никакого массива точек.
Поэтому пришлось классы писать под прямоугольник, квадрат, эллипс и круг (ещё хотел ромб сделать, но не всё сразу... ).
[отступ]Все эти классы наследуются от класса Figure (вернее, сделал, что наследуются Polyline, Polygon, Rect и Oval напрямую, потом
от Oval наследуется Circle, а от Rect наследуется Square). Соответственно, пришлось с методами повозиться у базового класса
Figure (и сделать его всё-таки абстрактным и базовые методы кое-какие абстрактные, а кое-какие вообще вынес под интерфейсы,
так как, когда метод абстрактный, то его в каждом наследнике нужно переопределять, и бывает, в наследнике он вообще не
нужен). Это, так сказать, первая большая переделка - создать древо (древо - красиво звучит!) классов.

Вторая новость - вместо индексов маркеров (положительные числа для размерных маркеров, отрицательные - для узловых)
создал маркеры настоящие, объектные. Да все их красиво назвал и расставил по нужным местам.

В общем, размусоливать более не буду, вот версия для растерзания: SimpleVectorGraphicsEditor V0_2.zip

[отступ]Извиняюсь, что выложил здесь, а не на гитхабе. Опыта работы с ним не было, а с разбегу не получается. Это первое.
А второе, по-поводу Undo/Redo с командами. С материалом по ссылкам я познакомился и (о ужас!) я не совсем уверен,
нужно ли эту штуку применять в простом ГВР, если этот примитивный механизм и так справляется...

P.S. А формат записи в файл надо будет менять, ибо совместимости записанных файлов от версии к версии нет. Нужно
сделать xml, да ещё с контролем версий.

Всем спасибо за внимание, пока!
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Аватар для Storm23
    Гм... ну если кратко, то все фигня
    Кажется даже стало хуже, чем предыдущая версия.
    Куча ненужных классов, куча непонятных интерфейсов. Класс 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 Storm23 на форуме
  2. Старый комментарий
    Запись от ashsvis размещена 16.11.2018 в 05:29 ashsvis на форуме
    Обновил(-а) ashsvis 16.11.2018 в 06:57 (Добавил ссылку на тему)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru