Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 21.08.2012, 17:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Это не мои слова, не выдумывай.
Ну во-первых я конечно же преувеличил, а во-вторых у меня осталось впечатление, что ты не целиком и полностью придерживаешься первого варианта.

Сообщение от B~Vladi
Пост совсем не об этом.
Сообщение от B~Vladi
Программист сам должен понимать, где диаграмма будет полезна, а где нет. В каждом конкретном случае.
Ну вообще-то меня в первую очередь интересует, где и когда это можно применить, с пользой. Мне не нужен удобный, но бесполезный инструмент. А чтобы программист сам понимал, где диаграмма будет полезна, а где нет, нужен опыт.
Ответить с цитированием
  #42 (permalink)  
Старый 21.08.2012, 19:25
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
у меня осталось впечатление, что ты не целиком и полностью придерживаешься первого варианта.
Ну может и не целиком и полностью, я не помню всех своих высказываний. Может я неудачно когда-то выразился.

Если ты про моменты, типа:
Цитата:
Я делал/использовал [...] и я думаю/понял/считаю что [...].
То что плохого в том, что бы поделиться своим мнением? Причем я всегда стараюсь что бы это не выглядело как навязывание оного. Вот какого мнения я придерживаюсь.

Сообщение от x-yuri
где и когда это можно применить, с пользой
К сожалению ничего не могу тебе посоветовать:
Сообщение от x-yuri
У меня сложилось впечатление, что у тебя недостаточно опыта использования UML, чтобы делать выводы, когда и где его применять.


Сообщение от x-yuri
А чтобы программист сам понимал, где диаграмма будет полезна, а где нет, нужен опыт.
Получается рекурсия: чтобы рисовать диаграммы, нужен опыт, но без опыта рисовать не надо, потому что не знаешь что рисовать.
Если заменить в этом предложении слова "рисовать" на "писать" и "диаграммы" на "программы", то можно добавить в RTFM и скидывать всем новичкам, зашедшим на этот форум.

Меня ещё вот что интересует. Для тебя этот инструмент бесполезный потому что не знаешь что рисовать или потому что не умеешь?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 21.08.2012 в 19:28.
Ответить с цитированием
  #43 (permalink)  
Старый 22.08.2012, 00:41
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Ну может и не целиком и полностью, я не помню всех своих высказываний. Может я неудачно когда-то выразился.
Ну я в общем-то тоже не помню точно, почему у меня такое впечатление сложилось.

Сообщение от B~Vladi
Получается рекурсия: чтобы рисовать диаграммы, нужен опыт, но без опыта рисовать не надо, потому что не знаешь что рисовать.
Получается, что если бы ты рассказал, где и когда применять UML было бы интереснее. Возможно, что к этому моменты ты бы и инструмент другой выбрал.

Сообщение от B~Vladi
Меня ещё вот что интересует. Для тебя этот инструмент бесполезный потому что не знаешь что рисовать или потому что не умеешь?
Не вижу смысла. По-крайней мере редко.
Ответить с цитированием
  #44 (permalink)  
Старый 22.08.2012, 01:08
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
если бы ты рассказал, где и когда применять UML было бы интереснее
У меня есть своё видение на счёт этого, но я не уверен что смогу правильно его сформулировать. Мне бы тоже было бы интересно почитать про это, сравнить со своей точкой зрения.

Вообще, опять же, пост не про это. Но можно развить эту тему, раз уж никто не понимает смысла. Но я не могу один это делать, необходима поддержка и поправка сообщества.
Попробую начать.

Сообщение от x-yuri
По-крайней мере редко.
Один из таких редких случаев - документация, согласен?

Ещё один редкий случай - сложная логика компонента, который необходимо постоянно использовать. Я понимаю, что этого стоит избегать, но ситуации бывают разные. Словесное описание в этом случае не даст полного представления, а диаграмма дополнит его. В этом случае польза будет в том, что новый человек сможет быстрее вникнуть в суть, а это важно в крупных командах/компаниях.

Пример из жизни - реализация функции require, подобной из NodeJS. Логика в ней более ветвистая, чем в NodeJS, могу скинуть диаграмму. После создания схемы стало очевидно, что описывать словами её работу будет бесполезным - диаграмма в данном случае наиболее удачно решила эту задачу. При этом, в ней нет лишнего функционала, логика не перегружена.

Я могу привести ещё примеры из практики, если надо.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 22.08.2012 в 01:25.
Ответить с цитированием
  #45 (permalink)  
Старый 22.08.2012, 02:07
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #46 (permalink)  
Старый 22.08.2012, 02:12
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #47 (permalink)  
Старый 22.08.2012, 02:43
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Один из таких редких случаев - документация, согласен?
По идее да, только опять же как-то не было необходимости. Ситуация примерно такая же как с UML... Тут в общем-то такой момент, что я в основном работаю один. А UML - это больше для коммуникации между людьми.

Сообщение от B~Vladi
Ещё один редкий случай - сложная логика компонента, который необходимо постоянно использовать.
Сложного - да, а вот постоянно - спорный вопрос. То что редко используешь, успевает забыться. По логике как раз это стоит документировать.

Сообщение от B~Vladi
Пример из жизни - реализация функции require, подобной из NodeJS. Логика в ней более ветвистая, чем в NodeJS, могу скинуть диаграмму. После создания схемы стало очевидно, что описывать словами её работу будет бесполезным - диаграмма в данном случае наиболее удачно решила эту задачу. При этом, в ней нет лишнего функционала, логика не перегружена.
Да, можешь показать диаграмму. Да и функцию.

Сообщение от B~Vladi
Я могу привести ещё примеры из практики, если надо.
Ну если не лень, то я за.
Ответить с цитированием
  #48 (permalink)  
Старый 22.08.2012, 11:45
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
а вот постоянно - спорный вопрос
Ну да, в этом случае уже знаешь все нюансы. Но всегда есть риск внезапно переключится на другую задачу, а потом всё забыть о прошлой.

Сообщение от x-yuri
Да, можешь показать диаграмму. Да и функцию.
/*
         @startuml
         title Require.
         note top: require(namespace);
          (*) -right-> if "" then
          note top: The module\nis in the cache??
          --> [true] "Return module" as Return
          --> (*)
          else
           -right-> [false] if "" then
             note top: Start with\n'docroot://'?

             --> [true] "Load file from\n<b>namespace</b>"
             --> [Success] "Initialization module.\nSave module in cache." as Compile
             --> Return
           else
             -right-> [false] if "" then
               note top: There is a file\nwith the name\n<b>namespace</b> + '.js'?

               --> [true] "Load file from\n<b>namespace</b> + '.js'"
               --> [Success] "Create namespace" as CreateNS
               --> Compile
             else
               -right-> [false] if "" then
                 note top: There is a file\nwith the name\n<b>namespace</b> + '/package.json'?

                 --> [true] "Parse file from\n<b>namespace</b> + '/package.json'"
                 --> [Success] "Load the file,\nspecified in the package.json"
                 note right: Default file name is\n<b>namespace</b> + '.js'

                 --> [Success] CreateNS
               else
                 --> (*)
               endif
             endif
           endif
         endif
         @enduml
         */
        var require = (function () {
            var CACHE = {};
            var OPTIONS = {
                root: 'docroot://',
                extension: 'js',
                packageName: 'package.json'
            };

            function extendOptions () {
                if (!require.hasOwnProperty('options')) {
                    require.options = {};
                }

                for (var name in OPTIONS) {
                    if (OPTIONS.hasOwnProperty(name) && !require.options.hasOwnProperty(name)) {
                        require.options[name] = OPTIONS[name];
                    }
                }
            }

            function createNamespace (namespace, module) {
                namespace = namespace.split('.');

                var
                  name,
                  index = 0,
                  length = namespace.length,
                  currentNamespace = $XM;

                while (index < length) {
                    name = namespace[index++];

                    if (index === length) {
                        currentNamespace[name] = module;
                    } else if (!currentNamespace.hasOwnProperty(name)) {
                        currentNamespace[name] = {};
                    }

                    currentNamespace = currentNamespace[name];
                }
            }

            function require (namespace) {
                var
                  file,
                  path,
                  main,
                  createNS = true,
                  module = {
                      namespace: namespace,
                      exports: {}
                  };

                if (CACHE.hasOwnProperty(namespace)) {
                    return CACHE[namespace];
                }

                extendOptions();

                if (namespace.indexOf('docroot://') === 0) {
                    if ($X.file.test(namespace)) {
                        file = $X.file.load(namespace);

                        createNS = false;
                        path = namespace;
                        delete module.namespace;
                    } else {
                        throw new Error('Can`t find module on the way: "' + namespace + '"');
                    }
                } else if ($X.file.test(path = require.options.root + namespace + '.' + require.options.extension)) {
                    file = $X.file.load(path);
                } else if ($X.file.test(path = require.options.root + namespace + '/' + require.options.packageName)) {package.json
                    file = $X.file.load(path);
                    file = JSON.parse(file);

                    main = file.hasOwnProperty('main') ? file.main : namespace + '.' + require.options.extension;

                    if ($X.file.test(path = require.options.root + namespace + '/' + main)) {
                        file = $X.file.load(path);
                    } else {
                        throw new Error('Can`t find module: "' + path + '"');
                    }
                } else {
                    throw new Error('Can`t find module: "' + namespace + '"');
                }

                module.path = path;
                module.dirName = path.substring(0, path.lastIndexOf('/'));

                new Function('module', file).call(module.exports, module);

                createNS === true && createNamespace(namespace, module.exports);

                CACHE[namespace] = module.exports;

                return module.exports;
            }

            extendOptions();

            return require;
        })();

__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #49 (permalink)  
Старый 22.08.2012, 13:41
Аватар для antonM
Кандидат Javascript-наук
Отправить личное сообщение для antonM Посмотреть профиль Найти все сообщения от antonM
 
Регистрация: 11.08.2011
Сообщений: 103

Тема интересная, но я лично пока не дорос до рисования таких схем прямо в коде или отдельной софтине. Пока хватает нарисовать диаграмму или блок схему в блокноте на бумаге, быстрее и легче воспринимается. Я так понимаю что данная тулза полезна при описании больших фронт-эндов или серверной части?
Мне гораздо интереснее практическая реализация Юнит-тестов для JS. В моей отрасли эта тема куда важнее для продакшена (софт обязательно должен быть валидирован) чем диаграммы. Пока ничего толкового не нашел кроме Jasmine. Где-то тема от x-yuri проскакивала на форуме по этому поводу...
Вот если бы этот вопрос раскрыли в полной мере... мммм... было бы просто зашибись
Ответить с цитированием
  #50 (permalink)  
Старый 22.08.2012, 16:03
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от antonM
Я так понимаю что данная тулза полезна при описании больших фронт-эндов или серверной части?
Ну тут речь о диаграммах в целом, без привязки к конкретному инструменту. А вообще да, для какого-нибудь фреймворка или серверной платформы просто необходимы диаграммы.

По поводу тестов, есть свежая библиотека от monolithed, стоит посмотреть.

Сообщение от antonM
Вот если бы этот вопрос раскрыли в полной мере... мммм... было бы просто зашибись
Мне тоже интересно, но пусть кто-нибудь другой раскрывает. x-yuri, нет желания?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плагин в стиле Live tarya jQuery 5 16.07.2012 03:00
Плагин jQuery form. Добавляю форму js'ом Physicist jQuery 3 21.07.2011 17:46
Потерял красивый плагин навигации картинками eai jQuery 0 09.07.2009 15:18
Плагин для файрфокса - чтение изображений SunnyDay Общие вопросы Javascript 4 28.04.2009 17:30