Как визуализировать структуру классов?

 

Добрый день, коллеги-MQL-разработчики!


Подскажите, как можно визуализировать структуру классов проекта?

У меня довольно сложный проект с 10+ классами.

Всё чаще замечаю, что сложно найти нужное место в программе для внесения очередных изменений. 

Как вы управляете сложностью?


Заранее благодарен!

Евгений

 
Yevgen Drumachyk:

Добрый день, коллеги-MQL-разработчики!


Подскажите, как можно визуализировать структуру классов проекта?

У меня довольно сложный проект с 10+ классами.

Всё чаще замечаю, что сложно найти нужное место в программе для внесения очередных изменений. 

Как вы управляете сложностью?


Заранее благодарен!

Евгений

Правый клик по методу, перейти к определению. 
Не то?

 
Yevgen Drumachyk:

Добрый день, коллеги-MQL-разработчики!


Подскажите, как можно визуализировать структуру классов проекта?

У меня довольно сложный проект с 10+ классами.

Всё чаще замечаю, что сложно найти нужное место в программе для внесения очередных изменений. 

Как вы управляете сложностью?


Заранее благодарен!

Евгений

Во всем мире используют общепринятый стандарт UML. (Подрубрика диаграммы классов)

Во многих современных IDE существуют плагины для перевода вашего кода программы в графическую диаграмму UML.

Удобных не встречал, хотя некоторые из них заметно упрощали мне жизнь в проектах Java.

Мое мнение, что в этой области (визуализация классов) непаханное поле. Существующие стандарты ненаглядны, устаревшие и не соответствуют современным реалиям. Для визуализации необходимо во всю использовать цвет и 3D.

Можете заняться.


UML — Википедия
UML — Википедия
  • ru.m.wikipedia.org
UML позволяет также разработчикам программного обеспечения достигнуть соглашения в графических обозначениях для представления общих понятий (таких как класс, компонент, обобщение (англ. ), агрегация (англ. ) и поведение) и больше сконцентрироваться на проектировании и архитектуре. Предпосылки появления языка моделирования UML обозначились в...
 

Для одного класса нарисовать табличку. Первая строка - имя класса, дальше три секции: private, protocted, public с именами методов. Если у класса есть производные классы, то рисуем линии вниз к следующей табличке производного класса. Таким образом получается дерево от одного базового класса... И этого в общем-то достаточно, чтобы разобраться со структурой классов.

А язык UML - это язык слишком общего назначения и слишком обширный, чтобы на него заморачиваться.

 

Николай, Роман, 


Спасибо за ответы!

Роман, переход на определение через правую кнопку - это просто навигация. 

Николай, да - диаграммы - это отдельная тема. UML - не очень для этого удобен. Но я нашел вот этот подход, который обеспечивает общую схему: контекст, контейнеры и компоненты. Им и пользуюсь для общих схем.

Чего сейчас не хватает - это функции автоматической и очень простой визуализации списка методов класса. Это было всегда в Visual Studio (Class View) - см. приложенный скрин. Имея все классы в боковом окне с возможностью их разворачивания и моментальной навигации по двойному щелчку.


Вопросы

1. Возможно ли такое (Class View, как на скрине) получить в Meta Editor? 

1.1. Расширяем ли вообще Meta Editor какими-то плагинами?

2. Смогли ли вы переехать на какой-то другой IDE (среду разработки), типа MS Visual Studio Code и писать на MQL там? Я вот попробовал, прикрутил MQL-компилятор, но не смог заставить его динамично подменять старый скомпилированный советник новым и чтобы Meta Trader автоматически перезагружал советник. Приходилось руками менять. Не практично, бросил, вернулся в Meta Editor. А вам удалось?



Visualising software architecture with the C4 model - Simon Brown, Agile on the Beach 2019
Visualising software architecture with the C4 model - Simon Brown, Agile on the Beach 2019
  • 2019.08.16
  • www.youtube.com
In Simon Brown's talk at AOTB 2019 he explores the visual communication of software architecture based upon a decade of Simon’s experiences working with soft...
 

Помнится, была такая СУБД Clarion, а в её составе присутствовал дизайнер программ. Там было всего 5 типов модулей, но все на экране исправно рисовались и структура программы была кристально ясной, да и структура данных - тоже. К тому же, присутствовала возможность редактирования моделей (шаблонов) программ базовых типов модулей. Мне это позволяло легко выстраивать бесконечные иерархии, вместо типовых таблиц. Нажал F8 - провалился на уровень вниз, нажал F9 - вверх на уровень. Задача для старшеклассника - да, но это было 30 лет назад. 

Сегодня я смотрю на аналог дизайнера для MQL и тихо рыдаю. Разнообразие типов данных возросло до бесконечности (классы, однако), а конструктор программ - всё тот же примитив. 

 
Yevgen Drumachyk:

Чего сейчас не хватает - это функции автоматической и очень простой визуализации списка методов класса.

Все что сейчас есть - команда Список функций (Alt+M). Сделано в виде менюшки - очень неудобно.

 
Вроде бы Doxygen такие  диаграммы рисует, я что - то такое делал. И есть еще вот этот пакет, как раз для простых диаграмм http://www.graphviz.org . Этим я точно пользовался, он довольно удобный
Welcome to Graphviz
Welcome to Graphviz
  • www.graphviz.org
Please join the brand new (March 2020) Graphviz forum to ask questions and discuss Graphviz. Note: The URL is new since May 6 2020. Please update your bookmarks. What is Graphviz? Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks...
 
Doxygen - мутноватенькая прога, ее замучаешься настраивать.
 

Есть опыт использования Вижуал Студио и StarUML.

Вижуал Студио, конечно, как всегда на высоте!

Сейчас работаю в Старе, так сложилось. 

У них есть и платно, и бесплатно. Мне хватает бесплатного, и даже старого...

На генерацию кода не полагаюсь, только рисую! 

Обе программы отлично справляются, но есть ньюансы!

Сначала "кубики" - потом код . Если бы не такая схема - давно свихнулся бы!:))

 

Yevgen Drumachyk:

Как вы управляете сложностью?

Пишу более простой код)
Причина обращения: