Имя: Пароль:
JOB
Работа
Быдлокод
0 Маленький Вопросик
 
20.08.11
17:23
Как считают местные обитатели, что такое быдлокод? И кто в праве оценивать его "быдлокодовость", если и так все работает?
128 byxtello
 
20.08.11
21:15
129 Злопчинский
 
20.08.11
21:16
(127) там Возврат внутрях
130 Злопчинский
 
20.08.11
21:17
Да нету быдлокода.. есть или работающий или неработающий код...
131 CepeLLlka
 
20.08.11
21:19
(129) Спасибо.
132 andrewks
 
20.08.11
21:32
(123) иногда действительно бывает необходимо делать такие псевдо-"вечные" циклы. но зачастую это неоправданно, как и в данном случае. например, лучше, на мой взгляд, сделать так:

Поз=-1;
Пока Поз>=0 Цикл
   Поз = Найти(Стр, Разделитель);
   Если Поз = 0 Тогда
       Если (СокрЛП(Стр) <> "") Тогда
           МассивСтрок.Добавить(Стр);
       КонецЕсли;
   Возврат МассивСтрок;
   КонецЕсли;
   МассивСтрок.Добавить(Лев(Стр,Поз - 1));
   Стр = Сред(Стр, Поз + ДлинаРазделителя);
КонецЦикла;
133 andrewks
 
20.08.11
21:33
+(132) извиняюсь, в начале Поз=0;  конечно
134 andrewks
 
20.08.11
21:34
или так:

Поз=Найти(Стр, Разделитель);
Пока Поз>=0 Цикл
   Если Поз = 0 Тогда
       Если (СокрЛП(Стр) <> "") Тогда
           МассивСтрок.Добавить(Стр);
       КонецЕсли;
   Возврат МассивСтрок;
   КонецЕсли;
   МассивСтрок.Добавить(Лев(Стр,Поз - 1));
   Стр = Сред(Стр, Поз + ДлинаРазделителя);
   Поз = Найти(Стр, Разделитель);
КонецЦикла;
135 andrewks
 
20.08.11
21:37
в (123)  аналог конструкции do {} while, которой нет в языке 1С
136 Aleksey
 
20.08.11
21:38
(10)
В топку список

"изобретение кривых велосипедов там, где имеются гибкие встроенные механизмы; "

Ты хоть раз пробовал вставлять в свои отчеты вызов типовых процедур из ГМ. А я пробовал, к 3-му релиза забодался разбираться куда они в этот раз перенесли процедуру (в какой ГМ) и за что теперь отвечают новые параметры.
137 andrewks
 
20.08.11
21:40
(136) не, ну если имеются в виду механизмы платформы, то озвучено верно. другое дело, что не всегда надо им руководствоваться. тут только поставленная задача и здравый смысл помогут определится. яркий пример - работа с xml в 7.7 ч/з штатную v7plus никуда не годится
138 CepeLLlka
 
20.08.11
21:41
Я и заметил что они по разному делают.. в одном месте так разбирают строку.. в другом иначе..
139 Aleksey
 
20.08.11
21:44
(137) Ну если исходить из (1), то перебор на языке 1С по сравнению с прямым запросом - быдлокод
140 popcorn
 
20.08.11
21:44
Интересно, есть аналог YUI Compressor для 1С ? Я бы его использовал )))
141 bazvan
 
20.08.11
21:45
Вот веть офигеть.
Даже незанаю как сказать что бы не получить.

Смешные, особенно некоторый он даже на т1с пытается свой писюн выстовить. смешной чесслово
142 proger2011
 
20.08.11
21:53
Быдлокод это когда процедуры и функции больше одного экрана и глобальные переменные.
143 zak555
 
20.08.11
22:07
(134) нет переменной поз
хотя не знаю, что это в 8 значит
144 CepeLLlka
 
20.08.11
22:20
(143) Да ты чё.. это же просто переменная которая указывает на позицию разделителя..
145 CepeLLlka
 
20.08.11
22:24
Никак не могу разобраться с печатью этой :( Мозга не хватает :( Хнык, хнык...
146 cViper
 
20.08.11
22:46
(119) В пятницу видел в конфе кусок кода, в котором с структуру записывались имена директоров(соответствует пункту 5) и как-то там обрабатывались. Наиболее оптимальный(безопасный) способ в такой ситуации использовать предопределенный элемент справочника? Может быть даже регистр?
147 Злопчинский
 
20.08.11
22:54
(142) быдлокод, это когда где надо и не надо функции и процедуры ляпают, да еще с выносом в глобмодуль... а потом удивляются - а чего так медленно...
148 Лефмихалыч
 
20.08.11
22:57
(0) быдлокод - это такой код, который кодит быдлокодер. Это ж очевидно.
ЗЫ Так-то
149 andrewks
 
20.08.11
22:58
(148) жди следующую ветку от ТС "Как вы думаете, кто такие быдлокодеры?" :)
150 Лефмихалыч
 
20.08.11
23:09
(149) жду с нетерпением, у меня уж и банхаммер с надписью "за беспробудный вндализм и тупую копипасту самого себя" в руках
151 proger2011
 
20.08.11
23:23
(147) Я уж думал не дождусь поклонников оптимизации и любителей процедур в 2000 строк.
152 Злопчинский
 
20.08.11
23:48
(151) открой в типовой бухии 7.7 какой-нибудб код по зарплате/НДФл - и втыкай до изнемозжения.. ;-)
153 proger2011
 
21.08.11
00:12
(152) А что там? Я с 7.7 уже лет 6 не работал. Там портянки штоли, ну так типовые далеко не образец для подражания.
154 VasilyKushnir
 
21.08.11
00:12
Да не спорьте вы , ребята. Знаю одного проггера и весьма нефигового (не 1с-ника, хотя 1С он тоже занимается по необходимости), который считает, что быдло-код = это все, что не он написал. И что интересно - он где-то прав... Не буду скромничать - сам иногда так считаю (хотя есть гуру, перед которыми сниму шляпу и поклонюсь). А все потому, что нет предела совершенству (это не я придумал) и любую программу можно оптимизировать и совершенствовать до бесконечности. Следовательно: совершенству нет предела и соответственно определения. То же можно сказать о быдлокоде, если идти от обратного. Не забываем, что бадлокодируемая, но работающая обработка сегодня всегда лучше самой красивой и оптимальной, но  заработающей (и то еще вопрос)  через год.
155 Aleksey
 
21.08.11
00:30
(154) Совершенство без контекста есть null.
Ибо совершенство зависит от системы координат
156 Aleksey
 
21.08.11
00:32
Можно привести базу к нормальной формы Бойса — Кодда
Но тогда придется данный получать методом как в (0)

Зато с точки зрения нормализации - база будет совершенна
157 VasilyKushnir
 
21.08.11
00:41
(155) "Ибо совершенство зависит от системы координат" +10000
Этим ты полностью подтвердил мою мысль, но более лаконично (браво!). Смени систему координат (цена , сроки и т.д и т.п.) и быдлокод  уже не совсем быдлокод.  Хотя... Если помои посолить, они лучше пахнуть не станут (с) Ликвидация - Фима.
158 syktyk
 
21.08.11
00:41
Не может быть ни одного прога, который бы не написал быдлокод. Хоть один раз в своей жизни. Аксиома.
159 VasilyKushnir
 
21.08.11
00:49
(158) +100500 Иногда (как выпадает немного свободного времени на работе, хотя это редкоо бывает), свои старые обработки переписываю с нуля. Зачастую ради повышения быстродействия. Об одной (написанной года 4 назад) уже и забыл - оказывается пользуются! Отойдя от шока, переписал. Вместо 30-40 минут (писалась обычными запросами под ДБФ-ную базу) отрабатывает 2-3 минуты (прямые запросы, но уже на скуле).
160 syktyk
 
21.08.11
00:56
(159) Ага, я споминаю бесмертное - "Над кем смеетесь? Над собой смеетесь!"

ЗЫ. А пасаны просто такого и не знают :)
161 syktyk
 
21.08.11
00:57
+(160) **сорестион** сс
162 Jofa
 
21.08.11
06:23
Кстати на лукоморье есть один пункт из поведения быдлокодера:

10.Считает, что все вокруг тупые уроды, так как не знают некоторых вещей (конечно же, охренительно серьёзных и профессиональных), которые знает он, или потому, что пытаются объяснить ему то (конечно же, никому не нужное), чего он не знает.
163 Luhtas
 
21.08.11
07:53
Вот два примера решения одной и той же задачи:
Какой из них оптимальнее?
Первый:
//////////////////////////////////////////////////////////////
Процедура ПриНачалеРаботыСистемы()
   ОбщегоНазначения.СообщитьИменинников();
КонецПроцедуры

Процедура СообщитьИменинников() Экспорт
   ДеньГода=День(ТекущаяДата());
   МесяцГода=Месяц(ТекущаяДата());
   Выборка=Справочники.Сотрудники.Выбрать();
   Пока Выборка.Следующий() Цикл
       Если День(Выборка.ДатаРождения)=ДеньГода И Месяц(Выборка.ДатаРождения)=МесяцГода Тогда
           Сообщение=Новый СообщениеПользователю;
           Сообщение.Текст="Сегодня день рождения у сотрудника: "+Выборка.Наименование+".";
           Сообщение.Сообщить();
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

/////////////////////////////////////////////////////////
Второй:
/////////////////////////////////////////////////////////
Процедура ПриНачалеРаботыСистемы()
   СписокИменинников=ОбщегоНазначения.ПолучитьСписокИменинников();
   Для Каждого Сотрудник ИЗ СписокИменинников Цикл
       Сообщение=Новый СообщениеПользователю;
       Сообщение.Текст="Сегодня день рождения у сотрудника: "+Сотрудник+".";
       Сообщение.Сообщить();
   КонецЦикла;
КонецПроцедуры

Функция ПолучитьСписокИменинников() Экспорт
   ТекДень=День(ТекущаяДата());
   ТекМесяц=Месяц(ТекущаяДата());
   Массив=Новый Массив;
   Выборка=Справочники.Сотрудники.Выбрать();
   Пока Выборка.Следующий() Цикл
       Если ТекДень=День(Выборка.ДатаРождения) И ТекМесяц=Месяц(Выборка.ДатаРождения) Тогда
           Массив.Добавить(Выборка.Наименование);
       КонецЕсли;
   КонецЦикла;
   Возврат Массив;
КонецФункции
///////////////////////////////////////////////////////
164 Luhtas
 
21.08.11
08:03
(141) Быдлокод:

НУ вот наконец то спустя 5 лет я был удастоен звезд. Я их очень ждал. И Волшебник мне их обещал в 2012 но Асмодя выдал сейчас.
165 Jofa
 
21.08.11
08:05
(164)Запрос для умников?
166 jump if zero
 
21.08.11
11:28
Быдлокод - это код написанный профессиональным программистом
вынужденного работать в условиях скромного бюджета.
167 Злопчинский
 
21.08.11
11:38
(153) а пресловуьые 8-ые запросы на несколько страниц...?
168 proger2011
 
21.08.11
11:41
(167) Их уже даже в типовых выносят в отдельные функции.
169 vde69
 
21.08.11
11:59
(163) оба примера - быдлокод причем поганый быдлокод,
для этого запрос нужно использовать
170 vde69
 
21.08.11
12:04
я отношу к былокодерству
1. отсутствие стиля (не соблюдение нотаций, пускай и своих собственых)
2. излишнее использование циклов (в частности объектная модель вместо запроса)
3. не умение работать с тразакциями и непонимание блокировок

все остальное можно и принять
171 Escander
 
21.08.11
13:34
(169)есть мнение, что чел какие-то курсы учит и до запросов ещё не дошёл.
172 Alexandr Puzakov
 
21.08.11
14:51
(136) глобальный поиск по модулям отменили?
173 Лефмихалыч
 
21.08.11
15:22
(163) быдлокод - это и то, и другое. Данные надо выбирать запросом
174 Злопчинский
 
21.08.11
15:22
(173) а объекты - выборкой?
175 Лефмихалыч
 
21.08.11
15:25
(174) не понял.
176 Steel_Wheel
 
21.08.11
15:26
(174) объекты -- тоже данные
177 Лефмихалыч
 
21.08.11
15:28
(176) а, теперь понял. Вопрос (174) идиотский
178 Aleksey
 
21.08.11
15:34
(172) Спасибо поржал
Как ты думаешь, правильнее после каждого релиза тратить по 2-3 часа в поисках потерявщих моделей во всех обработках и ездить по клиентам и обновлять

или скопировать один раз и использовать?

Что скажут клиенты, если после каждого обновления придется вызывать тебя, потому что твой отчет не работает?
179 Злопчинский
 
21.08.11
15:36
(177) все данные надо выбирать запросом?
180 Злопчинский
 
21.08.11
15:38
(176) Объект - это дофигища данных. где-то преимущество запросов в т.ч. писалось что типа для получения датыдокумента - запросом выдираем именно дату, ане весь объект..
181 Alexandr Puzakov
 
21.08.11
16:27
(178) это решается простым копированием процедуры/функции из общего модуля в модуль отчета. И не надо вот так громко говорить о плясках процедур из модуля в модуль, большинство из них годами в одном и том же модуле находятся, и в неизменном виде.
182 Chai Nic
 
21.08.11
16:35
"наименование обработок длинные и с пробелами, вместо лаконичных сокращенных наименований"
Вспомним хотя бы ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокументИмениБорисаГеоргиевичаНуралиева ;)
183 Torquader
 
21.08.11
16:38
(180) Если один реквизит, то быстрее, а если несколько, то скорость уже сомнительна.
Кроме того, никто не гарантирует, что отчёт будет выбирать только одно поле, а не делать внутри себя выборку всего объекта и считывание из него только одного поля.
184 Jolly Roger
 
21.08.11
16:55
капитан очевидность скромно напоминает, что в терминах 1с объект и ссылка - не одно и то же...
185 НеЛюблюФорумы
 
21.08.11
17:54
я придерживаюсь вот такой стратегии оценки

http://glenndejaeger.files.wordpress.com/2010/04/wtfm.jpg
186 smaharbA
 
21.08.11
19:07
Если присутствует процедура ПоКнопке...
187 MikleV
 
02.09.11
22:56
чего то все забыли..
только вчера узрел:
Объект.Соглашение = Справочники.СоглашенияСКлиентами.НайтиПоНаименованию("БлаБла");
188 Лефмихалыч
 
02.09.11
23:22
(185) вмемориз!
надо бы это высечь в граните, об который потом несознательных коллег головой прикладывать
189 smaharbA
 
02.09.11
23:26
тоже самое что и "хомячки"
произносится самими
190 IamAlexy
 
02.09.11
23:40
191 Икогнито
 
02.09.11
23:48
(0) Быдлокод - это когда конфа не проходит тестирование в режиме тонкого клиента и архитектор говорит писать код для "толстого клиента" и отключить отладку "тонкого клиента" в конфигураторе.
192 Лефмихалыч
 
02.09.11
23:51
(191) даже если конфа получена конвертацией из 8.1, находится в режиме совместимости и не предназначена для использования в режиме тонкого клиента?
193 Икогнито
 
02.09.11
23:58
(192) нет, если в конфе настройка "Управляемое приложение" стоит и совместимости с 8.1 нет
194 Икогнито
 
03.09.11
00:00
(192) а разрабатывать новую конфу в режиме совместимости с 8.1. - это тоже быдлокод.
Это тупо говорит о том, что челы, которые её разрабатывают, просто не владеют навыками работы с управляемым приложением.
195 Лефмихалыч
 
03.09.11
00:01
(193) тогда надо бы обобщить: "Быдлокод - это когда конфигурация не проходит ситнтаксический контроль в тех режимах, в которых она используется в продуктиве" иначе абсурд получается.
(194) это седствие
196 Икогнито
 
03.09.11
00:02
(195) слишком заумные фразы, работодателю на стороне Заказчика они будут не понятны.
197 IamAlexy
 
03.09.11
00:03
(196) заказчик не будет запускать синтаксисконтролью... заказчик запустит базу в том режиме в котором она должна работать и проверит работоспособность оной...
198 Лефмихалыч
 
03.09.11
00:04
(196) а (191) заказчику будет понятно и он сделает из этого адекватные выводы?
199 Икогнито
 
03.09.11
00:05
(197) это из разряда
-"прогнуть Заказчика под свое решение"
- "Заказчик же не видит, какое *овно написано внутри, ему конфетку снаружи показывают"
200 Лефмихалыч
 
03.09.11
00:05
(200)
201 Икогнито
 
03.09.11
00:07
(198) грамотный программист на стороне Заказчика сделает адекватные выводы.

Хватит уже мыслить узкими категориями, что если есть Заказчик, то у заказчика нет своего программиста (представителя Заказчика) :)
202 Лефмихалыч
 
03.09.11
00:07
(199) нет, это из совсем другого разряда. Это из разряда "не вводить заказчика в заблуждение"
203 Лефмихалыч
 
03.09.11
00:08
(201) и я про то же - хватит уже мыслить узкими категориями - думай, что говоришь
204 Икогнито
 
03.09.11
00:09
(202) Видимо у нас разные позиции.
Франч исходит из позиций:
- на*овнокодю внутри, снаружи конфетку сделаю;
- потом, когда возникнут проблемы оптимизации - срублю еще бабок

Представитель Заказчика исходит и качества и стоит на страже интересов Заказчика.
205 IamAlexy
 
03.09.11
00:12
(199) ты конечно же когда от заказчика деньги будешь получать потребуешь полной истории каждой полученной копейки.. ибо недайбог пара рублей будет получена незаконным путем.. правильно же?
206 IamAlexy
 
03.09.11
00:12
(199) а вообще это из разряда "не надо придумывать сложностей сверх необходимого"
207 Икогнито
 
03.09.11
00:13
(205) С недавних пор, принял решение, что работаю только на стороне Заказчика :)
208 IamAlexy
 
03.09.11
00:13
(204) ты прог, по часам работаешь.. зачем мне как заказчику оплачивать твою работу над исправлением ошибок режимов которые я не собираюсь использовать никогда никогда?
209 IamAlexy
 
03.09.11
00:13
(207) ты просто двуличен.. свои Nрублй за час ты с заказчика слупишь.. просто ты ему впариваешь ненужную услугу.. вот и все..
210 Икогнито
 
03.09.11
00:14
(208) не понял, что ты написал. Два раза прочитал, не понял.
211 Лефмихалыч
 
03.09.11
00:14
(204) я не франч, я в душе не знаю, на какой ты там позиции стоишь
212 Икогнито
 
03.09.11
00:15
(209) С каких пор качество стало называться "ненужная услуга"?
213 Лефмихалыч
 
03.09.11
00:16
(212) ни с каких. Просто значение слова Качество у заказчика совсем не такое, как у тебя
214 IamAlexy
 
03.09.11
00:16
(210) расшифровываю как все происходит на самом деле:

я заказчик, заказал разработку конфы на 8.2, не на управляемом интерфейсе.

ты разработчик потратил время на исправление ошибок управляемого интерфейса, на рисование совместимых форм, на отладку модулей и тд и тп

а затем- выставил мне счет за потраченное время.


вопрос: зачем мне оплачивать навязанную мне услугу которая мне нахрен не сдалась и которой я пользоваться никогда не буду.. каким боком ты тут на моей, на заказчика, стороне то?
215 Икогнито
 
03.09.11
00:16
(208) работа по часам - это работа в угоду галочке в плане выполнения работ.
216 IamAlexy
 
03.09.11
00:18
(215) так или иначе ты по часам работаешь и начальство тебе часы закрывает.. и по этому оно тебя пинает - не надо тратить время на то что заказчиком будет неоплачено..
217 Икогнито
 
03.09.11
00:19
(216) Да заказчик может и не знать, что за два часа можно на*овнокодить так, что потом вынужден будет платить за неделю работы, чтобы разобраться, почему база тормозит.
218 IamAlexy
 
03.09.11
00:20
(217) приведенный тобой пример про ошибки управляемого и вебинтерфейса  этому отношения не имеют..
219 Лефмихалыч
 
03.09.11
00:21
(218) пустая трата буков
220 IamAlexy
 
03.09.11
00:22
(219) да я сегодня мало флудил.. пришлось утром поработать а днем спал весь день.. запас буков велик и неистрачен..
221 Икогнито
 
03.09.11
00:23
(219) Ну наконец-то до тебя дошло, что разговор неконкретен.
222 Икогнито
 
03.09.11
00:23
(220) не оправдывайся
223 IamAlexy
 
03.09.11
00:25
(222) странные выводы...
224 Лефмихалыч
 
03.09.11
02:03
(221) жаль, что до тебя так и не дошел смысл сказанного в (208)

(222) тебя жизнь ни чему не учит
225 Cthulhu
 
03.09.11
02:10
(208): ну, наверное, потому, что в 99% случаев то, что по мнению заказчика "не будет использоваться никогда", "у них такого не будет", и т.п. - но что, исходя из анализа задания предполагается грамотным разработчиком - рано или поздно и используется, и бывает, и если вдруг оно все ломает - то "вы же специалист - вы были должны это предусмотреть!".
226 IamAlexy
 
03.09.11
02:27
(225) каким боком это относится к теме обсуждения?
обсуждается же - стоит ли тратить время на написание кода совместимого для тонкого и вебклиента если все решение проектируется как решение без использование управляемых форм вообще...
227 Asirius
 
03.09.11
11:14
(119) Работал я с одной такой базой, к которой применимы пожалуй все пункты, кроме 2). Хотя у меня ситуация еще более запущенная, туда можно еще добавить несколько пунктов:

а) Эта конфа, писавщеяся с нуля с 2003 года десятью разными программистами, в которой никогда не сворачивались остатки. За это время фирма несколько раз претерпела структурные преобразования, когда-то там даже велась розница с УРБД, но сейчас там остался только корпоративный сегмент, а базу никто не менял, так и работают в центральной базе.

Особенно весело разбирать код типа если Пользователь = "Иванов", когда Иванов уже лет пять как не работает.

б) Криво закрываются регистры остатков по измерениям. За почти 10 лет ведения базы мусора в остатках столько, что открытие следующего периода занимает пару часов.
Соответственно про бекапы средствами 1С-ки можно забыть, т.к. пересчет итогов за 10 лет, который делается при загрузке данных делается несколько дней.

в) Куча тормозных алгоритмов использующих запросы в цикле, разименовывание через десять точек, итп.