|
"Не" как антипаттерн програмирования | ☑ | ||
---|---|---|---|---|
0
Почему 1С
21.07.21
✎
09:05
|
Читаю код и постоянно спотыкаюсь на конструкциях типа (пропускаю эту НЕ)
Если НЕ СтруктураТаблицДокумента.ТаблицаУслуги = Неопределено тогда Не читается этот код для меня, так писал код уважаемый бывший сотрудник программист 1с (но не уважаемый мной ) в конторе где я сейчас работаю, мало того что сам писал он еще и всех других приучил к такому. Мне они заявляют типа лучше писать через "НЕ" условия <>, на вопрос почему следует ответ так писал наш Ф.И.О. Наболело, это мой загон или действительно можно считать антипаттерном. Ситуации (не ЗначениеЗаполнено() не ... is null к этому не относятся в них с чтением кода проблем у меня нет) |
|||
58
mikecool
21.07.21
✎
12:36
|
+56 а то вдруг проблемы с чтением кода возникнут у кого то ))
|
|||
59
Почему 1С
21.07.21
✎
12:40
|
(55) Такое же мнение
(56) Зачем передергивать, проблема лишь в конструкциях что я привел в (0), где НЕ визуально теряется в тексте, отдалено от непосредственной операции сравнения |
|||
60
mikecool
21.07.21
✎
12:42
|
(59) просто у меня нет такой проблемы, и я читаю такой код слева направо...
|
|||
61
Почему 1С
21.07.21
✎
12:47
|
(60) Понятно, видимо вам чужды эффекты с обманом зрения...
|
|||
62
mikecool
21.07.21
✎
12:54
|
(61) даже не знаю о таком
|
|||
63
fisher
21.07.21
✎
13:08
|
(62) Про оптические иллюзии в курсе? Ну вот это когда код в такое складывается. Страшная штука.
|
|||
64
Конструктор1С
21.07.21
✎
13:13
|
(56) "Если Не <булевая переменная>" проблем не создаёт
Если Не Дурак Тогда ПойтиВПрограммисты(); КонецЕсли; проблемы создают такие вот уродства: Если Не ТребуетсяУказаниеДопДанных И ЗначениеЗаполнено(ПараметрыСканирования.ДокументОснование) И Не ЗначениеЗаполнено(ДанныеШтрихкода.Серия) И ДанныеДокументаОснования <> Неопределено Тогда |
|||
65
Злопчинский
21.07.21
✎
13:16
|
"уродство" читалось бы легче со скобками, типа
Если Не (ТребуетсяУказаниеДопДанных И ЗначениеЗаполнено(ПараметрыСканирования.ДокументОснование) И Не ЗначениеЗаполнено(ДанныеШтрихкода.Серия) И ДанныеДокументаОснования <> Неопределено) Тогда |
|||
66
Конструктор1С
21.07.21
✎
13:19
|
(65) скобки уродство не спасут. Тем более в данном случае, скобки поменяют логику проверки
|
|||
67
Mikeware
21.07.21
✎
13:21
|
(52) говнокод говнокодом, а понимание пониманием.
да, KISS никто не отменял, но и применение отрицания в разных случаях разное. Да и в скобках меня никто не не ограничивал... |
|||
68
Галахад
гуру
21.07.21
✎
13:21
|
(64) Хм. И какие предложения?
|
|||
69
fisher
21.07.21
✎
13:23
|
(68) Вероятно, намекает на необходимость комментария или вынесения в отдельный предикат для разъяснения бизнес-кейса. Других идей нет :)
|
|||
70
Guk
21.07.21
✎
13:24
|
жжоте. столько постов обсуждать подобную хрень ;)...
|
|||
71
Почему 1С
21.07.21
✎
13:24
|
(64) это лишь посыл что мозг работает не как компьютер строго детерминировано, а непроизвольно может интерпретировать и искажать информацию, например как в оптических иллюзиях, либо умение мозга свободно читать слова в которых перемешаны буквы, в данном случае если не проявлять некую концентрацию, может вполне проигнорировать "Не".
П.С. Давайте шуточки за триста, гагага он половину кода не видит когда читает код это клиника для тугодумов. |
|||
72
fisher
21.07.21
✎
13:25
|
(70) Ы. Кого это когда останавливало? Прививочные посты вообще бесконечным сериалом идут.
|
|||
73
Конструктор1С
21.07.21
✎
13:27
|
(68) в данном случае воняет уродливой декомпозицией, нужно пересматривать код. Минимум, чтобы читающий не ломал глаза и не ошибся при беглом чтении, можно вынести проверки в булевы переменные
|
|||
74
Конструктор1С
21.07.21
✎
13:31
|
(71) вот именно. Есть вероятность неправильного толкования. Как-минимум такой код заставляет остановиться и перечитать его несколько раз, обращаясь за подсказками и пояснениями к окружающему коду. Код здорового человека читается как простой текст, понимается с первого раза. Код курильщика нужно зачитывать и перечитывать, решая ребусы
|
|||
75
Галахад
гуру
21.07.21
✎
13:32
|
(73) Покажи как это будет на примере из (64)
|
|||
76
Guk
21.07.21
✎
13:37
|
(74) забавно читать такие рассуждения. от кода требуется, чтобы он работал. и работал правильно. а как и кто его там будет читать, это проблемы того кто читает.
зы: это ты код NS-а не видел. его без веществ вообще читать не возможно ;) но он написал таким кодом шахматы на 1С на уровне 2-го разряда, а ты вряд ли напишешь. пусть и красивым кодом... |
|||
77
Почему 1С
21.07.21
✎
13:40
|
(76) Главное чтобы работало - https://infostart.ru/1c/articles/966234/
Неужели статья для вас будет открытием? |
|||
78
fisher
21.07.21
✎
13:42
|
(75) Если НеобходимоЗаполнитьХреньИзДокументаОснования Тогда // например
Но как по мне и комментария было бы достаточно. (76) Забавно читать такие рассуждения. Так как они верны только для случаев, когда этот код не требует постоянной поддержки. В противном случае эти проблемы напрямую конвертируются в затраты нанимателя. И гораздо дешевле в этом случае работать с людьми, которые эти проблемы не генерят. |
|||
79
acht
21.07.21
✎
13:42
|
(76) > это проблемы того кто читает.
Это пока ты в одиночку для себя любимого пишешь. И то, когда через месяца три вернещся к коду - начнешь на кофейной гуще гадать, что же тогда имелось в виду? > он написал таким кодом шахматы Вот-вот. Забавная такая хня, которой можно гордится. |
|||
80
StanLee
21.07.21
✎
13:44
|
я по удобству чтения кода ставлю, например мне удобнее читать такой код "НЕ ЗначениеЗаполнено()" и такой: "Если МояПеременная <> Неопределено"
|
|||
81
fisher
21.07.21
✎
13:45
|
(80) В общем случае это неравноценный код.
|
|||
82
Галахад
гуру
21.07.21
✎
13:47
|
(78) Тут проблема в чтобы переменная точно передавала смысл условия.
И иногда в условие что-то может изменится, а вот имя переменной менять мало кто будет. |
|||
83
fisher
21.07.21
✎
13:48
|
А код NS'a - это конечно что-то с чем-то. Заглядывал я в его шахматы. Умный мужик, но из команды я бы его ссаными тряпками гнал. Ну или посадил на разработку черных ящиков, которые с большой вероятностью трогать не придется.
|
|||
84
Вафель
21.07.21
✎
13:54
|
(83) это все следствия олимпиадного программирования
|
|||
85
fisher
21.07.21
✎
13:56
|
(84) У него хоть оправдания были. Он там из 1С выжимал производительность, как алкоголик водку из дохлой кошки. Не удивлюсь, если бы он с фактами на руках доказал что длинные мнемонические замедляют его программу :)
|
|||
86
Конструктор1С
21.07.21
✎
14:03
|
(75) код лечится рефакторингом. Причёсывая говно получишь причёсанное говно. Поэтому нужно пересмотреть не только саму логическую проверку, но и окружающий код. Эта уродливая проверка уже сама по себе индикатор, что в коде проблемы. Когда код будет переписан по-человечачи, уродливая логическая проверка сама исчезнет
|
|||
87
fisher
21.07.21
✎
14:11
|
(86) А когда и рефакторинг кода не помогает - мы отрефакторим постановку задачи. Ты, случаем, не консалтером работаешь?
|
|||
88
Галахад
гуру
21.07.21
✎
14:12
|
(86) Ну не знаю. По каким критериям код из (64) вообще попал в говнокод? Какие общепринятые стандарты он нарушает?
|
|||
89
fisher
21.07.21
✎
14:13
|
(88) Градиент наморщивания лба превышает ПДК.
|
|||
90
Guk
21.07.21
✎
14:17
|
(84) точно! хотя мне было объяснено, что это следствие не только олимпиадного, но и экстремального программирования ;)
из-за этого и срались постоянно, когда приходилось что-то дописывать в его коде ;)... |
|||
91
Конструктор1С
21.07.21
✎
14:17
|
(87) нет. Не запускай код до плачевного состояния и не придётся страдать при рефакторинге
|
|||
92
fisher
21.07.21
✎
14:19
|
(91) Тебе видимо повезло работать с идеальными разработчиками и постановщиками. Если, конечно, под кодом здорового человека ты понимаешь не только собственный код. Я бы к такому даже и не подумал придираться. Хотя комментарий не помешал бы, конечно.
|
|||
93
Конструктор1С
21.07.21
✎
14:22
|
(88) в нем слишком сложное логическое условие
|
|||
94
StanLee
21.07.21
✎
14:23
|
вполне себе нормальное условие и читается нормально
|
|||
95
Конструктор1С
21.07.21
✎
14:23
|
(92) нет, не повезло. Постоянно вязну в говнокоде
|
|||
96
Guk
21.07.21
✎
14:23
|
(93) ;)...
|
|||
97
fisher
21.07.21
✎
14:24
|
(95) Если в таком, то тебе таки повезло.
|
|||
98
Галахад
гуру
21.07.21
✎
14:27
|
(89) Если там таких условий куча, тогда да. А одно уж как-нибудь можно понять.
(93) Нет. |
|||
99
Hans
21.07.21
✎
14:28
|
(0) Тоже считаю так делать нельзя. "Не" не надо по возможности.
|
|||
100
Почему 1С
21.07.21
✎
14:29
|
(92) Комментарий внутри функций с вероятностью 90% признак плохого кода.
К комментариям описаниям функции/процедуры это не относится |
|||
101
Конструктор1С
21.07.21
✎
14:30
|
(98) да. Приведу чуть больше этого говна. И это только часть одной уродской огромной процедуры. Попробуй разобраться, что вообще делает этот код?
Если ДанныеШтрихкода <> Неопределено И Не ТребуетсяУказаниеДопДанных Тогда Если Не ТребуетсяУказаниеДопДанных И ПараметрыСканирования.ЗапрашиватьНоменклатуру И (Не ЗначениеЗаполнено(ДанныеШтрихкода.Номенклатура) Или Не ЗначениеЗаполнено(ДанныеШтрихкода.АлкогольнаяПродукция)) Тогда ТребуетсяУказаниеДопДанных = Истина; КонецЕсли; Если Не ТребуетсяУказаниеДопДанных И ЗначениеЗаполнено(ПараметрыСканирования.ДокументОснование) И Не ЗначениеЗаполнено(ДанныеШтрихкода.Серия) И ДанныеДокументаОснования <> Неопределено Тогда ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Номенклатура", ДанныеШтрихкода.Номенклатура); ПараметрыПоиска.Вставить("Характеристика", ДанныеШтрихкода.Характеристика); НайденныеСтроки = ДанныеДокументаОснования.НайтиСтроки(ПараметрыПоиска); Если НайденныеСтроки.Количество() > 0 И ЗначениеЗаполнено(НайденныеСтроки[0].Серия) Тогда ТребуетсяУказаниеДопДанных = Истина; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
102
fisher
21.07.21
✎
14:34
|
И что неясного? Выясняется, требуется ли введение каких-то доп-данных. Выясни, что происходит при ТребуетсяУказаниеДопДанных и все станет ясно как божий день.
|
|||
103
StanLee
21.07.21
✎
14:35
|
если требуется запрашивать номенклатуру, но не указана номенклатура или алкопродукция, то нужно требовать доп данные
если же не требуется указание доп данных и нет серии и есть документ основание, то ищем нужную номенклатуру в документе основания если не нашли номенклатуру то требовать доп данные да все изумительно читается, просто изумительно, кодер молодец, надо выдать огурец! |
|||
104
StanLee
21.07.21
✎
14:37
|
нормальное человеческое чтение, прям как книгу читать
а вот бывает "инженерное" чтение, когда все по шаблону и в непонятном порядке или в одну строку, и этот шаблон рвет мой внутренний шаблон, вот тогда грусть-печаль |
|||
105
fisher
21.07.21
✎
14:41
|
Если это часть громадной портянки, то код конечно неидеален в плане читабельности. Ее можно и повысить. Но до говнокода ему пилить и пилить. Сдается мне, что Галя балувана.
|
|||
106
Smallrat
21.07.21
✎
14:42
|
Мне как то пришлось разгребать такое:
|
|||
107
Конструктор1С
21.07.21
✎
14:43
|
(102) этот говнокод несколько раз анализирует и сам же меняет один и тот же булев флаг. Допустить в таком ошибку при доработке, или неправильно истолковать его, - как два пальца об асфальт
|
|||
108
Почему 1С
21.07.21
✎
14:45
|
(106) Сейчас местные гении в раз слева на право его прочитают )))
|
|||
109
Guk
21.07.21
✎
14:48
|
(93) вот сложное условие ;)...
Если ЗначениеЗаполнено(СтрокаТЗНоменклатура.РодительКод) И СокрЛП(СтрокаТЗНоменклатура.РодительКод) <> СокрЛП(СтрокаТЗДФ.RODKOD) ИЛИ СокрЛП(СтрокаТЗНоменклатура.Наименование) <> СокрЛП(СтрокаТЗДФ.NAIM) ИЛИ (СтрокаТЗНоменклатура.РодительКод <> СокрЛП(СтрокаТЗДФ.RODKOD)) ИЛИ НЕ СтрокаТЗНоменклатура.ЭтоГруппа И ( //проверка реквизитов элемента Найти(ВРЕГ(СокрЛП(СтрокаТЗНоменклатура.ЕдиницаИзмерения)), ВРЕГ(СокрЛП(СтрокаТЗДФ.OSNED))) = 0 ИЛИ СокрЛП(СтрокаТЗНоменклатура.НаименованиеПолное)<> СокрЛП(СтрокаТЗДФ.NAIM) ИЛИ СтрокаТЗНоменклатура.ВесЧислитель <> Число(СтрокаТЗДФ.OSNEDK) ИЛИ СтрокаТЗНоменклатура.ВесЗнаменатель <> 1 ИЛИ СтрокаТЗНоменклатура.СтавкаНДС <> Число(СокрЛП(СтрокаТЗДФ.NDS))/100 ИЛИ СтрокаТЗНоменклатура.КратностьЗаказа <> КратностьЗаказаИзФайла ИЛИ ЕстьКоличественныеПараметрыТовара И (СтрокаТЗНоменклатура.ОстатокТовара <> ОстатокИзФайла ИЛИ СтрокаТЗНоменклатура.СредниеПродажиТовара <> ПродажиИзФайла ИЛИ СтрокаТЗНоменклатура.ОжидаетсяПоступлениеТовара <> ВПутиИзФайла) ИЛИ СтрокаТЗНоменклатура.НетНаСкладе <> НетНаСкладеИзФайла ИЛИ СокрЛП(СтрокаТЗНоменклатура.Состав) <> СоставИзФайла ИЛИ СокрЛП(СтрокаТЗНоменклатура.СрокГодности) <> СрокГодностиИзФайла ИЛИ СтрокаТЗНоменклатура.СрокГодностиЧислом <> СрокГодностиЧисломИзФайла ИЛИ СокрЛП(СтрокаТЗНоменклатура.УсловияХранения) <> УсловияХраненияИзФайла ИЛИ СтрокаТЗНоменклатура.ПометкаУдаления <> ПометкаУдаленияИзФайла ИЛИ Найти(ВРЕГ(СокрЛП(СтрокаТЗНоменклатура.ЕдиницаВозврата)), ВРЕГ(СокрЛП(СтрокаТЗДФ.EDV))) = 0 ИЛИ СтрокаТЗНоменклатура.ВесЧислительВозврата <> ВесЧислительВозвратаИзФайла) //конец проверки реквизитов элемента Тогда |
|||
110
Галахад
гуру
21.07.21
✎
14:49
|
(101) Этот код тоже не нарушает стандартов. Даже по когнитивной и цикломатической сложности.
|
|||
111
fisher
21.07.21
✎
14:53
|
(107) Да ну нет. Тут достаточно простой и понятный паттерн. Я бы просто в функцию вынес и сразу делал возврат при срабатывании очередной проверки.
|
|||
112
fisher
21.07.21
✎
14:57
|
А здесь так как решили оставить в портянке приходится каждый раз проверять - а имеет ли вообще смысл дальше проверять.
|
|||
113
Злопчинский
21.07.21
✎
15:29
|
(111) а это бяка. ругаются. возврат должен типа быть один.
хотя я вот делаю как раз так - проверка - результат - возврат. или дальше если Не Результат ;-) так понятнее при чтении, а то проверка возврата нет.. хз что там еще внизу по коду будет.. а так - глянул и все понятно. как график нарядов по КПП |
|||
114
fisher
21.07.21
✎
15:40
|
(113) Пусть ругаются. Если код линейный а возвраты по понятному паттерну, то какая альтернатива? Ветвления? Или паттерн из (101)? Как по мне, с возвратами и читабельнее и производительнее.
|
|||
115
StanLee
21.07.21
✎
15:46
|
(109) этот код по-видимому писался с использованием некоего алкоголя, разбирать его также надо с использованием желательно того же самого напитка, иначе никак
|
|||
116
Конструктор1С
21.07.21
✎
16:17
|
(110) ты уверен? В этом коде нарушены важнейшие вещи - удобочитаемость и абстракция. Удобочитаемость скатилась в дерьмо, а абстракции просто нет, какое-то месиво из кода. Почему ты так рьяно защищаешь этот говнокод? Да и когнитивная сложность у кода чрезмерно высокая
|
|||
117
Конструктор1С
21.07.21
✎
16:19
|
(111) говно там, а нее паттерн. Обрати внимание на флаг ТребуетсяУказаниеДопДанных. Он несколько раз проверяется и тут же меняется. Самое настоящее ректальное программирование
|
|||
118
Конструктор1С
21.07.21
✎
16:20
|
(114) где ты там увидел линеный код?
|
|||
119
StanLee
21.07.21
✎
16:21
|
и как переделать этот код чтобы не был говнокодом? там вроде не такой сложный кусок программы чтобы дробить его на процедуры или тратить время на перестановку буковок
|
|||
120
Конструктор1С
21.07.21
✎
16:48
|
(119) там надо смотреть код по стеку выше. Выпрямить вышестоящий код, и большинство этих говнопроверок сами отпадут. Оставшиеся сложные проверки можно вынести в отдельные функции
>>там вроде не такой сложный кусок программы чтобы дробить его на процедуры дробить на процедуры нужно не когда глаза закровоточат, а гораздо раньше. Чтобы была декомпозиция, уровни абстракции и вот это всё |
|||
121
fisher
21.07.21
✎
16:59
|
(117) Критикуя - предлагай. Мы подождем твоей альтернативы и сравним.
(118) Ок. Код без сложных ветвлений (иначе), который вследствие этого читается линейно. Так буквоеды проглотят? |
|||
122
Конструктор1С
21.07.21
✎
17:06
|
(121) предлагаешь заморочиться и отрефакторить это дермо? А ради чего, чтобы доказать что код может быть читабельнее и линейнее? По-моему это и так очевидно
|
|||
123
fisher
21.07.21
✎
17:08
|
(122) Мне неочевидно. Мне действительно любопытно, на какие высоты тебе удастся поднять читабельность этого кода. И сравнить величину твоего пафоса с величиной разницы в читабельности.
|
|||
124
Конструктор1С
21.07.21
✎
17:10
|
(123) от это да... Называть говнокод говнокодом уже пафос? Рефакторить я умею, не сомневайся. В своей компании я даже обучаю это делать других
|
|||
125
fisher
21.07.21
✎
17:10
|
"я даже обучаю" - это многое объясняет в плане пафоса.
|
|||
126
Конструктор1С
21.07.21
✎
17:20
|
(125) да причём тут пафос? Рефакторинг и стремление сделать код лучше для тебя пафос?
|
|||
127
fisher
21.07.21
✎
17:29
|
Лично я вижу, что этот код можно декомпозировать и оформить аккуратнее. При декомпозиции уйдут и проверки флага, на которых тебя почему-то зациклило. Но чем этот код не является - так это говнокодом.
Он линейно читается, имеет приемлемые названия переменных, не содержит повторяемого кода, не вызывает у меня никаких wtf и при необходимости рефакторится в пол-пинка. Если ты такой код называешь говнокодом, то для настоящего говнокода у тебя стопудов должно быть какое-то особое название. |
|||
128
fisher
21.07.21
✎
17:46
|
Вспоминается несколько конюшен, которые мне приходилось разгребать, чтобы внести требуемые заказчиком поправки. В первозданном виде я попросту не был на это способен, настолько там все было эпично.
Начинаешь потихоньку разбираться, переименовывая переменные в процессе постижения их сакрального смысла. Особый кайф при этом когда они меняют свой смысл по ходу повествования. Потом переписываешь постигнутые кусочки на более лаконичные и без wtf. Потом аккуратно декомпозируешь повторяющийся код кое-где. Тоже поэтапно. Постепенно подбираешься к самому вкусному - запутанному лабиринту безусловных переходов в самых неожиданных местах. Из условий, из циклов - отовсюду. Распутываешь потихоньку этот клубок и переписываешь нормально. Когда картинка наконец начинает помещаться в мозгу не взрывая его, облегченно вздыхаешь и переписываешь окончательно. И! Наконец! Ты способен внести контролируемые изменения! Победа!!! Вот это я понимаю говнокод. А тебе анализ флага поперек горла встал. |
|||
129
Конструктор1С
21.07.21
✎
18:17
|
(128) вот вроде бы понимаешь губительность невразумительного кода, но почему оправдываешь непотребство в (101). Признайся, ведь тебе пришлось перечитать его несколько раз, побегать глазками ввер-вниз, прежде чем ты понял логику кода. А ведь это несчастные 20 строк кода. Было бы их 2000, пришлось бы изрядно побарахтаться. В этом и есть проблема плохого кода - он нещадно пожирает время и интеллектуальные ресурсы читающего тот самый код. Да, в программировании есть такой парадокс - плохой код стоит дорого, дороже качественного, отшлифованного кода
|
|||
130
vi0
21.07.21
✎
20:31
|
(0) плохой код, согласен
с НЕ там две операции, и нужно внимание чуть больше напрягать при чтении по этой причине |
|||
131
Asmody
21.07.21
✎
20:41
|
(128) всё так, только в какой-то момент ты осознаёшь, что уже впёрся в код типовой, и всё, трындец
|
|||
132
Смотрящий
21.07.21
✎
20:53
|
(0) Из резюме можешь убрать пункт
Умею читать чужой код |
|||
133
vi0
22.07.21
✎
03:59
|
(9) НЕ ЭтоНеГруппа <> Неопределено
вполне возможно встретить |
|||
134
Конструктор1С
22.07.21
✎
07:05
|
(132) ценится умение писать качественный, гибкий код. А не умение копаться в чужих экскрементах. Второе лишь вынужденная мера, а не навык сам по себе
|
|||
135
fisher
22.07.21
✎
09:14
|
(129) Основные умственные усилия - это убедиться что этот код делает именно то, что он делает и ничего лишнего. Это исправляется банальным комментарием или простейшей декомпозицией. Говнокод так легко не победить.
(133) Встретить еще и не то можно. Главное - самому такого не писать. |
|||
136
ДенисЧ
22.07.21
✎
09:16
|
(134) Плевать всем на твой код.
Ценится умение быстро и качественно решать задачи. А если для решения задачи нужно раскопать копрокод - значит, ты должен это уметь. Если встанешь в позу "я один в белом, а всё остальное коричневое и плохо пахнет" - с тобой долго работать и разговаривать не будут |
|||
137
Галахад
гуру
22.07.21
✎
09:37
|
(116) У 1С есть вполне вменяемые стандарты. Если код их не нарушает, уже как-то можно жить...
И да, приведенный фрагмент кода, сам по себе не сложен. |
|||
138
fisher
22.07.21
✎
09:49
|
(136) Ну дык одно дело раскопать легаси, а другое дело когда твоя команда генерит копрокод. А как ты правильно заметил - "ценится умение быстро и качественно решать задачи". И для команды в целом это тоже верно. Ну и даже если разработка в одно лицо. Каким бы крутым копроархеологом ты ни был - ты все равно будешь тратить кучу времени на раскопки, повышая стоимость услуг для работодателя. Чистота кодовой базы - это актив. Если конечно речь о коде, который требует поддержки. Но 1С чаще всего и имеет дело с кодом, требующим поддержки.
Чем чище и однообразнее пишет команда - тем эффективнее она решает задачи. Ну и как показывает практика, обычно наблюдается очевидная зависимость между чистотой кода и его эффективностью. Чисто пишут обычно программисты, достаточно грамотные и в вопросах эффективности тоже. Потому что опыт программиста развивается часто в таком направлении - сначала тебя заботит как вообще решать задачи, хоть как-нибудь. Потом с набором опыта начинаешь задумываться о том, как решать задачи эффективно. И наконец - как оформлять свои решения самодокументируемо и максимально удобно для возможных доработок в будущем. Последнее приходит обычно само собой с опытом долгой и серьезной работы на больших проектах (что ессно добавляет экспириенса и во многих других аспектах). Поэтому качество кода в первом приближении может немало рассказать и о бэкграунде программиста. Огромная прослойка программистов пишущих грязно - находятся на первом этапе со всеми вытекающими. |
|||
139
Почему 1С
22.07.21
✎
10:19
|
(136) Да конечно, всем плевать на начальном этапе, а то что в таких системах со временем на основе этого копрокода задачи решать приходится на порядке дольше не задумывался?
(134) Жму руку, я думал тут адекватных людей больше будет, в некоторых прямо разочаровался. |
|||
140
Asmody
22.07.21
✎
10:22
|
(139) "я думал тут адекватных людей больше будет" - мы просто очень давно уже тут сидим.
|
|||
141
ДенисЧ
22.07.21
✎
10:23
|
(138) (139) Я не совсем понял.
Вы решили, что я агитирую писать какашкокод? Я вообще отвечал на "А не умение копаться в чужих экскрементах". |
|||
142
rsv
22.07.21
✎
10:36
|
(0) верно. Есть же <>
|
|||
143
rsv
22.07.21
✎
10:37
|
А можно еще в типовых динамически через стопитцот процедур собирать
Текст запроса . Сопровождение таких подходов равно 0 . |
|||
144
mikecool
22.07.21
✎
10:40
|
разбираешь такой копрокод, материшься и думаешь - какой гад это написал?
и тут до тебя доходит, что это твой код трехмесячной давности... занавес |
|||
145
mikecool
22.07.21
✎
10:42
|
+144 сейчас как раз занимаюсь рефактором своего ОМ строк на 6к
так много и так безжалостно я еще не выкашивал ))) |
|||
146
fisher
22.07.21
✎
11:06
|
(141) А что я должен был решить глядя на "плевать всем на твой код"? Если всем плевать - значит нет причин не писать какашкокод.
|
|||
147
Конструктор1С
22.07.21
✎
13:39
|
(136)
>>Ценится умение быстро и качественно решать задачи Ты не сможешь быстро и качественно решить задачу, если кругом говнокод: 1. Говнокод нещадно гробит время. На то, что можно было сделать за пару часов, уходят дни, а то и недели 2. Говнокод пораждает новый говнокод. Про качество можно забыть |
|||
148
vi0
22.07.21
✎
14:25
|
(135) главное чтобы человек был щаслис
|
|||
149
ManyakRus
22.07.21
✎
14:27
|
Не надо доделывать чужой код. Чужой код надо сразу стирать и делать заново :)
(кроме типового кода конфигурации) |
|||
150
dubolom
22.07.21
✎
14:27
|
Людей, не пишущих говнокода вообще, очень мало, и они на вес золота. Потому что задача не просто в том, чтобы писать нормально, а и в том, чтобы планировать время правильно - всех опросить, всё проанализировать, написать прямыми руками.
|
|||
151
vi0
22.07.21
✎
14:38
|
(150) во франчах на вез золота быстрые копрокодеры
|
|||
152
dubolom
22.07.21
✎
14:42
|
(151) Франчи как раз потому существуют и даже получают прибыль, что хороших 1с-ников очень мало. Даже среднего 1с-ника нанять выгоднее в 95% случаев, чем с франчами дело иметь.
|
|||
153
Smallrat
22.07.21
✎
14:54
|
(152) кхм, нет - свой 1Сник сидит и каждый месяц требует "атста" независимо от того сколько он сделал и это будет бесконечно (потому что отказаться от своего 1Сника, раз он появился, тяжело), франч тебе что-то накрутил на миллион-два и дальше ты ему за поддержку тыщ 10-20 (если от него ничего особенного не требуется) в месяц башляешь и всё.
|
|||
154
dubolom
22.07.21
✎
14:55
|
(153) Это если компания особо не развивается и всякой новой фигни не внедряете.
|
|||
155
Smallrat
22.07.21
✎
15:00
|
(154) ситуации конечно разные бывают - но все же, даже если развиваетесь, то есть участки, на которые не хочется отвлекать своих 1сников типа ЗУПа или чего-нить подобного, у них может даже компетенций соответствующих нет, а работы там немного, чтобы окунать своего человека туда, проще бывает франч натравить на этот участок и пусть он с ним возится. Я конечно имею в виду нормальные франчи с нормальными спецами и пониманием ответственности, а не те, которые студентов натаскивают за миску супа.
|
|||
156
Pprog151713
22.07.21
✎
15:50
|
Если остальное все нормально. То это не проблема вообще. Патерн не патерн.
|
|||
157
Kassern
22.07.21
✎
15:53
|
(100) ну да ну да, вы это еще разработчикам типовых скажите)
Для Каждого СтрокаСхемыРасчета Из СхемаРасчета Цикл // Инициализируем параметры расчета. ПараметрыЗапускаРасчетаПериода = ИнициализироватьПараметрыЗапускаРасчетаПериода(СтрокаСхемыРасчета); ПараметрыЗапускаРасчетаПериода.Вставить("ВыполняетсяОбновлениеИБ", Истина); // Формирует временные таблицы: // - ВТУчетныеПолитикиОрганизаций (учетные политики рассчитываемых организаций) // - ВТУчетныеПолитикиПрошлогоПериода (аналогично, но за предыдущий месяц) // - ВТПравилаЗаполненияПоляТипЗаписи (правила проверки первичных записей регистра себестоимости) // - ВТОтборАналитикаПоПартнерам (ключи аналитики партнеров с рассчитываемыми организациями) // - ВТСтоимостьПартийТоваров (расширенный аналог регистра сведений СтоимостьТоваров с полями партий; пока пустая). ИнициализироватьПараметрыРасчетаПартий(ПараметрыЗапускаРасчетаПериода, ПараметрыРасчета, ПараметрыОтладки); // Этап 0 - подготовка к расчету // - исправляет некорректные исходные данные // - выполняет проверку данных. ПодготовкаИсходныхДанныхКРасчету(ПараметрыРасчета); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |