Имя: Пароль:
1C
1С v8
Типовая. Пофигу любые правила кода...Или?
,
0 Snovy
 
01.08.11
23:37
Добрался до кода:

Функция ПолучитьСтавкуНДС(СтавкаНДС) Экспорт

   Если СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120 Тогда
       Возврат 20;

   ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110 Тогда
       Возврат 10;

   ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ИЛИ СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118 Тогда
       Возврат 18;

   КонецЕсли;

   Возврат 0;

КонецФункции // ПолучитьСтавкуНДС()

Эта функция используется во всех типовых. Нарушены все мыслимые академические правила построения условия ЕСЛИ (в начале должно быть наиболее часто встречающееся условие). Ставка 18 используется в 99% случаев, но стоит в условии последней. Никогда не используемая ставка 20% в условии стоит первой. Т.е. данная функция всегда тратит драгоценные милисекунды на проверку того, чего точно нет, а потом проверяет то, что очень редко встречается...

Так теперь модно? Или время выполнения любого запроса или "второй точки" несоизмеримо больше, что на такие мелочи можно не обращать внимания? Поясните, гуру от 1С, что я перестал понимать?
1 Krendel
 
01.08.11
23:40
не ной, купи лучше блейд сервер
2 Snovy
 
01.08.11
23:42
(1) Это пить можно?
3 acsent
 
01.08.11
23:42
Сделай замер на миллионе итераций
4 GreyK
 
01.08.11
23:43
Это 8ка, её дописывают китайцы на нетбуках.
5 mikecool
 
01.08.11
23:43
голосую - пофигу ))
6 Snovy
 
01.08.11
23:44
(3) Вы уже сделали такой замер?
7 acsent
 
01.08.11
23:44
(6) Зачем?
8 Grusswelle
 
01.08.11
23:45
(0) Твой вариант?
9 GreyK
 
01.08.11
23:49
(8) В (0) про поднять условие со ставкой 18 повыше.
10 Snovy
 
01.08.11
23:49
Еще круче (типовой документ Поступления товаров и услуг):

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

....

   УчетНДС.СинхронизацияПометкиНаУдалениеУСчетаФактуры(ЭтотОбъект, "СчетФактураПолученный");

....    
   УчетНДС.СинхронизацияПометкиНаУдалениеУСчетаФактуры(ЭтотОбъект, "СчетФактураПолученный");

....

КонецПроцедуры // ПередЗаписью

Это что бы наверняка? А там по три запроса в процедуре...

(8) Ну хотя бы в Если сначала проверить 18, потом 10, потом все остальное...
11 Garkin
 
01.08.11
23:53
(0) В момент написания функции какая ставка использовалась наиболее часто?
12 GreyK
 
01.08.11
23:57
(11) Дети рождаются, старики помирают, процедуры живут :)
13 Asmody
 
01.08.11
23:59
(0) да это цветочки! а сама процедура не смущает ни сколько?
14 iamnub
 
02.08.11
00:00
Удивлен, увидев автора темы.

Не ожидал.
15 iamnub
 
02.08.11
00:00
(13)
Там функция, программист...
16 Snovy
 
02.08.11
00:01
(11) Ну если это наследство беты-УПП или первой УТ, тогда "ой"... Но тем не менее... Что-то поменялось в консерваториях? Рефакторинг и оптимизация кода только на запросах, на мелочи теперь не нужно обращать внимания? Дьявол, он обычно в деталях...
17 Snovy
 
02.08.11
00:03
(14) Да в отпусках все, вот приходится самому лезть туда, куда ни в жизни не полез бы. Как все интересно... Просто хочется узнать побольше по мелочам, а то как-то отставать стал от трендов...
18 Asmody
 
02.08.11
00:04
(15) а разделение на процедуры и функции — это вообще убогая паскалевская ушлёпка.
19 Fragster
 
гуру
02.08.11
00:14
20 ОбычныйЧеловек
 
02.08.11
00:14
(0)что позволено юпитеру не позволено быку.
Ни одна типовая не пройдет проверку на "1С совместимо" - все правила придуманы для кого угодно - только не для 1С.
21 ice777
 
02.08.11
00:19
(0) код, который тебе не виден, пожирает 99% ресурсов.)
22 hhhh
 
02.08.11
00:33
(0) всё-таки не 99%. БезНДС чаще используется.
23 Alexandr Puzakov
 
02.08.11
00:47
(0) зачем гоняться за миллисекундами, если пользователь "прироста" совершенно не ощутит. Получение ставки используется когда? Очевидно, при интерактивном изменений данных табличной части.

Для какой-такой нужды гоняться за производительностью там, где это совершенно не требуется? Дань моде?

Стоит понимать, что критическими участками является код, в котором происходит чтение данных, и запись данных или массовая обработка данных. И если уж на то пошло, то в типовых есть гораздо более серьезные "прощеты", ну или как их там лучше назвать.
24 IamAlexy
 
02.08.11
02:27
(0) и?
в очередной раз всем показал что 1С г.вно и писали ее идиоты?

ну так предложи альтеранативу... чтобы со всех сторон было идеально...
25 Alexandr Puzakov
 
02.08.11
03:11
(24) одной процедурке придумывать более стройную альтернативу многие могут, но вот стоит только делу дойти до более сложного, нежели написание одной процедуры (например, создание нового документа), как код этих самых "критиков 1С" начинает страшнеть, сыпаться и превращаться в УГ. Вот порой видишь код внедряльщиков, и думаешь: "Мама дорогая! Лучше бы я этого не видел.", и по сравнению с ним код типовых кажется вообще конфеткой.
Программист всегда исправляет последнюю ошибку.