Имя: Пароль:
1C
 
1С и DRY
,
0 Sysanin_1ц
 
11.09.19
20:05
1. Другое 56% (5)
2. 1C уже давно использует DRY, просто мы не замечаем 33% (3)
3. 1С не знает и не хочет знать ничего о принципе DRY 11% (1)
4. 1C не знает, но хотело бы знать что нибудь о DRY 0% (0)
5. 1C знает, но не хочет применять принцип DRY 0% (0)
6. 1C знает и будет применять принцип DRY 0% (0)
Всего мнений: 9

Коллеги, вы наверняка знаете что в классических языках программирования существует принцип DRY - don't repeat yourself (не повторяйся). Прежде все речь идет о способах лаконичного написания кода без дублирования участков кода. DRY тесно связан с ООП.
Как известно в 1с точно нет ООП и скорей всего отсутствует DRY. То что мы сейчас видим в типовых это бесконечная лапша из кода. Причем повторяются не только отдельные конструкции, но и целые блоки. В результате общие по смыслу участки кода могут появляться как в модулях документа, в общих модулях, в модулях обработки и так далее. Из за этого разбор кода типовых превращается в сущий адский ад. У меня вопрос. Хорошо, 1с не хочет давать нам ООП, но они также не знают о существовании принципа DRY ? И не пора бы им узнать и начать его использовать? Что помогает вам в разборе типового кода 1с ?
32 ДенисЧ
 
12.09.19
04:12
ООП не нужно, а типовые пишут студенты, которые очень плохо знакомы с теорией программирования. Смотреть на типовые, как на образец-как-надо - могут только такие же студенты.
33 Конструктор1С
 
12.09.19
05:07
(0) а ты сам-то в "каноничные ООПшные" системы заглядывал? Вот взять какой-нибудь ентерпрайз на over 10 миллионов строк кода, через который прошла не одна сотня программистов, среди которых были и индусы, и говнокодеры, и детишки клерков, получающие первый опыт программирования... Ну и как ты там будешь проверять дублирование кода?  Там целые подсистемы могут дублироваться, не то что строки кода или методы

Другое
34 rphosts
 
12.09.19
07:49
(0) тебе нужно DRY? Ну покури БСП - там этого DRY выше крыши!
35 Лефмихалыч
 
12.09.19
08:01
(25) и дальше что? Это аргумент в пользу чего?
36 Emery
 
12.09.19
08:01
(16) > Открытие формы счета на оплату в УТ11 вызывает всего 35 общих модулей. При этом количество вызовов к этим модулям 737 !!!! При открытии формы счета !!

Так ведь уже была версия, что код типовых это просто легальная обфускация (с помощью средств внешнего программирования) со стороны фирмы «1С». Которая явно направлена на ограничение открытости платформы. К чему это приведет? К тому, что народ будет искать альтернативы новым версиям 1С

Тут, кстати, можно поставить задачу математикам по нормализации дерева кода в типовых конфигурациях, другими словами, речь идет о минимизации зависимостей. Соответственно нужно изобретать подходящие внешние инструменты для этого, то бишь, программы.

Киньте клич математикам, на предприятиях. В крутых фирмах они наверняка есть.
37 andrewalexk
 
12.09.19
08:05
(25) :) напрямую да но бизнесу так же нужно все и вчера так что косвенно нет

Другое
38 vis_tmp
 
12.09.19
08:20
(19) Вот такая клиент-серверность?
39 APXi
 
12.09.19
08:37
(26) Пример приведите как бы реализовали чтото в 1с с использованием наследования
40 rphosts
 
12.09.19
08:41
(36) эээ, а зачем?
41 Bro2
 
12.09.19
08:41
(26) Вы вообще понимаете, что современный 1С это по сути pure-SQL, ORM'а в нем кот наплакал. А учитывая что в самом SQL наследования и полиморфизма по сути нет (в MS SQL вообще, в PostgreSQL одна видимость, а в Oracle есть в виде какого-то мутанта из ООП и SQL), чего вы собственно от 1С хотите то?
42 ПростоГен
 
12.09.19
08:43
(41) Ну, братец, расскажи-ка нам, неучам, как серьёзные пасаны работают.
43 Bro2
 
12.09.19
08:45
(42) Так я наоборот защищаю 1С.
44 rphosts
 
модератор
12.09.19
08:46
(41) ты не путай гостевой раздел и форум. За оффтоп можно уйти надолго!
45 rphosts
 
12.09.19
08:47
(42) он тупо не знает что такое 1С. И про юзабилити понятия тоже не имеет.
46 Cyberhawk
 
12.09.19
08:47
(20) В трех словах чем там дело с этими ветками закончилось и почему превратилось в мем? )
47 Cyberhawk
 
12.09.19
08:47
+(46) А то пздц много читать, очень влом
48 ПростоГен
 
12.09.19
08:48
(46) В двух словах - пришел лесник Ежов и вломил всем :))
49 ПростоГен
 
12.09.19
08:49
(43) Ты статью-то "Почему не 1С" когда допишешь? Ждем-с...
50 Bro2
 
12.09.19
08:52
(49) Тут rphosts уже предупредил про оффтоп.

(Шепотом) в процессе: хотел поуточнять пару вопросов, но тут sqr4 какой-то нервный, так что лучше не буду. Единственное хотел предварительно перед публикаций кому-нибудь лично скинуть на прочтение, может где-то косяки будут очевидные (поделитесь почтой, вам в личку скину к примеру, нужен кто-то изначально скептически настроенный).
51 piter3
 
12.09.19
08:54
(41) Заказчику поровну внутрянка,это не понятно до сих пор?
52 ПростоГен
 
12.09.19
08:55
(50) Статья, кстати, будет вполне по теме, там можно и про драй, и про солид, и про другие извращения понаписать. А рецензировать статью - увольте, так никакого веселья для меня не получится :))
53 Bro2
 
12.09.19
08:56
(51) на меня чего накинулись? Я на конкретный комент автора отвечал. Нельзя сделать наследование не поддержав его на уровне запросов, а его даже SQL не поддержал.

>>Заказчику поровну внутрянка,это не понятно до сих пор?
Ну так закройте тему на этом. Зачем вообще автору отвечать.
54 Emery
 
12.09.19
08:56
(40) > эээ, а зачем?

Речь идет о деобфускации типового кода. А с каким кодом легче работать? С запутанным (фирмой «1С») или «нормальным»? Думаю, ответ очевиден. Альтернатива – писать собственные конфигурации, но это очень дорогостоящее удовольствие.
55 ПростоГен
 
12.09.19
08:56
(51) Заказчики разные бывают, но большинству да, пофигу.
56 ПростоГен
 
12.09.19
08:57
(53) Так репутацию ты такую заработал, вот и получаешь по заслугам :))
57 palsergeich
 
12.09.19
09:02
(53) Он в своей теме про oddo был куда как корректнее
58 Hillsnake
 
12.09.19
09:45
(32) Куда смотреть ?
59 ПростоГен
 
12.09.19
09:53
(58) Внутрь себя :)))
60 Вафель
 
12.09.19
10:07
как отсутствие ООП мешает зать DRY (то бишь выделения общего кода в процудуры-методы) ?
61 Hillsnake
 
12.09.19
10:13
(59) я не хирург экспериментатор.

(60) вообщем да.
62 unenu
 
12.09.19
10:25
Когда архитектором типовых был Сусанин, то повторений кода было много, что логично - бродить по болоту кругами можно долго
Когда архитекторами стали ставить дедов Мазаев, то повторения стали выпиливать, что логично - плавать по болоту и собирать зайцев в одну лодку очень хорошо.

тс просто отстал от жизни или сидит на УПП 1.1

1C уже давно использует DRY, просто мы не замечаем
63 Oftan_Idy
 
12.09.19
10:28
(29) "Наследование - это худшее, что есть в ООП"

Ахренеть какое откровение.
С чего это вдруг худшее? С чего это вдруг это "плохо" ?
Это самая важная часть ООП, без которой оно по сути бессмысленно.
- инкапсуляция
- наследование
- полиморфизм

Три столпа ООП и они прекрасны.

В 1С с натяжкой есть только инкапсуляция.
но нет ни наследования, ни виртуальных классов, ни указателей, ни перегрузок, ни делегатов, ни .... дохрена чего нет.
Сокетов блин нет! Нет настоящей параллельности.
64 Eiffil123
 
12.09.19
10:34
(63) это раньше было три. Сейчас обычно говорят про 4, добавляя еще абстракцию.
65 ПростоГен
 
12.09.19
10:36
Вот простая статья про ООП и т.п., даже назвал бы её ООП для 1С-ников :)) https://habr.com/ru/post/446816/
66 Oftan_Idy
 
12.09.19
10:36
(64) Нет смысла выделять абстракцию куда-то отдельно.
Она уже содержится в наследовании и полиморфизме, без них сам по себе абстрактный класс или интерфейс просто бессмысленен
67 Лефмихалыч
 
12.09.19
10:39
+(66) скорее даже абстракция встроена в сущность любого программисрования. Программирование само по себе - это абстракция и моделирование. Любое программирование, даже на asm'е
68 ДенисЧ
 
12.09.19
10:40
Вот другое мнение об ООП (tl;dr)

http://rsdn.org/forum/philosophy/7539267.1
69 ДенисЧ
 
12.09.19
10:40
(63) Без наследования прекрасно можно жить даже в ооп.
70 MyNick
 
12.09.19
10:45
А что в современных конфигах много повторяющегося кода? Я просто не в курсе.
71 Hillsnake
 
12.09.19
10:45
(69) черт с ним с ООП, ты не ответил, куда смотреть ??
72 Hillsnake
 
12.09.19
10:45
(70) я бы так не сказал.
73 ПростоГен
 
12.09.19
10:46
(68) Когда программисту делать нечего  - он парадигмы ООП вылизывает :))
74 palsergeich
 
12.09.19
10:46
(70) От вендора - почти нет, платой за это идут лютые конструкции.
75 Провинциальный 1сник
 
12.09.19
10:46
Давно пора сделать иерархическое наследование методов общих модулей. Чтобы не было этого заката солнца вручную через ОбщийМодульРасчетНДФЛПереопределяемый и тому подобное. Когда спагетти-код вместо простой и понятной иерархии.
Кстати, расширения - это очень похоже на наследование методов.

Другое
76 Bro2
 
12.09.19
10:48
(69) А как вы полиморфизм обеспечивать собрались без наследования (напоминаю что в ООП в основном имеется ввиду именно subtype полиморфизм)? То есть от ООП только инкапсуляция останется?
77 palsergeich
 
12.09.19
10:48
(75) Нинада наследование.
Расширение тоже плохой пример.
Я видел конфу с 15 расширениями, работать в таком тот ещё ад.
78 ПростоГен
 
12.09.19
10:49
(75) Какое нафик наследование, когда при изменении базового класса расширение падает к хренам собачьим :))
79 Провинциальный 1сник
 
12.09.19
10:56
(77) Проблема тут скорее в юзабельности интерфейса конфигуратора, что не видно четко иерархию применимости расширений к конкретным объектам метаданных. Именно это и вызывает сложности при множественном расширении.
80 palsergeich
 
12.09.19
10:58
(79) Проблема в том, что для того что Вы все тут хотите нужен 1С 9, не меньше, текущая архитектура слабо приспособлена для этих хотелок и каждый костыль делает ее ещё более хрупкой.
81 Вафель
 
12.09.19
10:59
(79) конфигуратор уже прошлый век
82 Провинциальный 1сник
 
12.09.19
11:00
(81) Вот только про ЕДТ не надо тут. Глючное тормозилово.
83 ManyakRus
 
12.09.19
11:02
код из типового 1С не надо использовать и всё :)
и из БСП не надо ничего использовать.
Я делаю свой личный модуль "МодульСервер" и использую только его,
в том числе только оттуда вызываю функции из типовых модулей

1С не знает и не хочет знать ничего о принципе DRY
84 Eiffil123
 
12.09.19
11:06
(3) Например, наследование нельзя сделать программно. Есть только как-бы двухуровневое наследование на уровне дерева метаданных.
Из-за этого имеем почти в каждом документе имеем одинаковые куски кода из процедур а-ля "ПодготовитьТаблицуДвижений". Так был бы на уровне конфигурации базовый класс, который вызывал бы эти процедуры и их не приходилось бы писать в каждом документе.
85 Eiffil123
 
12.09.19
11:08
(66) абстрактный класс и абстракция - разные вещи. Под абстракцией понимают выделение только нужных свойств и методов в классе (а не всех возможных). Например, у человека может быть миллионы разных параметров (вплоть до ДНК). Но для кадрового учета например важны и нужны порядка 10 из них.
86 palsergeich
 
12.09.19
11:08
(84) Ну будет у тебя не в одном месте, а спагетти в другом.
Посмотри тот же МодификацияКонфигурацииПереопределяемый.присозданиинасервере.
В чем преимущество то?
87 palsergeich
 
12.09.19
11:12
(86) или какую нибудь подписку с типом ДокументОбъект
Пока я вижу какое то абстрактные слова что будет проще, но на деле - захожу в менеджер 2 минуты и мне все ясно.
Захожу в подписку общую и пол часа курю код.
88 rphosts
 
12.09.19
11:24
(54)мне нет дела до БСП, пока оно работает норм.
89 Eiffil123
 
12.09.19
11:29
(87) когда люди программировали на q-basic или pascal, им тоже вобщем-то было всё ясно )
90 Eiffil123
 
12.09.19
11:31
(87) смысл базовых классов в том, что тебе не нужно вообще туда заходить. код базового класса должен работать качественно.
91 palsergeich
 
12.09.19
11:37
(90) а реалии в том, что ничто не вечно, хочешь ты или нет но рано или поздно - прийдется.
Изменения базового класса - золотые.
92 Eiffil123
 
12.09.19
13:10
Вроде даже в SAP ABAP сделали ОПП со всякими наследованиями и полиморфизмами.
93 Xapac
 
12.09.19
13:18
(0)Как ваш драй работает с модульным ПО?
есть Модуль работы с сетью
есть Модуль работы с графикой
есть модуль работы с.... бд

и эти модули допустим пишутся разными командами...
94 3achem
 
12.09.19
14:09
(0) Кто решил что ООП это хорошо или правильно? Плюсы по сравнению с функциональной парадигмой?
95 Eiffil123
 
12.09.19
14:30
(94) где в 1С функциональная парадигма?
96 3achem
 
12.09.19
14:37
(95) Вы ответьте на мой вопрос, чем ООП лучше функциональщины? А я вам расскажу, что такое DSL и зачем он нужен
97 Sysanin_1ц
 
12.09.19
15:36
(96) ООП лучше процедурного языке тем что код более структурирован и более лаконичен. Легче запомнить объект с его методами чем лапшу из процедур и функций
98 ASU_Diamond
 
12.09.19
15:40
(97) чем легче?
99 Лефмихалыч
 
12.09.19
15:41
(97) плохой код можно написать в любом стиле. Прелесть ООП в том, напимер, что ты имеешь возможность добавлять к уже имеющемуся коду новые фичи, не изменяя никоим образом ранее написанный и протестированный код.
100 Лефмихалыч
 
12.09.19
15:41
+(99) это то, чего вообще никак в процедурном коде не достичь. ну - без дублирования кода не достичь.
101 VladZ
 
12.09.19
15:42
(97) "Легче запомнить объект с его методами чем лапшу из процедур и функций" - зачем нужно запоминать?
102 vcv
 
12.09.19
18:56
(97) >> Легче запомнить объект с его методами чем лапшу из процедур и функций
С точки зрения "запоминания процедур и функций" отличается объект с экспортными процедурами/функциями от глобального модуля с экспортными процедурами и функциями?
103 vcv
 
12.09.19
19:02
(99) >> Прелесть ООП в том, напимер, что ты имеешь возможность
>> добавлять к уже имеющемуся коду новые фичи, не изменяя
>> никоим образом ранее написанный и протестированный код
Вы хотите сказать, что добавление процедуры в модуль каким-то образом портит соседнюю протестированную процедуру?
При любой парадигме, если вам нужно добавить сбоку новую фичу, это делается довольно просто и с малым влиянием на старый протестированный код. А если вам надо внести изменения в поведение имеющегося кода, то при любой парадигме у вас велика вероятность проблем.
104 NorthWind
 
12.09.19
19:06
(99) Это в теории или при ну очень хорошем проектировании. В реальности достаточно часто возникает ситуация, когда не удается написать нормального потомка без изменения предка - просто потому что для чего-то область видимости неудачно выбрали, где-то в иерархии звено пропустили и красиво унаследоваться теперь не выходит и т.д.
105 Eiffil123
 
12.09.19
20:09
(96) с функциональными языками не работал, поэтому сравнивать не могу. на мой взгляд, это вообще языки для разных областей, их не корректно сравнивать. Функциональный больше для математики, на мой взгляд.
106 Sysanin_1ц
 
12.09.19
20:30
(102) Объект отличается от процедуры/функции тем что может хранить данные в базе данных, иметь атрибуты.
Объектом можно оперировать, изменять его состояние, а функцией нет
107 vcv
 
12.09.19
21:18
(106) Во первых, в (97) вы сказали, что "Легче запомнить объект с его методами чем лапшу из процедур и функций". Про данные речи не шло.
Во вторых, является ли хранение данных внутри объекта достоинством или недостатком ещё надо аргументировать. Например, в функциональном программировании "данные внутри объекта" хранить вообще не принято. И ничего, никто не говорит, что это плохо.
108 vcv
 
12.09.19
21:23
(104) Проектирование системы классов в ООП само по себе неординарная задача в более-менее больших и сложных проектах. А ошибки в проектировании стоят очень недёшево.
109 Конструктор1С
 
13.09.19
04:54
(97) зачем запоминать-то? Ну и это

ООП
Объект.Хуяк1();
Объект.Хуяк2();
Объект.Хуяк3();

Функциональное программирование
Хуяк1(Объект);
Хуяк2(Объект);
Хуяк3(Объект);

Уж чего-чего, а методы с привякой к объектам сомнительное превосходство ООП над функциональным программированием
110 ILM
 
гуру
13.09.19
05:10
Стиль 1С называется FTA (F**k Them ALL) И мне это нравится)))
111 Asmody
 
13.09.19
07:26
(110) по-русски это называется "ЁБА!" и не расшифровывается
112 Asmody
 
13.09.19
07:36
(109) на ФП будет как-то так:
Результат <- Данные =>
   Хуяк1 =>
   Хуяк2 =>
   Хуяк3 =>
   в_продакшен

Хотя, в_продакшен, скорее всего,  будет нечистой, её из цепочки вынести бы.
113 3achem
 
13.09.19
07:54
114 Max411
 
13.09.19
09:03
(113) К чему отсылка к сравнению процедурной и функциональной парадигм программирования?  Sysanin_1ц, по моему, и не утверждал, что в 1С используется функциональное программирование.

Сами "гуру" от 1С вообще утверждают, что основная задумка в 1С - это ПОП (Парадигма предметно-ориентированного программирования).
http://1c.ru/rus/partners/training/edu/theses/?y=2008&s=7&t=115

Хоть я и не "натуралист-биолог" - в мире множества парадигм программирования особо не разбираюсь. Но сдается мне, что в 1С всё же больше от процедурного программирования, чем от ООП.
115 Hillsnake
 
13.09.19
09:05
(112) Это питон какой-то.
116 ДенисЧ
 
13.09.19
09:08
(115) А почему не ес6?
117 ДенисЧ
 
13.09.19
09:08
(114) "основная задумка в 1С - это ПОП"
Это многое объясняет. Особенно структуру типовых.
118 Max411
 
13.09.19
09:12
Вообщем, как-бы мы не спорили, что лучше было из этих парадигм положить в основу "языка" 1С. "Они" перелопачивать движок 1С уж точно не станут на основе наших хотелок. В прошлом уже фирма 1С показала свое отношение к народному проекту 1С++. В 1с8 мало что из предложенного было реализовано (.
119 3achem
 
13.09.19
10:23
(114) Вы сначала вопрос мой прочитайте, который я задал Sysanin_1ц, а потом уже участвуйте в дискуссии
120 Max411
 
13.09.19
11:02
(119) Тогда сорян :), вопрос мой снимается (прочитал ветку с конца).
Всю ветку дискуссии в обратную сторону уже без бутылки не разберешь ...
121 SUA
 
13.09.19
11:24
Забавная тема когда есть БСП

Другое
122 mikecool
 
13.09.19
12:10
(0) стараюсь писать в dry-стиле, и типа процедуры-функции не более страницы на экране
123 Конструктор1С
 
13.09.19
13:50
На самом деле в программировании есть более важные принципы, чем DRY. Основные из них это принцип сопряжения и принцип связности. Когда кладут на эти принципы, код становится тяжелее сопровождаемым и хуже воспринимаемым, т.е. несоблюдение этих принципов стоит $$$
124 ДенисЧ
 
13.09.19
13:56
(123) Самый главный - это KISS
125 palsergeich
 
13.09.19
14:05
(122) Стек же отращивается.
Несколько функций - api, а вот сама реализация - максимально в линейном стиле, не важно какой длины, как правило если хорошо заархитектурил кода будет мало.
И естественно против механизмов сделать все.
Каждый вздох - отдельный механизм.
Вполне себе читабельно и изменяемо
126 olegves
 
13.09.19
14:21
(0) когда ты в совей чистой ж ООПке прицепил 2 библиотеки, которые используешь на 0.05%, да еще и на 50% дублирую друг друга, ты хочешь сказать, что у тебя DRY?
Ты заблуждаешьтся - нет предела совершенству
-----------------
Процедуры и ф-ии в ОМ - это тебе пример DRY

1C уже давно использует DRY, просто мы не замечаем
127 Hillsnake
 
13.09.19
14:35
(124) переведи .
128 ДенисЧ
 
13.09.19
14:36
129 palsergeich
 
13.09.19
19:49
(128) ах вот как мой любимый принцип называется)
130 Лефмихалыч
 
13.09.19
22:50
(124) только ситхи всё возводят в абсолют. (С)
Нет никакого главного принципа. Принципов до жопы, ими надо уметь правильно жонглировать и держать баланс
131 Конструктор1С
 
14.09.19
05:32
(124) этот принцип относится не столько к программированию, сколько к проектированию