Имя: Пароль:
IT
Админ
Сколько паттернов проектирования вам довелось использовать на практике?
,
0 Caber
 
11.10.21
12:55
В т.ч. и в 1с (может смогли впихнуть невпихуемое).
И какие?
1 Злопчинский
 
11.10.21
12:56
один. как завещал вендор - ХХП!
2 ДенисЧ
 
11.10.21
12:57
"Работает - не трогай!"
3 PLUT
 
11.10.21
13:10
4 PLUT
 
11.10.21
13:13
ну и натягивание 1С на глобус

https://infostart.ru/1c/articles/1199427/
5 PLUT
 
11.10.21
13:15
"Пробуйте мыслить паттернами проектирования, тогда создание кода в 1С заиграет другими оттенками. Следующий раз рассмотрим варианты улучшения кода на примере конфигурации ERP в рамках рассмотренной ранее теории, по тем примерам, на которые обратили внимание мои коллеги"

не кисни, на радуге зависни (50 оттенков коричневого)
6 Caber
 
11.10.21
13:20
(1) Это экстремальное программирование?
7 PLUT
 
11.10.21
13:21
(6) что-то там про Продакшн

некогда думать, работу работать надо
8 Злопчинский
 
11.10.21
13:33
(6) если ты не знаешь основной принип паттерна программирования вендора - что ты тут ваще делаешь? ;-)
9 Злопчинский
 
11.10.21
13:34
10 PLUT
 
11.10.21
13:54
11 vde69
 
11.10.21
13:55
паттерн - это вообще что?

или Вы о шаблонах кода? Тогда я их использую очень часто, когда нажимаю CTRL+пробел
12 ДенисЧ
 
11.10.21
13:56
(11) паттерны проектирования - эта такая штука для чесания ЧСВ.
погугли "банда четырёх паттерны"
13 Caber
 
11.10.21
14:00
(9) :)
Сделаю самолайк, вы не против?
О паттернах никогда не слышал, но работая в 1с, старался делать процедуры и функции по правилу один объект - одна задача. Я чувствовал, что так код легче читать и поддерживать. В связи с этим частенько у меня была процедура, как правило, точка входа, в которой подряд шли вызовы процедур-обработчиков. А это уже паттерн "Фасад", о котором я вычитал недавно.
На этом мое использование паттернов в 1с и заканчивается.
14 Garykom
 
гуру
11.10.21
14:03
https://ru.wikipedia.org/wiki/Шаблон_проектирования

Класс Адаптер (Обертка) везде приходится

а в целом просто собрание типичных шаблонов
имхо вменяемый программист с опытом их по сути сам переизобретает когда надо
15 Куникулус
 
11.10.21
15:10
Паттерн: «гудит как улей — родной завод, а нам то кули — епись он в рот».
16 Документовед
 
11.10.21
15:19
Построил старшина роту, перед грудой кирпичей, обращается к солдатам:
— Рядовой Иванов.
— Я.
— О чем ты думаешь когда смотришь на эту груду кирпичей?
— Я думаю, что из нее можно построить дот для укрепления обороноспособности нашей Родины.
— Молодец.Рядовой Петров!
— Я.
— А ты о чем думаешь смотря на эту груду кирпичей?
— О том, чтобы построить детский сад где будут воспитываться будущие защитники Родины.
— Хвалю. Рядовой Сидоров
— Я.
— А ты очем думаешь когда смотришь на эту груду кирпичей?
— О бабах.
— Не понял. Почему о бабах?
— А я всегда о них думаю.

"— «Царь-масло».
— Это как это?
— Ну, есть царь-колокол, царь-пушка, а у нас будет царь-масло!
— «Царь-масло»? А ты о бабах думал? Как будут наши бабы в магазине спрашивать? Дайте пачку «царямасла»? Ты о бабах вообще когда-нибудь думаешь?"(С)


Самый мощный паттерн в 1С это думать о бабах.
17 Конструктор1С
 
11.10.21
19:53
(0) паттерны из мира ООП:
- малоприменимы в 1с (за редким исключением)
- чужды многим 1сникам впринципе.
Куда уж нам до паттернов и прочего, если каждый второй 1сник в одной процедуре может: прочитать файл, распарстить текст, несколько раз нырнуть в БД и настроить интерфейс
18 Злопчинский
 
11.10.21
19:56
обычно так:
- делаем хорошо, чтоб всем было приятно....
- мля.. бала мало ждают.. времени не хватает.. херачим MVP!!!
19 OldCondom
 
11.10.21
19:58
Не знаю, паттерн это или нет(на 90% думаю нет), но однажды где-то краем глаза увидел, что функция должна оперировать лишь теми данными, которые поступили в нее в качестве параметров. Понравилось.А то в 99% случаев мало того, что названа абы как, так еще и читает реквизиты объекта внутри и йуй ты ее используешь из вне.
20 Конструктор1С
 
11.10.21
19:59
(18) обычно ХХП. У многих 1сников интерфейс сросшийся с бизнес-логиков как улитка с ракушкой, какой там MVP
21 OldCondom
 
11.10.21
20:01
(18) чаще просто задача кусками поступает. А потом узнается, что нам такое же надо вон в том документе, а ты писал отстраненную от мира обработку.
22 Конструктор1С
 
11.10.21
20:01
(19) это не совсем про паттерны, это про сопряжение/связность
23 Гений 1С
 
гуру
11.10.21
20:14
Нисколько
24 Asmody
 
11.10.21
20:14
(19) это близко к тому, что называется "чистые функции". В императивных языках угребешься писать исключительно "чистыми функциями", но если в разумных пределах, то норм.
25 Asmody
 
11.10.21
20:17
Сейчас мой самый любимый
принцип или паттерн если угодно: "если процедура/функция не влезает в экран, это плохая процедура/функция". Тексты запросов не  считаются.
26 Asmody
 
11.10.21
20:18
Паттернов в 1С реально немного, зато антипаттернов сколько угодно! И типовые тут - главные застрельщики.
27 Злопчинский
 
11.10.21
21:05
(25) "Тексты запросов не  считаются."
а, ну конечно.. "это - другое!"
28 Asmody
 
11.10.21
21:11
(27) конечно другое! Запросы пишутся на принципиально другом языке.
29 acht
 
11.10.21
22:07
(0) > В т.ч. и в 1с
Тогда 41.
30 Asmody
 
11.10.21
22:53
(29) 42 же!
31 Caber
 
12.10.21
06:12
Да, с паттернами худо.
А юным подаванам, которые тут случайно оказались, советую почитать это - пригодится https://habr.com/ru/post/59005/
32 Маратыч
 
12.10.21
06:17
(25) Декомпозиция-с.
Многие кодыры, блин, даже в это не умеют.
33 Caber
 
12.10.21
06:26
Программирование копи-пастом (Copy and Paste Programming)
  «Брось, можно писать не только одну функцию!» или Спагетти-код (Spaghetti code)
✓ Золотой молоток (Golden hammer)
  «Что за 42?» или Магические числа (Magic numbers)
  «Что значит d:\proj\tests.dat?» или Жёсткое кодирование (Hard code)
✓ Мягкое кодирование (Soft code)
✓ Ненужная сложность (Accidental complexity)
✓ Лодочный якорь (Boat anchor)
✓ Изобретение велосипеда (Reinventing the wheel)
✓ Изобретение одноколёсного велосипеда (Reinventing the square wheel)
  «От твоего кода дурно пахнет» или Поток лавы (Lava flow)
  «А если i+1?» или Программирование перебором (Programming by permutation)
✓ «Как это вы передали строку вместо числа?!» или Слепая вера (Blind faith)
✓ Бездумное комментирование
✓ Божественный объект (God Object)

Почти все делаю как надо
34 Конструктор1С
 
12.10.21
08:17
(25) есть такое золотое правило:
ФУНКЦИЯ ДОЛЖНА ВЫПОЛНЯТЬ ТОЛЬКО ОДНУ ОПЕРАЦИЮ. ОНА ДОЛЖНА ВЫПОЛНЯТЬ ЕЕ ХОРОШО. И НИЧЕГО ДРУГОГО ОНА ДЕЛАТЬ НЕ ДОЛЖНА

длинная функция это как побочный признак того, что в ней мёд, говно и пчёлы
35 Гений 1С
 
гуру
12.10.21
08:31
(24) в этом плане можно собирать все нужные функции параметры в контекст. Это паттерн? Использовал.
еще есть такой трюк, когда сохраняешь значение в параметр сеанса и оно доступно для функций ниже по стеку - если там забыли включить нужное управление.
36 BaZZiL
 
12.10.21
09:04
Паттернов в 1С нет ни одного, потому что в 1С нет ООП)) Шаблоны кода присутствуют.
37 ДенисЧ
 
12.10.21
09:05
(36) Ты тоже из того заповедника, где считают, что паттерны только для ООП?
Или из того, где считают, что в 1с не ОП?
38 dmpl
 
12.10.21
09:06
(2) У франчей используются:
"А куда они денутся с подводной лодки?"
"Война план покажет"
Тяп-ляп - и в продакшн.
39 Asmody
 
12.10.21
09:07
(35) Контекст – это хорошо, но плохо. Потому что он стремится превратиться в "божественный объект".
40 Ботаник Гарден Меран
 
12.10.21
09:07
(35)
"все нужные функции параметры в контекст."
Это плохая практика проектирования, но прижилась с появлением IDE с подсказками.
41 BaZZiL
 
12.10.21
09:09
(37) Продолжай наблюдение.
42 dmpl
 
12.10.21
09:13
(25) Если процедура или функция не влезает на экран - значит надо купить 8К монитор :)
43 ДенисЧ
 
12.10.21
09:14
Если все процедуры по одной влезают на экран, то с экрана начинает свисать спагетти...
44 dmpl
 
12.10.21
09:15
(34) "Сделать всё хорошо" - это же одна операция :)
45 rsv
 
12.10.21
09:16
(0) там он один. Табличка - форма - табличка.
46 rsv
 
12.10.21
09:17
Чем короче расстояние  между формой и табличкой тем быстрей.
47 Конструктор1С
 
12.10.21
10:00
(44) это одна задача, а действий внутрях будет много
48 dmpl
 
12.10.21
10:23
(47) Предлагаешь сделать ФункцияПлюс(), ФункцияМинус(), ФункцияУмножить(), ФункцияРазделить()?
49 acht
 
12.10.21
10:46
(48) Для длинной или комплексной арифметики, например, так и делается.
50 Конструктор1С
 
12.10.21
11:06
(48) нет, не предлагаю. Принцип про другое
51 dmpl
 
12.10.21
11:46
(50) Ну значит функция делает не одно действие, а одну задачу.
52 ADirks
 
12.10.21
12:18
(28) SQL-запросы совершенно спокойно делятся на логические блоки. Просто 1с-ники не умеют писать запросы, а умеют лепить их в конструкторе. А конструктор - он такой, на Прокруста похож.
53 pechkin
 
12.10.21
12:20
(52) сборные скл запросы? да вы батенька ...
54 ADirks
 
12.10.21
12:31
(53) А что в этом странного? Обычный системный подход. И на том же принципе, что и в процедурных языках.
55 Гений 1С
 
гуру
12.10.21
12:34
(53) а че такого? Неоднократно программно собирал, особенно в расширениях, когда в форму списка номенкалутуры нужно добавлять свои колонки
56 dmpl
 
12.10.21
12:37
(54) Так можно дойти до использования построителя запросов...
57 Конструктор1С
 
12.10.21
12:40
(51) задача куда более крупное понятие
58 ADirks
 
12.10.21
12:42
(54) ну да, я таки пользуюсь неким построителем, как запросов, так и отчетов
59 pechkin
 
12.10.21
12:44
(54) писать то можно, а вот читать не особо приятно
60 dmpl
 
12.10.21
13:00
(57) В таком случае функция должна делать несколько действий.
61 ADirks
 
12.10.21
13:06
(59) напротив. всё это делается как раз для того, чтобы читать потом было удобнее

например:
когда я вижу кусок запроса
    |FROM
    |    (
    |    "+оЗапрос.Отступ(тзп_Счета(оЗапрос), 2)+"
    |    UNION ALL
    |    "+оЗапрос.Отступ(тзп_Поступления(оЗапрос), 2)+"
    |    ) Документы
мне не важно, что там детально внутре этих функций, но я чётко понимаю, что это счета и поступления, а не что-то непонятное, на 2 тысячи строк
62 Конструктор1С
 
12.10.21
13:09
(60) кому должна и почему должна?
63 dmpl
 
12.10.21
13:52
(62) Это банальная логика: если не одно действие, значит их или ноль, или несколько. Ноль действий смысла не имеет, остается несколько действий.
64 Конструктор1С
 
12.10.21
14:02
(63) запутал ты меня
65 dmpl
 
12.10.21
14:08
(64) Я намекаю: как отличить операцию от задачи? Нужен формальный признак без оценочных критериев. Особенно с учетом того, что в процессе разработки алгоритма задача разбивается на операции, после чего каждая из этих операций становится отдельной задачай - и так до некоторой глубины. Так вот - когда достаточно?
66 Конструктор1С
 
12.10.21
14:19
(65) задача: загрузить приходные накладные из файлов xls
действия:
- найти файлы на диске
- утащить файлы в 1с
- прочитать содержимое файла
- определить ссылки по содержимому файла
- ну и так далее

формальный признак есть. Мысленно как бы пытаешься проговорить всё что делает функция. "Найти файлы на диске И утащить файлы в 1с И прочитать содержимое файлов..." Во каждое "И" в твоём повествовании будет указывать на отдельное действие. Ремарка: вызываемые методы проговаривать не надо
67 Caber
 
12.10.21
14:19
(61) Весьма спорное утверждение. Вначале тоже старался делать тексты запросов модульными, помимо конкатенации так же активно использовал менеджер временных таблиц, выполнение всех запросов не сразу, а по кускам и так далее. При работе со сложными отчетами это все вылезло боком и в конце концов все это было заменено на громадные тексты запросов, которые открываются в конструкторе - оказалось так удобнее.
68 dmpl
 
12.10.21
14:21
(66) Т.е. всего 1 уровень? Тогда "определить ссылки по содержимому файла" вполне может расползтись в 100500 строк.
69 Конструктор1С
 
12.10.21
14:26
(68) условно представим, что в файле только товары и единицы измерений. Но если дофига разных ссылок, то уходим в декомпозицию
70 dmpl
 
12.10.21
14:31
(69) Так ведь весь вопрос, на каком уровне остановиться. С этой точки зрения утверждение про функции не больше 1 экрана - достаточно формальный признак, хоть и зависит от разрешения экрана и размера шрифта. А вот одна операция - не очень формальный.
71 Конструктор1С
 
12.10.21
14:44
(70) ну вот если от твоей функции нечего отщипнуть в подфункцию (рефакторинг - выделить фрагмент), то можно останавливаться. Без фанатизма, конечно. В большинстве случаев "однодейственные" методы будут меньше экраза. Код мелкими методами не испортить, прям как ту кашу маслом
72 dmpl
 
12.10.21
15:09
(71) В том-то и дело, что "нечего отщипнуть" у всех разное будет. Особенно если программист не привык думать структурно, и у него связанный код разбросан по нескольким страницам.
73 Конструктор1С
 
12.10.21
15:31
(72) предлагаешь под говнокодеров и их привычки подстраиваться?
74 dmpl
 
12.10.21
15:44
(73) Указываю на низкую степень формализма критерия. С их точки зрения функция на 100500 строк делает одну операцию :)
75 Конструктор1С
 
12.10.21
16:41
(74) нет. Попробуй взять большую функцию и сделать как в (66)
76 dmpl
 
13.10.21
07:28
(75) Так пробовать должен копрокодер ;)
77 bolder
 
13.10.21
08:43
(67) Молодец.Я тоже к этому пришёл в результате. Запрос на 25 страниц отлично открывается и редактируется.
78 Злопчинский
 
13.10.21
08:53
Когда буду побираться - стану с плакатом "подайте на паттерн"...