Имя: Пароль:
LIFE
Как страшно жить
OFF: За такой код надо пальцы пообрывать. Крик души.
🠗 (Волшебник 10.06.2013 11:04)
, , ,
0 megabax
 
10.06.13
09:14
1. Нормальный код 52% (22)
2. ТС нервный 21% (9)
3. Плохой код 14% (6)
4. кг/ам 7% (3)
5. отрубать пальцы 5% (2)
Всего мнений: 42

Вот никак не пойму, почему многие горе прогеры пишут такой код (даже 1С, млин, этим грешит):
       Если ВидВыгрузки = 2 Тогда
           Запрос.Текст = Запрос.Текст + "
           |    И Ссылка В ИЕРАРХИИ (&Номенклатура)";
           Запрос.УстановитьПараметр("Номенклатура",ТаблицаДляВыгрузки.ВыгрузитьКолонку("Номенклатура"));
       КонецЕсли;    
нельзя что ли писать нормлаьно: сперва сформировать тектс запроса, что бы его удобно было править конструктором, а потом в зависимости от условий править его через СтрЗаменить????
182 IШаман
 
10.06.13
10:24
(172) ВУырезать гланды через задний проход - несоменно удел виртуозов, но я бы предпочел традиционный метод.
183 NcSteel
 
10.06.13
10:24
(170) То есть получить запрос из построителя не возможно?
185 IШаман
 
10.06.13
10:25
(184) Он поступил по методике - "Сам дурак"
186 AlexITGround
 
10.06.13
10:25
(156) ну времени на совершенство и безукаризненное написание кода + замер производительности обычно не хватает, тебе как франчу это должно быть знаково
187 IШаман
 
10.06.13
10:26
(186) Но переделывание, и исправление ошибок времени уйдет гораздо больше - и не только твоего.
188 PR
 
10.06.13
10:26
(181) У нас видимо разные (0).
Я вот в (0) прочитал следующее "...что бы его удобно было править конструктором...".
189 Эмбеддер
 
10.06.13
10:26
(184) в связи с этим вопрос у ТС какое образование?
190 Fish
 
10.06.13
10:27
(184) Ты вообще читаешь посты, на которые я отвечаю или нет? Это было к вопросу о том, что надо думать о других программистах. Когда я пишу код, я пишу его без учёта того, что его будет править программист ниже меня уровнем. Соответственно, я считаю, что если я могу разобраться в чьём-то коде, то и у других не возникнет трудностей при правке моего.
191 NcSteel
 
10.06.13
10:27
(186) Странно у меня хватает.
192 PR
 
10.06.13
10:28
(186) Да. Но нужно прививать себе хорошие манеры программирования :))
193 Lys
 
10.06.13
10:28
(172) +100
Добавлю - если есть выбор между читабельностью запроса и его производительностью, лично я выберу производительность.

Простейший пример - в зависимости от входных условий добавлять или не добавлять объединение запросов к двум различным таблицам-источникам данных, без "сложения" текста запроса в коде тут не обойтись.

А если кто не умеет читать тексты запроса без конструктора, и не умеет "ловить" готовый текст запроса при отладке - это, право, его личные трудности.

Нормальный код
194 NcSteel
 
10.06.13
10:28
(190) Причем тут уровень.

Ты сам можешь в нем через пару лет заблудиться.
195 AlexITGround
 
10.06.13
10:29
(191) я стараюсь сразу писать нормальный код, но через месяц бывает рефакторю
196 Fish
 
10.06.13
10:29
(194) Пока на моей памяти ни разу такого не было. ЧЯДНТ?
197 AlexITGround
 
10.06.13
10:30
(192) такое дело только с  опыт, именно поэтому я и спросил у ТС какой опыт у автора кода, но ответа не поступило, поэтому нет смысла от данной всей дискуссии
198 NcSteel
 
10.06.13
10:30
(196) ну я рад за тебя..... Что в общем не меняет простых требований к коду.
199 PR
 
10.06.13
10:31
(190) Ну не знаю. Я прочитал дословно "Я полагаю, что у нормального программиста не возникнет никаких трудностей с кодом типа (0).".
А до этого было предложение, что типа можно и разжевывать, чтобы код смог осилить каждый быдлокодер-недоучка.
Может у меня с логикой что-то. Но тут вроде два простых предложения, элементарный логический вывод. Не?
200 nbIx
 
10.06.13
10:31
(0) То что ты не умеешь писать запросы без конструктора, это твои проблемы.

Нормальный код
201 IШаман
 
10.06.13
10:31
(190)Разобраться конечно можно, но работать с таким кодом просто неприятно.
202 Кремень
 
10.06.13
10:32
по моему СтрЗаменить тоже не панацея, а если запрос большой и однотипные куски в нем, и где то надо Заменить а где то нет. Так что по моему это более универсальный подход

Нормальный код
203 Fish
 
10.06.13
10:33
(198) Ещё раз каких требований? Чтобы его мог править после тебя программист? Так я это требование всегда выполняю, даже на комментарии не скуплюсь :) А если кто-то не может осилить исправить элементарный запрос без конструктора - то тут извините, требования ни при чём. К программистам тоже есть одно простое требование - он должен быть программистом :))
204 dmpl
 
10.06.13
10:33
(183) Повторяю еще раз - построитель тормозит. Например, при реакции на действие юзера это неприемлемо. Да и вообще, зачем тормоза там, где можно обойтись без них?
205 Fish
 
10.06.13
10:35
(201) Если неприятно работать с кодом, тогда не надо программировать вообще :)
206 Junior1s
 
10.06.13
10:35
зачем усложнять.

Нормальный код
207 IШаман
 
10.06.13
10:35
Хорошая ветка, весьма показательно - сразу четко видно, кто есть кто.
208 megabax
 
10.06.13
10:35
(197) У меня опыт более 10 лет, к вашему сведению.
210 PR
 
10.06.13
10:36
(205) Обычно, когда неприятно работать с человеком, то с ним расстаются :))
211 megabax
 
10.06.13
10:36
(194) Вот это точно, в точку сказано!
212 PR
 
10.06.13
10:37
(208) Я, кстати, не удивлен.
Я о таких "мелочах" не так давно начал думать :))
213 Джинн
 
10.06.13
10:37
Нормальный код. Замена ничуть не лучше в плане чтения текста запроса. Особенно когда замен несколько и они по условию.

Нормальный код
214 IШаман
 
10.06.13
10:38
Вот кстати сразу можно сказать у кого есть норм профильное образование, а у кого его нет.
215 IШаман
 
10.06.13
10:38
(213) И то и другое плохо, лучше обходиться без замен и динамически изменяемого текста запроса.
216 rutony
 
10.06.13
10:39
Нормальный код, бывает гораздо хуже. В тех же типовых вставками в середине кода.
Да и в конце концов, кто мешает после формирования текста, сделать точку остановки и копирнуть итоговый запрос...

Я обычно делаю вставки под замену, что то типа Истина = Истина, 1 = 1 и тд...

Нормальный код
217 Эмбеддер
 
10.06.13
10:40
(216) всегда найдется такой "суперпрограммист", который скажет что 1=1 это копрокод
218 IШаман
 
10.06.13
10:41
(217) Для этого не надо быть суперпрограмиистом.
219 Джинн
 
10.06.13
10:42
(215) Далеко не всегда это возможно. И далеко не всегда это оправдано.
220 Эмбеддер
 
10.06.13
10:42
(218) вот кто критикует чужой код без оснований на то, считая себя суперпрограммистом, у того и нет профильного образования
221 Иде я?
 
10.06.13
10:42
Автору пальцы отрубать не надо, это не решит проблемы.
ЗА СтрЗаменить надо химическую кастрацию делать.
Ибо порождает кучу ошибок и такой калокод трудно поддерживать.

Нормальный код
222 IШаман
 
10.06.13
10:43
(219) В случае приведенном в (0) Вполне возможно, а оправдывается это простой систематизацией кода.
223 Серго62
 
10.06.13
10:44
(215) +1
Динамический текст - зло.
224 Exec
 
10.06.13
10:44
так удобней при отладке, особенно, когда запрос меняется в куче мест. стрзаменить - имхо хуже

Нормальный код
225 AlexITGround
 
10.06.13
10:44
(208) я просил назвать опыт автора кода!!! третий раз пишу, до ТС пока не долетело, цирк какой-то
226 IШаман
 
10.06.13
10:44
(220) критиковать публично - это плохо, тут полностью согласен, особенно когда в качестве решения предлагается примерно такой же вариант.
227 Эмбеддер
 
10.06.13
10:45
ТС, опыт 10 лет понятно. образование какое?
228 megabax
 
10.06.13
10:45
(225) к сожалению, я не владею информацией об опыте автора кода.
229 pumbaEO
 
10.06.13
10:45
Почему не Построитель используется?

кг/ам
230 Турист
 
10.06.13
10:46
на вас так посмотришь, так все за конструктор, а на собеседованиях требуете запрос писать карандашом на листке бумаги ))
231 AlexITGround
 
10.06.13
10:46
(227) речь шла не об опыте ТСа, я так понимаю код не его
232 megabax
 
10.06.13
10:46
(227) высшее
233 Эмбеддер
 
10.06.13
10:47
(232) ну и что что высшее? на программиста учился?
234 AlexITGround
 
10.06.13
10:47
(228) ну так о чем разговор, может, автор вчера книгу Радченко прочел, а сегодня ему задачу поставили - тогда нормальный код, а Вы начали дискуссию, а если бы это прогер с 10-летним стажем написал - о тогда миста его порвала бы на ссаные тряпки
235 AlexITGround
 
10.06.13
10:49
(233) причем здесь профильное или нет, я вообще учитель математики по образованию, сегодня сижу в качестве технического писателя и понимаю, что чувак с профильным образованием сосал бы ложку сейчас.
236 megabax
 
10.06.13
10:50
(233) да
237 lucifer
 
10.06.13
10:50
(0) "от условий править его через СтрЗаменить"
А по мне так это не нормально, и за такой код пальцы надо вырывать.

Нормальный код
238 Эмбеддер
 
10.06.13
10:51
(235) математика это почти профильное образование. но откуда взязась такая самоуверенность насчет других специалистов?
239 AlexITGround
 
10.06.13
10:51
пользователь нынче такой грамотный, что не напиши ему руководство пользователя, не внеси в трудовые инструкции и не возьми с него подпись о получении РП - все, ничего и делать не станет в программе, всегда скажет, что ему не показали, не доучили, не полизали , где надо
240 Маркусс
 
10.06.13
10:52
Тут интереснее. Имхо, просто шедевр.

Процедура ЗагрузитьРТУ(Элемент)
   Если РТУ.Количество()>0 Тогда
       РТУ.Очистить();
   КонецЕсли;
   ДТЗП     = Документы.РеализацияТоваровУслуг;
   Вка  = ДТЗП.Выбрать(НачалоДня(ДатаРТУ),КонецДня(ДатаРТУ));
   Ном=0;
   Пока Вка.Следующий() Цикл
       НовДок = Вка.Ссылка;
       Если Не НовДок.Проведен  Тогда Продолжить;КонецЕсли;
       Если НовДок.ПометкаУдаления  Тогда Продолжить;КонецЕсли;
   //    Если НовДок.Самовывоз  Тогда Продолжить;КонецЕсли;
       //Сообщить("НовДок="+НовДок);
       ТекущаяДоставка = новаИнтеграция.ПолучитьМестнуюДоставкуПоОснованию(НовДок);
       Если ТекущаяДоставка = Неопределено Тогда
           МестнаяДоставка = новаИнтеграция.ПолучитьЗавершеннуюМестнуюДоставкуПоОснованию(НовДок);
       Иначе
           МестнаяДоставка = ТекущаяДоставка;
       КонецЕсли;
       Если МестнаяДоставка <> Неопределено Тогда Продолжить;КонецЕсли;
       СЗПр=""+НовДок.Контрагент+" "+НовДок.Номер;
       РТУ.Добавить(НовДок,СЗПр,Истина);
       Ном=Ном+1;
   КонецЦикла;
   ЭлементыФормы.ИнфСостояние.Заголовок="Всего РТУ для перевода в логистику: "+Строка(ном);    
КонецПроцедуры
   
   //************************************************************
   
Процедура ВЛогистику(Элемент)
   Если РТУ.Количество()>0 Тогда
       Для Каждого Эл Из РТУ Цикл
           Если Не Эл.Пометка Тогда Продолжить;КонецЕсли;
               Доки=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Эл.Значение.Номер,КонецДня(ДатаРТУ));
               Док1=Доки.ПолучитьОбъект();
               Сообщить(Док1);
               Если Доки<>Неопределено Тогда
                   Док1.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                   
                   Сообщить("Проведена "+Строка(Док1));
               
               КонецЕсли;
       КонецЦикла
   КонецЕсли;    
КонецПроцедуры
241 Джинн
 
10.06.13
10:52
О, как всегда все закончилось прикладной фаллометрией!
Миста славится традициями.
242 Эмбеддер
 
10.06.13
10:52
(236) не назвал даже специальности. что ж значит я не прав и придется поверить на слово
243 AlexITGround
 
10.06.13
10:53
(238) оттуда и самоуверенноть, так как проще обучить 12 летнего мальчишку, чем тетю в 45 лет, особенно если она до этого работала с дос-программами
244 bolder
 
10.06.13
10:53
(0)Вполне нормальный код, если запрос очень длинный со многими вставками- уже конструктор не используется, так что без разницы, правится сразу текст.Преимущество в одном- все условия близко к месту использования.Конечно можно это поместить в &УсловияПоНоменклатуре и потом искать где то на 64 странице текста..

Нормальный код
245 Птица
 
10.06.13
10:54
какое-то слишком кровожадное название у ветки.
предпочла бы его не видеть
к сожалению, отключить секцию - не выход, поскольку интересует соседняя ветка в этой же секции.
246 AlexITGround
 
10.06.13
10:54
(244) код в (0) легко читается - его плюс в этом, хотя многие из нас сделали бы его по-другому
247 Эмбеддер
 
10.06.13
10:54
(243) не заметил возраст, извените))))
248 sttt
 
10.06.13
10:55
(116) что мешает на время отладки за комментировать этот участок:

...
   |ПО
   |    Док.Номенклатура = РезервыПоДокументу.Номенклатура
   //|    //СОЕДИНЕНИЕ_Характеристика_РезервыПоДокументу

   //|    //СОЕДИНЕНИЕ_Серия_РезервыПоДокументу

   //|    //Док_УсловиеДокументРезерва


...

развели тут куча мала из ничего))))
249 Bigbro
 
10.06.13
10:55
(80) в семерке конструктор таки есть.
250 Deal with it
 
10.06.13
10:55
воу воу,ТС, палехче!

ТС нервный
251 Fish
 
10.06.13
10:56
(210) Код и человек это две разные вещи. Код - это то, с чем программистам приходится иметь дело. Такая уж у них профессия. Но тут твоя мысль совпадает с моей: если тебе неприятно иметь дело со своей профессией, то надо менять профессию.
252 jsmith82
 
10.06.13
10:56
Согласен. Я обычно делаю замены в конце

Плохой код
253 PR
 
10.06.13
10:57
(241) Мне кажется, ты удивишься, если поищешь упоминания про фаллосы и производные в этой ветке до твоего поста.
К чему все сводить к фаллосам?
254 AlexITGround
 
10.06.13
10:57
(247) гл. бухи скидку на мой возраст мне не делают, а требуют по полной, так что - не обольщайтесь, коллега, когда с моим возрастом начинают Вас уважаемого подсиживать, тем более, что у меня Ведущий, вчера вакансию видел - возраст до 30 требовали, шокирован был
255 PR
 
10.06.13
10:58
(251) Ни разу не совпадает. В каком месте?
256 Джинн
 
10.06.13
11:00
(253) Вы меня спрашиваете? Вы спросите тех, что начал соревноваться в длине этого прибора.
257 Fish
 
10.06.13
11:02
(255) Ты написал: "когда неприятно работать с человеком, то с ним расстаются", я написал: "когда неприятно иметь дело с профессией, то надо менять профессию". Суть от этого не меняется.
258 PR
 
10.06.13
11:02
(256) Коллега, как корабль назовете, так он и будет видеться.
Пока что с вашей легкой руки ветка с дискуссией представлена как "прикладная фаллометрия".
259 Steini
 
10.06.13
11:04
динамически собирать текст запроса лучше всяких стрзаменить. учитесь читать код

Нормальный код
260 Эмбеддер
 
10.06.13
11:04
(254) это конечно выгодное качество уметь себя продать
261 PR
 
10.06.13
11:05
(257) А когда неприятно пить теплую водку, то ее не пьют или охлаждают, да.
Только какое это отношение имеет к моей мысли "Когда неприятно работать с человеком, то с ним расстаются"?
Я хотел сказать, что если человек думает только о том, что ему комфортно, а на остальных начхать, то есть шанс, что с ним не захотят работать.
262 bolder
 
10.06.13
11:12
(245) Неверное голосование предлагаете.У на только ТС нервный)).
263 sttt
 
10.06.13
11:15
дурдом, вот так я ходил на собеседование)))

ТС нервный
264 Fish
 
10.06.13
11:21
(261) Согласен. Но речь шла немного о другом. Всем ты всё равно комфортно не сделаешь, как ни старайся, как никогда не напишешь код, который устроит любого, т.к. всегда найдётся тот, кто его не осилит и будет кричать и возмущаться, как ТС.
265 PR
 
10.06.13
11:37
(264) Это не повод делать хреново. Нужно стараться делать лучше.
266 Fedot200
 
10.06.13
11:42
Раньше использовал СтрЗаменить() теперь не пользую. Делаю или как в 0 или как в этом запросе... кстате оцените норм или нет?

УслДог = "";
   Запрос = Новый Запрос;
   Если ЗначениеЗаполнено(ВыбДоговор) Тогда
       УслДог = " И РеализацияТоваровУслуг.ДоговорКонтрагента = &ВыбДоговор";
       Запрос.УстановитьПараметр("ВыбДоговор", ВыбДоговор);
   КонецЕсли;    
   Запрос.Текст =
   "ВЫБРАТЬ
   |    РеализацияТоваровУслуг.Сделка
   |ПОМЕСТИТЬ ТЗЗаказов
   |ИЗ
   |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
   |ГДЕ
   |    РеализацияТоваровУслуг.Проведен = ИСТИНА
   |    И РеализацияТоваровУслуг.Сделка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
   |    И РеализацияТоваровУслуг.Контрагент = &ВыбКонтрагент" + УслДог +"
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    СтатусЗаказа.Статус,
   |    СтатусЗаказа.Сумма,
   |    СтатусЗаказа.СуммаОплаты,
   |    СтатусЗаказа.ЗаказПокупателя
   |ИЗ
   |    РегистрСведений.СтатусЗаказа КАК СтатусЗаказа
   |ГДЕ
   |    СтатусЗаказа.ЗаказПокупателя В
   |            (ВЫБРАТЬ РАЗЛИЧНЫЕ
   |                ТЗЗаказов.Сделка
   |            ИЗ
   |                ТЗЗаказов)
   |    И СтатусЗаказа.Сумма <> СтатусЗаказа.СуммаОплаты
   |
   |УПОРЯДОЧИТЬ ПО
   |    СтатусЗаказа.ЗаказПокупателя.Дата";

Нормальный код
267 Эмбеддер
 
10.06.13
11:51
(266) зря. щас набегут и скажут что это кривой код
(264) как кто-то здесь справедливо говорил "никогда не оправдывайся"
268 Fedot200
 
10.06.13
11:51
+(266) да, конструктор не откроет, но достаточно удалить вот это " + УслДог +" и конструктор откроет.
ИМХО СтрЗаменить не комильфо и не всегда возможно использовать.

ЗЫ
ТС привыкай к такому коду и бросай СтрЗаменить в топку
269 Fedot200
 
10.06.13
11:51
(267) а мне нравится :-)
270 AlexITGround
 
10.06.13
11:52
(266) у тебя работает - Да, быстро - Да. Так зачем это тут вбрасывать? Программирование - это вполне себе творческая работа, в рамках ограничения написания кода.
271 Fedot200
 
10.06.13
11:53
(270) Просто хотел сказать что так лучше условие писать чем СтрЗаменить()
272 Fish
 
10.06.13
11:56
(265) Что значит хреново? Для одного один и тот же код будет хреновым, для другого - нормальным. Яркий пример - ТС. И на кого предлагаешь ориентироваться? Я привык всё-таки ориентироваться на какие-то общепринятые правила. Если кто-то их не понимает, то с какого перепуга мне надо ориентироваться на него?
273 PR
 
10.06.13
12:06
(272) Ориентироваться на здравый смысл ессно. А не записывать всех, кто пользуется конструктором запроса в быдлокодеры-неудачники.
Желание открыть текст запроса конструктором здраво? Здраво.
Нежелание изгаляться с текстом таким образом, чтобы конструктор его не ломал, но при этом можно было потом заменить в нем что-нить здраво? Тоже здраво.
То есть есть какие-то за и против для обоих вариантов. И нужно учитывать здравые аргументы для принятия решения о том, как в каждом конкретном случае сделать. А не стричь все под одну гребенку.
274 AlexITGround
 
10.06.13
12:06
(272) утрируешь уже
275 PR
 
10.06.13
12:08
+(273) С чего бы, кстати, соединение текста запроса по кускам стало общепринятым правилом, а все остальное кустарными быдлокодерскими зарисовками?
276 megabax
 
10.06.13
12:09
(266)
вот это место
 |    И РеализацияТоваровУслуг.Контрагент = &ВыбКонтрагент" + УслДог +"
в твоем коде очень плохо, конструктором не откроешь, всет таки лушче было бы через СтрЗАменить сделать
277 Flyd-s
 
10.06.13
12:13
Будем надеяться, что автор никогда не откроет ЗУП
278 Fedot200
 
10.06.13
12:40
(276) это очень простенький запрос, а есть запросы на несколько страниц с кучей временных таблиц и т.д. и т.п. И СтрЗаменить очень опасно там применять.

И вообще - хочется универсальности. А СтрЗаменить не всегда можно использовать, а значит нет универсальности.
279 Fedot200
 
10.06.13
14:40
(276) на тебе пример использования СтрЗаменить :-)
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ " + СтрЗаменить(Строка(Топ),Символы.НПП,"") + "
                  |    ХозрасчетныйОбороты.СуммаОборотДт,
                  |    ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
                  |    ХозрасчетныйОбороты.Субконто1
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, , , КорСчет = &КорСчет, ) КАК ХозрасчетныйОбороты
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    СуммаОборотКт УБЫВ";

Где Топ - числовой реквизит на форме
ЗЫ Конструктор тоже не откроет
ЗЫЗЫ
Предложи свой вариант, чтобы можно было с формы рулить сколько мне нужно строк выбирать, плиз.
280 magicSan
 
13.06.13
17:26
нормальный такой код и конструктор из примера должен работать, я сам так условия добавляю причем сам люблю конструктор и им пользуюсь

Нормальный код
281 magicSan
 
13.06.13
17:30
(279) "первые 0" после запроса заменяй на значение из формы