yurikhan: (Default)

Иногда при разборе какого-нибудь проекта с кучей файлов бывает удобно посмотреть на общую картину — какие файлы зависят от каких других файлов. Это может быть надо для того, чтобы решить, в каком порядке их читать, или разрулить цикл в #include’ах.

Read more... )
yurikhan: (Default)

А вот бывает ли какая-нибудь XML-схема плюс софт для рисования диаграмм?

Нет, я, конечно, знаю про SVG. Который кое-как отображается Firefox’ом и почти совсем никак Internet Explorer’ом. И WYSYWIG’ные редакторы, позволяющие (в теории) собрать собаку из атомов водорода, углерода, азота и кислорода. Но я хочу собирать собаку не из атомов, а из головы, туловища, лап и хвоста. И, желательно, не опускаясь до деталей вида «голова расположена в точке (0, 0), а хвост в точке (175, 0)», из-за которых собака порвётся сразу, как только я захочу поменять ей породу.

То есть вот, возьмём, к примеру, UML-диаграмму статической структуры. Я могу взять Visio, вбить в него описание своих классов, раскидать классы по странице, провести между ними ассоциации, и они будут сохраняться при перемещении. Это хорошо. Но описывать классы приходится в гуёвом диалоговом окне, обладающем рядом фундаментальных недостатков.

  • Оно модально. Я открываю окно атрибутов класса, добавляю атрибут, вспоминаю, что у меня в модели ещё нет его типа. Чертыхаюсь, закрываю окно атрибутов, добавляю тип в модель, открываю окно атрибутов, прописываю тип последнего атрибута, добавляю следующий атрибут. Я хотел бы описывать свои атрибуты в немодальном текстовом редакторе с каким-нибудь более или менее вменяемым синтаксисом. Если не C++, то хотя бы XML. Но чтобы я мог поставить закладку, пойти на страницу вверх, вписать новый тип, вернуться к закладке.
  • Оно не злопамятно. Вот есть колонка типов атрибутов. Она по умолчанию имеет ширину такую, что в ней умещается имя моего namespace’а. А собственно типы скрыты за многоточием. Я хочу видеть тип целиком. Я растаскиваю окно пошире, потом колонку имени поуже, работаю с атрибутами одного класса. Закрываю, создаю новый класс. Ширина окна сохранилась, а ширина колонок — нет. В текстовом редакторе я настрою разамер шрифта и ширину табуляции и буду видеть всё.
  • Оно ориентировано на мышевозилу гуёвого. Я хочу писать тип руками, а не выбирать из длинного списка, лишённого каких-либо средств поиска и фильтрации. Или хочу написать первые три буквы и чтоб мне предложили два подходящих типа.
  • Оно не поддерживает групповые операции. Я хочу выделить все атрибуты и назначить им всем видимость public.

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

Это всё типа мелочи, но именно из-за вот таких мелочей я предпочитаю UML не рисовать, а когда сильно приспичит, рисовать карандашом на бумаге.

Productivity hint: Когда надо reverse-engineer’нуть какую-нибудь мрачную базу данных или систему классов, я беру лист бумаги, режу его на маленькие карточки и рисую на каждой карточке один класс или таблицу. Потом их можно произвольно размещать на поверхности стола или на другой бумажке и вырисовывать ассоциации или foreign keys.

Profile

yurikhan: (Default)
Yuri Khan

May 2017

S M T W T F S
 123 456
78910 111213
14 151617181920
21 222324252627
28293031   

Links

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2017-05-29 15:03
Powered by Dreamwidth Studios