powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Разбиение кода на не связные куски
15 сообщений из 15, страница 1 из 1
Разбиение кода на не связные куски
    #38086996
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разбирал я тут как-то чужой код, купленная складская система без исходников и без API, вся логика в формах.
Причем логика это генерация SQL-запросов и отправка их на сервер, т.е. на сервере хранимок нет.

А надо было сделать скоповую обработку заданий и хоть ты тресни, остается только экспериментальным путем писать
в разные таблицы, в надежде, что это система воспримет как надо.

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

В чем проблема то? Я никак не пойму, чего программистам не хватает? Мозгов?
Не знают как разложить логику по разным слоям и разным кускам? Как развязать разные куски кода?


Вот я недавно наколбасил некую платформу для создания сценариев бизнес-логики.
За основу взял шаблон Command. Получил набор (репозиторий) команд для разных случаев жизни.

Как пример, отправить письмо, сформировать отчет xml, загнать данные в таблицу, прочитать xls файл в DataTable
и т.д. и т.п. Создание новой команды занятие простое. Создаем новый класс, наследник одного из базовых, перекрываем пару методов, регистрируем в репозитории и всё, можно использовать. В итоге можно создавать сценарии, выполняющие что угодно.

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
AppLogic.ProcessManager pm = new AppLogic.ProcessManager(); // Синглетон
pm.Repository = new AppLogic.XmlRepository(@"..\Xml\Repository"); // Репозиторий, где хранятся описания всех команд
AppLogic.Command cmd = pm.CreateCommand("PrintExcelReport"); // Получения экземпляра команды через Reflection

// Инициализация параметров
cmd.Param("ConnectionString").Value = @"data source=WMS\TEST;user id=sa;Password=1111;initial catalog=DB";
cmd.Param("TemplateFileName").Value = @"..\ReportDocuments\ActDiffrence.xml";
cmd.Param("SQL").Value = "exec OR_ActDiff_Print '7732'";

// И собственно выполнение
cmd.Execute(null, "");




В данном случае командой является сценарий, который состоит из набора других команд и имеет такой же интерфейс как и любая другая команда.

// Описание сценария выглядит так

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?xml version="1.0" encoding="windows-1251" ?>
<PrintExcelReport Caption="Отчет Excel">
  <var name="ErrorMessage" />
  <var name="Connection" />
  <var name="ReportData" />
  <var name="ReportFileName" />
  <param name="ConnectionString" />
  <param name="TemplateFileName" />
  <param name="SQL" />
  <command name="TryCatch" caption="Обработка ошибок">
    <param name="ErrorMessage" output="">$ErrorMessage</param>
    <try>
      <command name="CreateSQLConnection" caption="Соединение с базой">
        <param name="ConnectionString">$ConnectionString</param>
        <param name="Connection" output="">$Connection</param>
      </command>
      <command name="SQLQueryXml" caption="Формирование данных">
        <param name="Connection">$Connection</param>
        <param name="SQL">$SQL</param>
        <param name="ParamDefs"></param>
        <param name="ParamValues"></param>
        <param name="XmlDocument">$ReportData</param>
      </command>
      <command name="ExcelReport" caption="Отчет Excel">
        <param name="ReportFileName">$ReportFileName</param>
        <param name="ReportCaption">Список погрузки</param>
        <param name="TemplateFileName">$TemplateFileName</param>
        <param name="ReportData">$ReportData</param>
      </command>
      <command name="OpenShell">
        <param name="Application">Excel.exe</param>
        <param name="Arguments">$ReportFileName</param>
      </command>
    </try>
    <catch>
      <command name="ShowMessage">
        <param name="Message">$ErrorMessage</param>
      </command>
    </catch>  
  </command>
</PrintExcelReport>




Теперь я эти команды могу собирать в совершенно любой конфигурации. И последовательно и иерархически и циклически.
И даже сделал такие команды как IF, TRY(CATCH), FOREACH, SWITCH.

Причем большинство (подавляющее) тех, кому я это показываю, не понимают что это и зачем.
Зачем выдумывать, если можно на форму бросить кнопку и в обработчике написать код.
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38087051
очевидно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old Nick,
это назвают сервисно-ориентированной архитектурой.
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38087071
_3833_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old Nick Разбирал я тут как-то чужой код , купленная складская система без исходников и без API, вся логика в формах.

как можно код разбирать если его нет?
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38089473
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
писать программу в хмл это на любителя
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38089500
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickПричем большинство (подавляющее) тех, кому я это показываю, не понимают что это и зачем.На любом нормальном языке программирования ваш код, оформленный в виде xml занял бы три-четыре строки и был бы на порядок читабельнее и понятнее. Вас проклянут те, кто вынужден будет сопровождать вашу поделку.
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38089572
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickВ чем проблема то? Я никак не пойму, чего программистам не хватает? Мозгов?
Не знают как разложить логику по разным слоям и разным кускам? Как развязать разные куски кода?Мозгов или опыта, а может просто инфантильность, работают как привыкли. Лидера нету, который поставит разработку.

Old NickВот я недавно наколбасил некую платформу для создания сценариев бизнес-логики.
...
Теперь я эти команды могу собирать в совершенно любой конфигурации. И последовательно и иерархически и циклически.
И даже сделал такие команды как IF, TRY(CATCH), FOREACH, SWITCH.А это, более традиционные способы, типа серверная логика в ХП, чем не подошли?
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38090589
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TC, а вы это к чему вообще? Пишете про мягкое, в пример приводите тёплое. Хотите похоливарить о низком уровне разработки? Или похвастаться скриптовым языком из XMLя?
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38090954
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey,

Я и сам проклял бы, да вот незадача, это задание руководства сделать так :-)
Как попросили, так и сделал
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091473
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickЯ и сам проклял бы, да вот незадача, это задание руководства сделать так :-)
Как попросили, так и сделалТогда тем более непонятен смысл вашего поста. Если вы сами считаете сделанное вами решение неудачным, вынужденной уступкой требованиям руководства, то неужели вы думаете, что решение найдет активную поддержку у сообщества?
Или вы ищете того, кто бы это покритиковал?
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091475
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey,

Вообще-то речь не о том, что программирование в xml, а о том, что можно код разбивать на самостоятельные куски, полностью независимые друг от друга. Такое редко увидишь даже в промышленных системах.
А у меня вместо программирования на xml можно превратить команды в компоненты и прямо в студии собирать сценарии, что гораздо удобнее в разработке. Эти возможности как раз и вытекают из того, что логика разбита на отдельные независимые кусочки.

То есть есть команды существуют сами по себе, и их можно собирать в целостную логику и с помощью xml и в виде компонент.

Люди, пишите грамотно
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091635
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyOld NickЯ и сам проклял бы, да вот незадача, это задание руководства сделать так :-)
Как попросили, так и сделалТогда тем более непонятен смысл вашего поста. Если вы сами считаете сделанное вами решение неудачным, вынужденной уступкой требованиям руководства, то неужели вы думаете, что решение найдет активную поддержку у сообщества?
Или вы ищете того, кто бы это покритиковал?Вот именно, непонятен посыл.

Old NickBogdanov Andrey,

Вообще-то речь не о том, что программирование в xml, а о том, что можно код разбивать на самостоятельные куски, полностью независимые друг от друга. Такое редко увидишь даже в промышленных системах.Безусловно, такое разделение намного хуже писания кода запросов напрямую в формах, это можно не сомневаться.
Old NickА у меня вместо программирования на xml можно превратить команды в компоненты и прямо в студии собирать сценарии, что гораздо удобнее в разработкеДык это ваша идея или всё таки руководства??? :-)
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091783
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick
Код: xml
1.
2.
  <command name="TryCatch" caption="Обработка ошибок">
      <command name="CreateSQLConnection" caption="Соединение с базой">


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


xml command name="TryCatch" - это сурово. Откройте для себя какой-нибудь скриптовый язык вроде Perl и наслаждайтесь алгоритмической чистотой и отсутствием кнопок и обработчиков.

А по поводу независимости кусков... То от языка это как-бы и не зависит. В одном крайнем случае, если эти Ваши "команды" работают с базой независимо друг от друга и ReadOnly (например, формируют отчеты) - то они будут логически независимы, даже если впихнуть их в один файл-модуль. А если они что-то пишут, друг на друга в чем-то надеются, и взаимно зависят - то даже в виде россыпи XML-файлов они будут представлять собой чудную логическую лапшу, не хуже BASIC-кода с кучей GOTO; и "компоновать" из них что-то - все равно что пазлы складывать: у каждого файла - свое единственное место, а иначе не заработает.
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091864
_1815_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickВообще-то речь не о том, что программирование в xml, а о том, что можно код разбивать на самостоятельные куски, полностью независимые друг от друга. Такое редко увидишь даже в промышленных системах.

интересно, а какие промышленные анализировали? С SAP надеюсь начинали?
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38091890
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisherони будут представлять собой чудную логическую лапшу, не хуже BASIC-кода с кучей GOTO;
Хуже. В смысле, лучше. В смысле лапшистее.

П.С. До сих пор мне казалось, что похожие внешне решения пишут мальчики лет двадцати на своей первой работе, после года работы по специальности и обретения желания "забабахать чё-то крутое".
...
Рейтинг: 0 / 0
Разбиение кода на не связные куски
    #38092070
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherА если они что-то пишут, друг на друга в чем-то надеются, и взаимно зависят - то даже в виде россыпи XML-файлов они будут представлять собой чудную логическую лапшу, не хуже BASIC-кода с кучей GOTO; и "компоновать" из них что-то - все равно что пазлы складывать: у каждого файла - свое единственное место, а иначе не заработает.
1. не зависят.
2. не надеются.
3. не одно единственное место, заработает.

поищите в интернет информацию о том, как выглядят SOA системы. Информации много, сможете более подробно узнать опровержения на все свои неправильные "домыслы". ТС действительно сделал какой-то вариант SOA, пусть и в таком виде.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Разбиение кода на не связные куски
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]