Вход | Регистрация
 
Информационные технологии :: Администрирование

Сколько паттернов проектирования вам довелось использовать на практике?

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

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

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

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

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

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

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

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


Самый мощный паттерн в 1С это думать о бабах.
   Конструктор1С
 
17 - 11.10.21 - 19:53
(0) паттерны из мира ООП:
- малоприменимы в 1с (за редким исключением)
- чужды многим 1сникам впринципе.
Куда уж нам до паттернов и прочего, если каждый второй 1сник в одной процедуре может: прочитать файл, распарстить текст, несколько раз нырнуть в БД и настроить интерфейс
   Злопчинский
 
18 - 11.10.21 - 19:56
обычно так:
- делаем хорошо, чтоб всем было приятно....
- мля.. бала мало ждают.. времени не хватает.. херачим MVP!!!
   OldCondom
 
19 - 11.10.21 - 19:58
Не знаю, паттерн это или нет(на 90% думаю нет), но однажды где-то краем глаза увидел, что функция должна оперировать лишь теми данными, которые поступили в нее в качестве параметров. Понравилось.А то в 99% случаев мало того, что названа абы как, так еще и читает реквизиты объекта внутри и йуй ты ее используешь из вне.
   Конструктор1С
 
20 - 11.10.21 - 19:59
(18) обычно ХХП. У многих 1сников интерфейс сросшийся с бизнес-логиков как улитка с ракушкой, какой там MVP
   OldCondom
 
21 - 11.10.21 - 20:01
(18) чаще просто задача кусками поступает. А потом узнается, что нам такое же надо вон в том документе, а ты писал отстраненную от мира обработку.
   Конструктор1С
 
22 - 11.10.21 - 20:01
(19) это не совсем про паттерны, это про сопряжение/связность
   Гений 1С
 
23 - 11.10.21 - 20:14
Нисколько
   Asmody
 
24 - 11.10.21 - 20:14
(19) это близко к тому, что называется "чистые функции". В императивных языках угребешься писать исключительно "чистыми функциями", но если в разумных пределах, то норм.
   Asmody
 
25 - 11.10.21 - 20:17
Сейчас мой самый любимый
принцип или паттерн если угодно: "если процедура/функция не влезает в экран, это плохая процедура/функция". Тексты запросов не  считаются.
   Asmody
 
26 - 11.10.21 - 20:18
Паттернов в 1С реально немного, зато антипаттернов сколько угодно! И типовые тут - главные застрельщики.
   Злопчинский
 
27 - 11.10.21 - 21:05
(25) "Тексты запросов не  считаются."
а, ну конечно.. "это - другое!"
   Asmody
 
28 - 11.10.21 - 21:11
(27) конечно другое! Запросы пишутся на принципиально другом языке.
   acht
 
29 - 11.10.21 - 22:07
(0) > В т.ч. и в 1с
Тогда 41.
   Asmody
 
30 - 11.10.21 - 22:53
(29) 42 же!
 
 
   Caber
 
31 - 12.10.21 - 06:12
Да, с паттернами худо.
А юным подаванам, которые тут случайно оказались, советую почитать это - пригодится https://habr.com/ru/post/59005/
   Маратыч
 
32 - 12.10.21 - 06:17
(25) Декомпозиция-с.
Многие кодыры, блин, даже в это не умеют.
   Caber
 
33 - 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)

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

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

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

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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.