Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2018, 15:08   #11
staircaseMaker
Пользователь
 
Регистрация: 25.02.2018
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Если так в целом то документация должна быть в таком виде чтобы ее потом можно было четко структурировать по методам.
Подскажите, пожалуйста, а кто потом должен эту документацию использовать, для чего и как именно? Код сейчас разбит на функции с понятным названием и кратким описанием прямо в коде. Я не смог представить ситуацию, в которой мне, например, было бы этого недостаточно. Может я чего-то не понимаю?


Цитата:
Сообщение от Pavia Посмотреть сообщение
Тут видна неправильная расстановка приоритетов. Перво наперво вы должны выяснить, что хочет потребитель, заказчик, пользователь. Какие кнопки нажимает какие функции он использует что он проверят, а что забывает проверить.
Дело в том, что в данном случае я и есть конечный заказчик. Системой пользуюсь непосредственно я и инженеры, находящиеся в моем подчинении. Со стороны пользователя никаких функций нет, есть только поля для ввода параметров и кнопка - "рассчитать". И надо сделать так, чтобы после нажатия на эту кнопку построилась правильная (с технической точки зрения) модель лестницы. А проблема на данный момент в том, что каждая вторая модель содержит ошибки. Более того, не все ошибки получается исправить, т.к. часть кода просто ужасна и даже я там ничего не могу понять. А произошло это потому, что на определенном этапе я перестал проверять код, который пишется, а проверял только результат работы.
Вот, собственно, в чем состоит суть моего вопроса: с чего бы Вы посоветовали начать исправление этой ситуации?
Я пока склоняюсь к тому, чтобы начать с аудита самого лучшего с моей точки зрения модуля, чтобы получить образец, к которому надо привести остальные. Как Вы думаете, как лучше всего это организовать, чтобы польза от этого аудита была максимальной? Код написан на javascript с использованием библиотеки THREE.js, объем того модуля, который я считаю наилучшим в районе 12 тыс строк.
staircaseMaker вне форума Ответить с цитированием
Старый 27.02.2018, 15:21   #12
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от staircaseMaker Посмотреть сообщение
Подскажите, пожалуйста, а кто потом должен эту документацию использовать, для чего и как именно? Код сейчас разбит на функции с понятным названием и кратким описанием прямо в коде. Я не смог представить ситуацию, в которой мне, например, было бы этого недостаточно. Может я чего-то не понимаю?.
Ну вы наверное или тот кто будет проводить рефакторинг. Так если вам достаточно этой информации то в чем проблема??
Тут сложно советовать потому что непонятно что там и как вообще устроено. Какого рода расчеты проводятся и тд.

Вы для каждой конкретной лестницы заказывали свою функцию расчета что-ли? Сколько у вас типов таких проектов?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 27.02.2018, 15:34   #13
staircaseMaker
Пользователь
 
Регистрация: 25.02.2018
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Вы для каждой конкретной лестницы заказывали свою функцию расчета что-ли? Сколько у вас типов таких проектов?
У нас 8 серий лестниц, на каждую лестницу свой независимый конструкторский модуль. Серия это семейство лестниц с одинаковым констуктивом и переменными параметрами (высота, ширина, кол-во ступеней, тип ограждения, тип ступеней и т.п.) Задача модуля - сформировать графический объект для последующего рендеринга и вывода на страницу при помощи отдельного модуля. Модель собирается из деталей, каждая из которых строится отдельной функцией. Само построение большинства деталей многоэтапное и глубоко завязано на методах three.js. Например, вот такой объект http://joxi.ru/Q2KVLnzF4K30om строится следующим образом: строится проекция одной грани из линий и дуг (path), объединяется в область (shape), потом в нем делаются отверстия при помощи специального метода (addHole), методом экструзии делается тело (mesh), потом аналогично строится вторая грань и угол, потом все эти три объекта позиционируются и добавляются в составной объект (complexObject), затем весь этот уголок добавляется в составной объект нижнего марша, затем в лестницу. Каждый этап "сборки" обернут в свою функцию, результатом которой является более глобальная группа деталей. Результат работы это объект javascript (многомерный ассоциативный массив с глубокой вложенностью), получаемый последовательным применением конструкторов из библиотеки three.js. Модель статична, никакого поведения у нее нет.
staircaseMaker вне форума Ответить с цитированием
Старый 27.02.2018, 15:34   #14
staircaseMaker
Пользователь
 
Регистрация: 25.02.2018
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Вы для каждой конкретной лестницы заказывали свою функцию расчета что-ли? Сколько у вас типов таких проектов?
У нас 8 серий лестниц, на каждую лестницу свой независимый конструкторский модуль. Серия это семейство лестниц с одинаковым констуктивом и переменными параметрами (высота, ширина, кол-во ступеней, тип ограждения, тип ступеней и т.п.) Задача модуля - сформировать графический объект для последующего рендеринга и вывода на страницу при помощи отдельного модуля. Модель собирается из деталей, каждая из которых строится отдельной функцией. Само построение большинства деталей многоэтапное и глубоко завязано на методах three.js. Например, вот такой объект http://joxi.ru/Q2KVLnzF4K30om строится следующим образом: строится проекция одной грани из линий и дуг (path), объединяется в область (shape), потом в нем делаются отверстия при помощи специального метода (addHole), методом экструзии делается тело (mesh), потом аналогично строится вторая грань и угол, потом все эти три объекта позиционируются и добавляются в составной объект (complexObject), затем весь этот уголок добавляется в составной объект нижнего марша, затем в лестницу. Каждый этап "сборки" обернут в свою функцию, результатом которой является более глобальная группа деталей. Результат работы это объект javascript (многомерный ассоциативный массив с глубокой вложенностью), получаемый последовательным применением конструкторов из библиотеки three.js. Модель статична, никакого поведения у нее нет.
staircaseMaker вне форума Ответить с цитированием
Старый 27.02.2018, 15:54   #15
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну ладно. Уже кое что.
И где появляется ошибка??

Я надеюсь сами методы создания элементов собраны в едином модуле??
метод addHole тоже один на всех?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 27.02.2018, 16:11   #16
staircaseMaker
Пользователь
 
Регистрация: 25.02.2018
Сообщений: 18
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну ладно. Уже кое что.
И где появляется ошибка??

Я надеюсь сами методы создания элементов собраны в едином модуле??
метод addHole тоже один на всех?
Попробую пояснить, откуда берутся ошибки на примере уголка крепления ступени http://joxi.ru/E2pVBvEF9gbMRr Например, при ширине ступени больше 300мм ставится уголок 230мм, для ступени 230-300мм ставится уголок 200мм, для ступени меньше ставится уголок 160мм, потом 90мм. На той ступени, где есть перемычка, уголки другие чем на остальных. На поворотных ступенях они тоже другие и зависят от конфигурации поворота. Плюс отверстия в уголке должны совпадать с отверстиями в каркасе и в ступенях. Сдвиг хотя бы одного отверстия это провал - лестница не соберется. А в коммерческом модуле это не важно - там и отверстий-то нет.
И таких условий огромное количество и не все они заранее известны. Более того, большинство условий использует сочетание трех и более параметров. Проще говоря, корень проблемы это сложная и заранее не формализованная бизнес-логика. А если учесть еще и то, что все эти модели лестниц мы разрабатываем сами и идет постоянный процесс улучшения конструкции...
На самом деле, эта система и является по-сути "формализатором" зависимости конструктива лестницы от параметров. То есть невозможно просто сесть и сделать описание конструкции лестницы из за очень большой вариативности. Проще говоря, надо сначала написать модуль, поиграться с ним при разных параметрах, выцепить сочетания параметров, при которых появляются косяки (в примере со ступенями это вылезание уголка из под ступени, несовпадение отверстий, пересечение уголков с какими-то другими объектами и т.п.) и добавить в код условия, не допускающие возникновения этих косяков.

И, переосмыслив свою проблему, я пришел к выводу, что проблема у меня скорее с реализацией, чем с архитектурой. Код разбит на модули, модули на функции, только вот код функций написан плохо.
staircaseMaker вне форума Ответить с цитированием
Старый 27.02.2018, 16:16   #17
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

staircaseMaker
Используете ли вы файлы для описания моделей, частей моделей?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.02.2018, 16:19   #18
staircaseMaker
Пользователь
 
Регистрация: 25.02.2018
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
staircaseMaker
Используете ли вы файлы для описания моделей, частей моделей?
Поясните, пожалуйста, что Вы имеете в виду.
Если разбиение кода на файлы, то да - каждый модуль разбивается на файлы и в каждом файле находится код, решающий какую-то одну задачу.
Если имеете в виду текстовые файлы или файлы с какими-то параметрами, то нет
staircaseMaker вне форума Ответить с цитированием
Старый 27.02.2018, 16:35   #19
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Да е мае.
У вас по сути 3D редактор.
Как я понял вы каждую модель(крепление, уголок и тд) создаете руками.
Ну так почему бы не исходить из того чтобы в рамках каждого проекта создавать свой набор уголков и элементов? Но создавать методами которые будут во всей программе уникальные.
Допустим единое пространство где вы будете создавать любые детали. Единая координатная сетка. Затем для проекта "Лестница" просто из списка собирать требуемую конфигурацию.

У вас разве не так? И тогда не надо под каждую конфигурацию лестницы писать какой то отдельный конструктор со своими масштабами.
Или я не так понимаю?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 27.02.2018, 17:05   #20
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

WorldMaster
У них там САПР, а не 3D редактор. С параметрическими моделями, подбор параметров которых должен происходит автоматически. И вот есть ешё констрены, ограничения на эти модели они разработали и закодировали кодом - а стоило бы их задокументировать.

Но архитектуры как таковой нет. По двум причинам: опыта нет, а в интернете не описано. Выход ТС уже написал сам рефакторинг.

staircaseMaker
Да начать аудита кода выделить эти самые модели и попробовать их как-то назвать и задокументировать.
Вот эти параметрические модели я бы вынес в файлы и описал бы в них помимо моделей ещё и ограничения и некоторые кейсы(подстановка другой модели, отражение, поворот, размножение, повторение). Насколько это возможно в рамках программы ТС я не знаю, надо смотреть код.
Процесс этот не быстрый.

Но это не главное надо учитывать как тестировать, что тестировать. Файлы должны помочь.


Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну так почему бы не исходить из того чтобы в рамках каждого проекта создавать свой набор уголков и элементов? Но создавать методами которые будут во всей программе уникальные.
Допустим единое пространство где вы будете создавать любые детали. Единая координатная сетка. Затем для проекта "Лестница" просто из списка собирать требуемую конфигурацию.

У вас разве не так? И тогда не надо под каждую конфигурацию лестницы писать какой то отдельный конструктор со своими масштабами.
Или я не так понимаю?
Одним словом следует использовать шаблон проектирования "фабрика".
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с компиляцией программы mrKrog Общие вопросы C/C++ 16 25.05.2017 22:20
"Огниво" – Блокнот для прозы, инженерной мысли, личных записей и планов на жизнь Ognivo Софт 13 09.10.2014 23:51
Чудо инженерной мысли sweex1234 Помощь студентам 1 17.02.2011 19:02
Проблемы с запуском программы Gogent Помощь студентам 2 19.08.2010 13:08