|
Сколько паттернов проектирования вам довелось использовать на практике? | ☑ | ||
---|---|---|---|---|
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
|
||||
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
|
+(9) еще паттерны вендора
https://pbs.twimg.com/media/BXxCju1IAAAjW3H.jpg:large и https://cdn1.ozone.ru/s3/multimedia-u/6014316330.jpg |
|||
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
|
Когда буду побираться - стану с плакатом "подайте на паттерн"...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |