Плагин PlantUML
Наткнулся на эту утилиту.
Опенсорсная. Прикольная штука кстати. Т.е. пишешь в комментах к коду блок текста и получаешь красивую диаграмму в окне плагина (есть плагин для IDEA и eclipse). Есть мануал на англицком по синтаксису. Если посмотреть примеры - достаточно сложные диаграммы можно найти. Прелесть этого плагина в том, что сама диаграмма хранится вместе с кодом, для которого она создана. Открыл файл, глянул диаграмму - и суть кода становится понятней и приятно :) Кто-нибудь пользовался такой штукой? Подумываю взять на вооружение, но сначала попробую что-нибудь сваять на конкретном примере. Кстати, в процессе знакомства столкнулся с неприятным моментом - некоторые конструкции не рендерятся, пишет "Cannot find Graphviz". Я попробовал поставить эту штуку под виндой, но пока не смог. |
Цитата:
На семёрку ставить отказывалась, нужно запускать в режиме совместимости. |
Потыкать в реальном времени можно тут.
|
Ога, как сериал обсудить, карму или аниме - так все за, а как что-то касаемо Web-технологий, фреймворков и либ - так всем влом смотреть исходники и википедию.
А ещё спрашивают почему народ отсюда валит... Кто-нибудь хоть знает что такое UML? Блок-схема? Юзали? |
B~Vladi,
Мож я чего не понял, но мне не понравились возможности этого плагина. Потыкав в реальном времени я понял, что использовать его не буду. Я ещё тыкал в phpmyadmin тоже плагин есть по строению баз и тоже не буду использовать, хотя тот плагин гораздо круче. |
B~Vladi, думаю, потому, что большинство не в теме ) Бегло посмотрел про UML. Я так понял это для визуализация алгоритма работы программы?
|
Цитата:
|
B~Vladi,
если ты припомнишь, я как-то рисовал схему ООП в js. Так вот я вынес оттуда один немаловажный урок. Все люди воспринимают одни и те же схемы по разному. |
Цитата:
|
Ну бывает нужно описать алгоритм работы кода, хоть что то уже было бы понятным, кто куда и зачем обращается, что бы не разбираться в стопке кода заново, новация полезная но не тянет на обсуждение, нечего обсуждать
моя первая диаграмма Писька->Жопа : сперма |
Цитата:
Цитата:
Sequence Diagram - хорошо подходит для описания последовательности действий между некоторыми сущностями. Например, общение клиента и сервера. Use Case Diagram - хорошо описывает взаимодействие пользователя(ей) с интерфейсом, сервисом и т.п. Class Diagram - описывает структуру и отношение классов (конструкторов) между собой. Например, в Java такие диаграммы генерятся налету. Activity Diagram - Цитата:
State Diagram - описывает состояние некой сущности, например, конечного автомата или алгоритма. Object Diagram - описывает объекты (списки, хеши) и отношение между ними. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Могу завтра скинуть скрины, если интересно. Цитата:
Цитата:
Вот я и предложил вариант. Если немного поднапречься и потратить времени - в дальнейшем писать схемы будет уже не так сложно. Зато коллегам - неоценимая помощь :) Я никого не принуждаю, если что :) |
Кстати, при хорошем скилле, написать приличную схему можно за пол часа.
В визуальном редакторе получается не меньше. Потратить 30-60 мин в неделю/месяц - не много. |
Цитата:
Не могу похвастаться большим опытом в рисований диаграмм, как-то не было особой необходимости. Но когда возникала, я приходил к тому, что Enterprise Architect - лучший из имеющихся инструментов. Я пробовал использовать программы с более простым интерфейсом. Но это заканчивалось тем, что я сталкивался с невозможностью изобразить то, что мне нужно. PlantUML похож на один из таких вариантов. К тому же не уверен, что наличие диаграммы в коде - это плюс. |
Цитата:
|
Цитата:
|
Цитата:
Gozar, почему ты просишь объяснять тебе очевидные вещи? Ты и сам должен был это знать... В IDEA стандартная панель Structure может показать структуру объектов, описанных в файле, включая то, что есть в JSDoc. Но она не показывает связей между ними. |
И вот так нельзя сделать?:
TSN.load = function (path, name, config) { config = new Config(config); var fullPath = LIB.path.join(config.templateRoot, path); if (config.cache === true && TSN.cache.hasOwnProperty(fullPath)) { return TSN.cache[fullPath]; } config.path = LIB.path.dirname(fullPath); return TSN.compile(LIB.fileSystem.readFileSync(fullPath, config.encoding), name || fullPath, config); }; Могло бы превратиться в нечто подобное: TSN.load = function { LIB.path.join TSN.cache LIB.path.dirname TSN.compile LIB.fileSystem.readFileSync }; А по моему вполне реально такой парсер написать. |
По сути ты же переписываешь то же самое, только другими словами. А я ой как не люблю делать двойную работу.
|
Цитата:
Если бы ты развил мысль на наглядном абстрактном примере... Т.е. код и полученная схема. Ещё для такого парсера нужно брать какой-нибудь готовый статический анализатор. Ну и без поддержки JSDoc толку будет мало. Цены бы не было такому парсеру, если бы он генерировал алгоритм наподобие этого: ![]() Есть ещё один важный момент. Что бы диаграмма была более читабельной, необходимо иметь возможность управлять логикой её генерации. Например здесь описана такая возможность, в разделе "Changing arrow direction". По опыту могу сказать, что без этого будет получаться, скажем так, не то. Например: /* @startuml title The architecture of the site skinparam componentStyle uml2 skinparam component { BorderColor<<P>> #FF6655 } component "Template Engine" as TEN <<P>> component "Builder" as Builder <<P>> component "Router" as Router <<P>> component "Web Server" as Server component "Data Base,\nCache" as DB interface "HTTP(S)" as HTTP Server -r- HTTP HTTP .r.> Router: Proxy package "Project" { component "Static" as Stat component "Templates" as TMPL component "Applications" as Apps interface "Data\naccess" as API TMPL .r.> API TMPL .d.> Builder: Configure Apps -l- API Apps .r.> DB } Router -r-> TEN TEN -d-> TMPL: Rendering Builder --> Stat: Build HTTP .d.> Stat: Proxy TMPL -u-> HTTP note right of Builder: It works once at initialization @enduml */ Результат: ![]() Здесь практически для каждой связи используются указания направления (.d. - down, -r- - right и т.д.). Вот, что будет без них: /* @startuml title The architecture of the site skinparam componentStyle uml2 skinparam component { BorderColor<<P>> #FF6655 } component "Template Engine" as TEN <<P>> component "Builder" as Builder <<P>> component "Router" as Router <<P>> component "Web Server" as Server component "Data Base,\nCache" as DB interface "HTTP(S)" as HTTP Server -- HTTP HTTP ..> Router: Proxy package "Project" { component "Static" as Stat component "Templates" as TMPL component "Applications" as Apps interface "Data\naccess" as API TMPL ..> API TMPL ..> Builder: Configure Apps -- API Apps ..> DB } Router --> TEN TEN --> TMPL: Rendering Builder --> Stat: Build HTTP ..> Stat: Proxy TMPL --> HTTP note right of Builder: It works once at initialization @enduml */ Результат: ![]() Читабельность явно пострадала. Ну и ещё один момент. PlantUML может генерировать схемы разного типа. Парсер же кода - одного. Но всё вышесказанное никак не должно восприниматься как попытка отговорить от этой затеи. Я лишь хочу показать подводные камни, которые могут возникнуть. Их скорей всего будет больше, я лишь привел те, что первыми пришли в голову. В любом случае мысль интересная, я бы понаблюдал как минимум. |
Цитата:
|
Цитата:
И я сейчас вспомнил, что у меня возникала необходимость в диаграммах, показывающих то, что разбросано по коду. |
Мне по сути не нужна идеальная схема. Я провел очень много времени делая разные не нужные дела, изучая различные программы и т.д. Хочу автоматизации процесса.
Сам хочу увидеть что из этого выйдет. Т.к. времени рисовать схемы у меня сейчас нет, а вот количество кода порой растет в геометрической прогрессии и мне похоже проще написать подобный парсер, чем рисовать схему на каждый метод. |
Цитата:
Цитата:
Цитата:
Например: схема, описывающая работу NodeJS-модуля (состоящего из нескольких файлов) должна находится либо в коде индексного файла, либо отдельным файлом в корне модуля. |
Цитата:
|
Цитата:
Ну и на мой взгляд надо рисовать диаграммы, когда кто-то не может разобраться, что происходит. Разве что какая-нибудь вступительная информация к проекту может быть. Но не из одних диаграмм. Не думай, что диаграмма всегда лучше текста. Они друг друга дополняют. Gozar, а думаешь, связи тебе сильно помогут? |
Цитата:
Цитата:
|
а зачем тебе связи?
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
x-yuri чего-то не договаривает постоянно. Причём всегда избегает выражения своего мнения/видения. Может боится критики, а может это такой хитрый тактический ход. Типо пусть другие расскажут, а я решу что лучше.
Признаться, такая схема более выгодна, чем гнуть свою линию. Меня здесь как-то критиковали за "я думаю", "ящитаю", "я бы" и т.д. Типо нехуй другим навязывать своё мнение, в любом случае в инете кто-то не прав. Есть в этом доля истины, ящитаю. Как бы там ни было, критиковать всегда проще и безопаснее (для репутации), чем делиться мыслями. По причине моей открытости, я продолжу троллить форумчан и коллег своим "ящитаю", хоть и мне самому не нравится такая позиция. Но, блиать, кто-то же должен гнуть свою линию! Мой недоделанный шаблонизатор наипиздатейший, PlantUML ахуитительный. Кто-то хочет поспорить?! (Это риторический вопрос, если что, но я всегда готов подискутировать на эту тему) В контексте же этой темы я не вижу смысла вести обсуждение с людьми, не имеющими к ней (теме) интереса, опыта, либо своего мнения: Цитата:
Я тоже не могу похвастаться большим опытом создания UML-диаграмм. Я год-два назад пытался что-нибудь родить. Искал инструменты. Но дальше дело не пошло - то ли инструменты не понравились, то ли я ещё зелёный был. Сейчас я нашел эту тулзу, которая изменила моё представление на создание схем. Именно поэтому (а не потому что блять в сереале увидел) я и поделился с сообществом. |
хранить uml схемы вместе с кодом - просто супер идея. Жаль у меня нетбинс.
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Если бы я был Ларру Уоллом, я бы наверное сказал, что я за эволюцию, за разные подходы. (It is my job in life to travel all roads, so that some may take the road less travelled, and others the road more travelled, and all have a pleasant day.) Я конечно не Ларри Уолл, но мне очень симпатична его позиция, и вообще perl - язык, который произвел на меня наибольшее впечатление. Да и сам человек интересный. В общем, если хочешь лучше понять меня, почитай про Ларри Уолла, интервью, цитаты... ;) 5 миров Цитата:
Цитата:
Цитата:
- о музыке имеют право только поп-звёзды, - о литературе — только авторы бестселлеров, - о политике — только президенты стран не меньше Израиля, - о еде — только шеф-повара элитных ресторанов? Цитата:
|
Цитата:
Цитата:
Хотя в нашем случае я немного перегнул, да. Цитата:
Цитата:
Ну и я же не говорю "исходя из моего опыта вы все не правы, только я один прав, и вообще вы все мудаки здесь"? Что плохого в том, что если бы ты мне написал: "Я юзал PlantUML, и по опыту могу сказать, что диаграммы ... создаются неудобно и вообще реализация не очень"? Ничего. А вот если так: "я тут глянул - какое-то говно, юзать не буду и вам не советую"? Чьё мнение будет ценнее для читающих? |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
А ещё я писал: Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 04:54. |