|   |   | 
| 
 | Сколько паттернов проектирования вам довелось использовать на практике? | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Когда буду побираться - стану с плакатом "подайте на паттерн"...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |