![]() |
![]() |
![]() |
|
Чем опасны (вредны) метки? | ☑ | ||
---|---|---|---|---|
0
Kiber
10.07.08
✎
22:14
|
Все до единого программисты говорят что метки вредны.
Кто-нибудь мог-бы точно объяснить чем вредны метки в 77 (кроме непристойности кода)? И в догонку тому, кто использовал метки: можно-ли в переходе по метке использовать переменные? |
|||
1
France
10.07.08
✎
22:17
|
это стереотип, который вбили в голову в эпоху перехода к структурном программирования в 60-х годах прошлого века.
Но, тем не менее, использовать метки не стоит - усложняеться восприятие кода. Это, пожалуй, все: в итоге любой код компилируется в машинный код, где целая куча меток (безусловных переходов) |
|||
2
Mikeware
10.07.08
✎
22:18
|
уж не 1986-87 ли ты года рождения?
|
|||
3
H A D G E H O G s
10.07.08
✎
22:19
|
(0) Ничем не вредны. Скажу вам по секрету - ваш процессор только ими и оперирует. Все это предрассудки..
P.S. Видел код, еще семерочный, активно метками заполненный; чтоб тот прог всю жизнь на стипендию жил... |
|||
4
H A D G E H O G s
10.07.08
✎
22:20
|
(1) надо же, как совпали, я вас не видел, честно...
|
|||
5
Doomer
10.07.08
✎
22:21
|
(0) Я использовал метки, когда программировал на ассемблере. В языках высокого уровня можно обойтись без меток. По моему они усложняют чтение кода.
"И в догонку тому, кто использовал метки: можно-ли в переходе по метке использовать переменные?" Я когда то писал программку для какого-то устойства на ассемблере, так у меня адрес перехода вычислялся. |
|||
6
FreeFin
10.07.08
✎
22:23
|
Когда писАли в машинных кодах, то никаких процедур иль фУкций в принципе не было. Переходы оформляли метками. Жисть шла, придумкали языки, жисть шла, придумали языки ооп, жисть шла, придумали 1цы, но директивы безусловного перехода оставили, не для дебилов, а для тех, кто понимает, что такое помнить, с чего начиналось )))
|
|||
7
vde69
10.07.08
✎
22:26
|
использование меток - плохой тон (стиль) программирования,
бывают РЕДКО когда нужно... за посление 5 лет 1 раз использовал. Главное по чему не имеет смысл использовать их - отсутствие сплошного длинного кода (сейчас бьют на процедуры и т.д.) |
|||
8
France
10.07.08
✎
22:26
|
(6) самые лучше метки - метки в ООП, и, безусловно, самые лучшие программисты - программисты, которые в ООП сумели их использовать))
|
|||
9
France
10.07.08
✎
22:28
|
(7) "бьют на процедуры" по другому "структурное программирование"))
|
|||
10
Serjant
10.07.08
✎
22:29
|
Опасны. Переменные сохраняются.
P.S. Опасны если пишешь "Если Нет=1 Тогда Перейти Маша", однако если в первом условии подразумевается жена и переход на Машу точный и своевременный то жена сохраняется, но возможно появятся новые данные от перехода на ~Маша. |
|||
11
Serjant
10.07.08
✎
22:30
|
(10) к (0)
|
|||
12
Kiber
10.07.08
✎
22:35
|
Всем огромное спасибо.
Serjant, а если метка расположена в рамках одной процедуры, то при завершении процедуры локальные переменные убьются? |
|||
13
quest
10.07.08
✎
22:36
|
(0) а на ночь читать здесь http://www.wasm.ru/article.php?article=1014002
|
|||
14
France
10.07.08
✎
22:36
|
не убьются, по погибнут естесственной смертью..
|
|||
15
Kiber
10.07.08
✎
22:38
|
(12) первое "метка" понимать как "метки и переходы"
|
|||
16
Господин ПЖ
10.07.08
✎
22:40
|
а я тут недавно использовал... 1 раз за 5 лет
Доктор, я буду ходить?! |
|||
17
Serjant
10.07.08
✎
22:43
|
(12) Не убится не могут, могут согласоватся и убить процесс....
|
|||
18
Медвед1Сник
10.07.08
✎
22:47
|
От частого употребления меток может развиться диабет и сердечная недостаточность. Не стоит злоупотреблять.
|
|||
19
Мохнатые ладошки
10.07.08
✎
23:02
|
не опасны, всегда их использую. ага...
|
|||
20
France
10.07.08
✎
23:05
|
потому и проблемы с ладошками
|
|||
21
Мохнатые ладошки
10.07.08
✎
23:09
|
(20) хе-хе... никаких проблем.
ЗЫ. смайлик забыл поставить... :) |
|||
22
Дядя Васька
10.07.08
✎
23:30
|
(0) На тебе шедевр программерского искусства:
еще вопросы есть? :) |
|||
23
syktyk
11.07.08
✎
00:03
|
(22)Тут метки невнятно названы.
В Фортране был вычисляемый goto. Класная вещь. И понятная. |
|||
24
Kiber
11.07.08
✎
00:25
|
(22) спс)
На самом деле, есть)) Можно-ли в конструкции "Перейти ~(....);" использовать переменные для определения метки на которую мы хотим перейти? |
|||
25
Kenny Live
11.07.08
✎
03:52
|
Ниразу не пользовался метками, всегда недоумевал зачем их оставили в 1цы
|
|||
26
чупа
11.07.08
✎
04:33
|
Объясняю попу лярно.
Программный код он одновременно и набор инструкций некоему "процессору", он же документация этого действа. И ставить метки это делать некачественную документацию. Использование меток общепризнано как явление ухудшающее восприятие кода. Аналогично некачественном уназванию переменных, процедур и функций, и т.д. Чем грозит такая такая "некачественная документация"? Естественно, увеличивает накладные расходы - понадобится гораздо больше времени и трудозатрат. Код должен быть такой чтобы ты его мог по телефону рассказать и на том конце поняли (с). Например, расскажите (22). "Вот тут мы переходим на м, а что такое м я тебе потом расскажу". |
|||
27
у лю 427
11.07.08
✎
05:47
|
идиоты... метки крайне опасны...
|
|||
28
ЛНТ
11.07.08
✎
05:56
|
использовать метки - всё равно, что в русскую рулетку играть
при совпадении частоты следования в метке битов установленных в 1 с частотой процессора, может наступить резонанс и кристалл разрушится |
|||
29
у лю 427
11.07.08
✎
06:00
|
а еще метки плохо уплотняются при вращении диска и на диск входит мало данных...
|
|||
30
ЛНТ
11.07.08
✎
06:19
|
да, это потому, что однажды попав на диск хрен эту метку потом сотрешь,
хотя говорят, что в сервисных центрах диски разбирают и метки специальным растворителем стирают |
|||
31
Зеленый Кот
11.07.08
✎
06:32
|
(30) +1
|
|||
32
FanatToNight
11.07.08
✎
07:52
|
Как это ни позорно, создал я один документ году так в 2003-м, в коде, каюсь, использовал метку в количестве 1 (одна штука)..
простите, если можете!!.. век помнить буду вашу доброту!! :-)) |
|||
33
FanatToNight
11.07.08
✎
07:58
|
образец эквивалента метки, довольно часто встречающийся в коде 7-ки:
Пока 1=1 Цикл //тута место метки ..... Ежели там что-то сложилось Тогда Прервать; Иначе // а здеся для меточного варианта - посылка на метку КонецЕжели; КонецПокаПока; //для метки - лишнее ре-мю-зе: А с меткой-то код короче.. |
|||
34
Яндекс
11.07.08
✎
08:03
|
(33)это что такое ты сотворил?
|
|||
35
ado
11.07.08
✎
08:06
|
Последний раз использовал метки когда писал на Бейсике для Ямахи в 3-м классе.
|
|||
36
ado
11.07.08
✎
08:07
|
(34) А это частенько встречается в типовых :(
|
|||
37
ЛНТ
11.07.08
✎
08:07
|
(33) это что за бред?
|
|||
38
FanatToNight
11.07.08
✎
08:10
|
(34) шюточный код.. думал, вы поймете :)) если-бы кто-то просил совета, я-бы написал нормально, без шутовства :))
(37) не надо грубить.. мы сами грубияны (с) :)) |
|||
39
Зеленый Кот
11.07.08
✎
08:10
|
так типовые тоже студенты пишут
|
|||
40
ado
11.07.08
✎
08:13
|
(39) Студенты ... мну от этого еще в школе отучили.
|
|||
41
ado
11.07.08
✎
08:15
|
Хотя, грешен, "прервать" по доп. условию изредка использую ...
|
|||
42
Зеленый Кот
11.07.08
✎
08:16
|
прервать не является грехом
грехом являются метки |
|||
43
Зеленый Кот
11.07.08
✎
08:17
|
(с) Великий Эдгар Дийкстра
|
|||
44
Яндекс
11.07.08
✎
08:17
|
(42)прервать тоже не есть гуд с точки зрения читабельности кода
|
|||
45
FanatToNight
11.07.08
✎
08:17
|
(34) (37) блин..
Вариант без метки Пока 1=1 Цикл ..... Если [уловие завершения] Тогда Прервать; КонецЕсли; КонецЦикла; Эквивалент с меткой ~М: Если [условие НЕ завершения] Тогда Перейти ~М; КонецЕсли; Так устраивает? - тогда порядок Не устраивает? тогда (37) - пиши сам. |
|||
46
ado
11.07.08
✎
08:19
|
(44) Не гуд, особенно если это как в (33).
|
|||
47
Gepard
11.07.08
✎
08:22
|
(22) спасибо, хоть увидел, как их объявлять :))
|
|||
48
ЛНТ
11.07.08
✎
08:24
|
(45) так сразу бы и сказал, что ты студент
|
|||
49
FanatToNight
11.07.08
✎
08:25
|
(44) если прогер фикси, и пишет в основном под себя, то о читабельности может и не заботиться. Кто кроме него читать будет? последыш? - так фикси меньше всего о последствиях думает :))
а вот если код во всеувиденье - тут надо позавботиться о читабельности и о бантиках с рушечками.. короче, красиво надо писАть :)) |
|||
50
FanatToNight
11.07.08
✎
08:26
|
(48) так что, можно тащить зачетку? :))
|
|||
51
ado
11.07.08
✎
08:27
|
(49) Дурно написанный код сам через пару месяцев прочитать не сможешь.
(47) Кстати да, я тоже не знал ;-) |
|||
52
FanatToNight
11.07.08
✎
08:29
|
(51) это точно. уловил сей момент году так в 2001-м, когда пришлось переписывать кусок заново.
Теперь подробно комментирую, научен горьким опытом :)) |
|||
53
ДенисЧ
11.07.08
✎
08:48
|
Так... Увидел ветку, вставлю свой дайм
Метки НЕ ОПАСНЫ, когда программист знает, что делает. Не надо воспринимать Дийкстру как догму. Его надо воспринимать как рекомендации. Существуют случаи, когда метки и гоуты позволяют писать существенно (sic!) более читаемый код, чем без них. |
|||
54
Яндекс
11.07.08
✎
08:50
|
(53)пример
|
|||
55
ДенисЧ
11.07.08
✎
08:54
|
(54) позже. Часа через 2. А пока упражнение на самостоятельное раздумывание. Ключевые слова: вложенные циклы, функции из 2-х строк, неоправданная рекурсия.
|
|||
56
CoolCat
11.07.08
✎
09:03
|
(22) - просто отпад :)))...... гниздить таких прогеров нужно..
|
|||
57
Kiber
11.07.08
✎
19:28
|
В этом коде мне метки существенно упростили и читаемость кода и сам код.
[code] Если флПроверятьКод = 1 Тогда Если СпрСоответствие.НайтиПоКоду(ТЗ.Код) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; Перейти ~A1; КонецЕсли; КонецЕсли; Если флПроверятьНаименование = 1 Тогда Если СпрСоответствие.НайтиПоНаименованию(ТЗ.Элемент,0) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; Перейти ~A2; КонецЕсли; КонецЕсли; Если (ТЗ.Вид = "Контрагенты") Тогда Если (флКонтрагентыПроверятьИНН = 1) Тогда Если СпрСоответствие.НайтиПоРеквизиту("ИНН",ТЗ.Доп1,1) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; Перейти ~A3; КонецЕсли; КонецЕсли; КонецЕсли; ТЗ.Соответствие = ""; ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; Возврат; ~A1: Если флПроверятьНаименование = 1 Тогда Если ТЗ.Соответствие.Наименование = ТЗ.Элемент Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; ~A2: Если ТЗ.Вид = "Контрагенты" Тогда Если флКонтрагентыПроверятьИНН = 1 Тогда Если СокрЛП(Строка(ТЗ.Соответствие.ИНН)) = ТЗ.Доп1 Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; Иначе КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа; КонецЕсли; ~A3: Если флПроверятьГруппа = 1 Тогда Если Строка(ТЗ.Соответствие.ЭтоГруппа()) = ТЗ.ЭтоГруппа Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; Если КоличествоСовпадений = 0 Тогда ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; ИначеЕсли КоличествоСовпадений < КоличествоПроверок Тогда ТЗ.ТипДействия = "!!! Вопрос Соответствия"; ТЗ.v = 0; Иначе ТЗ.ТипДействия = "Найден"; ТЗ.v = 1; КонецЕсли;[/code] |
|||
58
чупа
11.07.08
✎
19:32
|
(57) БУГАГА вот вам и пример!
дебильнейшего кода |
|||
59
Kiber
11.07.08
✎
19:33
|
да, кстати, сразу розрешаю использовать данный код для шаблона под программный поиск загружаемых элементов )).
|
|||
60
Kiber
11.07.08
✎
19:35
|
(58) показать как выглядело-бы без меток?
Или может предложишь более оптимизированный вариант? А потом еще сделаем замер производительности. А результаты обязательно в эту ветку запостим. Как развеивание мифов. |
|||
61
чупа
11.07.08
✎
19:43
|
сам наверное код написал, и говорит "как мне метки упростили восприятие кода"
цырк уехал клоуны осталисъ вот как можно сделать ГОРАЗДО понятней такой код, затратив минимум усилий СоответствиеПоКоду = ложь; Если СпрСоответствие.НайтиПоКоду(ТЗ.Код) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоКоду = истина; КонецЕсли; КонецЕсли; СоответствиеПоНаименованию = ложь; Если (флПроверятьНаименование = 1) и не СоответствиеПоКоду Тогда Если СпрСоответствие.НайтиПоНаименованию(ТЗ.Элемент,0) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоНаименованию = истина; КонецЕсли; КонецЕсли; СоответствиеПоИНН = ложь; Если (ТЗ.Вид = "Контрагенты") и не СоответствиеПоНаименованию Тогда Если (флКонтрагентыПроверятьИНН = 1) Тогда Если СпрСоответствие.НайтиПоРеквизиту("ИНН",ТЗ.Доп1,1) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; СоответствиеПоИНН = истина; КонецЕсли; КонецЕсли; КонецЕсли; Если не СоответствиеПоИНН Тогда ТЗ.Соответствие = ""; ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; Возврат; Если СоответствиеПоКоду Тогда Если флПроверятьНаименование = 1 Тогда Если ТЗ.Соответствие.Наименование = ТЗ.Элемент Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КонецЕсли; Если СоответствиеПоНаименованию Тогда Если ТЗ.Вид = "Контрагенты" Тогда Если флКонтрагентыПроверятьИНН = 1 Тогда Если СокрЛП(Строка(ТЗ.Соответствие.ИНН)) = ТЗ.Доп1 Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; Иначе КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа; КонецЕсли; КонецЕсли; Если СоответствиеПоИнн Тогда Если флПроверятьГруппа = 1 Тогда Если Строка(ТЗ.Соответствие.ЭтоГруппа()) = ТЗ.ЭтоГруппа Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КонецЕсли; Если КоличествоСовпадений = 0 Тогда ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; ИначеЕсли КоличествоСовпадений < КоличествоПроверок Тогда ТЗ.ТипДействия = "!!! Вопрос Соответствия"; ТЗ.v = 0; Иначе ТЗ.ТипДействия = "Найден"; ТЗ.v = 1; КонецЕсли; п.с. конечно мож где-то мелочь упустил, не суть важно, принцип ясен >> А потом еще сделаем замер производительности. гыгы дурень ты пустоголовый ты еще скажи что ради производительсности ты переменные укорачиваешь потому что интерпритатор их быстрее обработает. |
|||
62
FanatToNight
11.07.08
✎
19:56
|
Интерпритатор не абрабатываит пирименные, при тронслядции модуля он их заминяит в ОП на кароткий код :)
|
|||
63
Kiber
11.07.08
✎
20:03
|
эээ, нет, не ради кроткости кода, а ради минимального количества проверок.
и не дурень я пустоголовый. Элемент ищется по реквизиту если данный флаг выставлен, и если он еще не был найден. Поэтому, твой код должен выглядеть как минимум так (без оптимизации): СоответствиеПоКоду = ложь; Если флПроверятьКод = 1 Тогда Если СпрСоответствие.НайтиПоКоду(ТЗ.Код) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоКоду = истина; КонецЕсли; КонецЕсли; КонецЕсли; СоответствиеПоНаименованию = ложь; Если (флПроверятьНаименование = 1) и не СоответствиеПоКоду Тогда Если СпрСоответствие.НайтиПоНаименованию(ТЗ.Элемент,0) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоНаименованию = истина; КонецЕсли; КонецЕсли; СоответствиеПоИНН = ложь; Если (ТЗ.Вид = "Контрагенты") и не СоответствиеПоНаименованию Тогда Если (флКонтрагентыПроверятьИНН = 1) Тогда Если СпрСоответствие.НайтиПоРеквизиту("ИНН",ТЗ.Доп1,1) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; СоответствиеПоИНН = истина; КонецЕсли; КонецЕсли; КонецЕсли; Если не (СоответствиеПоИНН ИЛИ СоответствиеПоНаименованию ИЛИ СоответствиеПоКоду) Тогда ТЗ.Соответствие = ""; ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; Возврат; КонецЕсли; Если СоответствиеПоКоду и НЕ СоответствиеПоНаименованию Тогда Если флПроверятьНаименование = 1 Тогда Если ТЗ.Соответствие.Наименование = ТЗ.Элемент Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КонецЕсли; Если (СоответствиеПоНаименованию ИЛИ СоответствиеПоКоду) и НЕ СоответствиеПоИНН Тогда Если ТЗ.Вид = "Контрагенты" Тогда Если флКонтрагентыПроверятьИНН = 1 Тогда Если СокрЛП(Строка(ТЗ.Соответствие.ИНН)) = ТЗ.Доп1 Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; Иначе КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа; КонецЕсли; КонецЕсли; Если флПроверятьГруппа = 1 Тогда Если Строка(ТЗ.Соответствие.ЭтоГруппа()) = ТЗ.ЭтоГруппа Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; Если КоличествоСовпадений = 0 Тогда ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; ИначеЕсли КоличествоСовпадений < КоличествоПроверок Тогда ТЗ.ТипДействия = "!!! Вопрос Соответствия"; ТЗ.v = 0; Иначе ТЗ.ТипДействия = "Найден"; ТЗ.v = 1; КонецЕсли; Вручную сравнишь количество проверок, или все-таки замерить производительность? |
|||
64
чупа
11.07.08
✎
20:07
|
замерь, дурень, замерь
и результаты опубликуй из-за таких олухов, одинцэшники никогда не станут программистами а код (57) будут преподавать как пример ярчайшего случая дебилизма |
|||
65
smaharbA
11.07.08
✎
20:09
|
(64) можно поинтересоваться сколько Вам годиков ?
|
|||
66
чупа
11.07.08
✎
20:13
|
программный код как исполнитель инструкций так и документация, "блок-схема" этих инструкций.
без этого код становится не читаемый, соответственно не масштабируемый. код в (61) и (63) будет жить и развиваться дальше при необходимости то гавно которое в (57) - сдохнет своей смертью. но повонять успеет. |
|||
67
чупа
11.07.08
✎
20:13
|
(65) тебе нельзя, прости
а так конечно, без проблем |
|||
68
FanatToNight
11.07.08
✎
20:16
|
(65) не дождешься ответа :) имхо..
в правилах вроде сказано "не переходить на личности". Проблемка-то не стОит выеденного яйца, чтоб так лезть в кучувонючу! Однако-ж.. Я бы на месте Кибер"а проосто не ответил :) |
|||
69
smaharbA
11.07.08
✎
20:16
|
(67) почему нельзя мне ?
кстати с метками твой код упростится и усвояется раза в 3 минимум, хотя и без меток конечно тоже )) |
|||
70
smaharbA
11.07.08
✎
20:19
|
умолкаю, а то опять потребуют какието доказательства состоятельности, запросят размер сапог и противогаза...
|
|||
71
Дядя Васька
11.07.08
✎
20:23
|
Н-дя... А может все-таки без меток, ась? :)
|
|||
72
Kiber
11.07.08
✎
20:33
|
Измеритель в 77 не очень удобный, поэтому я сильно увеличил загружаемый файл (эта проверка проводится при загрузке), и включил в начало и конец загрузки строки вида
ВремНач = _getPerformanceCounter(); Сообщить("Загрузка начата в "+ВремНач); ВремКон = _getPerformanceCounter(); Дельта = ВремКон-ВремНач; Сообщить("Загрузка окончена в "+ВремКон); Сообщить("Дельта: "+Дельта); Результаты загрузок с твоим кодом: Загрузка начата в 354679010 Загрузка окончена в 354689743 Дельта: 10733 Загрузка начата в 354690901 Загрузка окончена в 354701651 Дельта: 10750 Загрузка начата в 354702554 Загрузка окончена в 354712785 Дельта: 10231 Загрузка начата в 354713792 Загрузка окончена в 354724289 Дельта: 10497 Загрузка начата в 354725353 Загрузка окончена в 354735936 Дельта: 10583 Результаты загрузок с исходным кодом: Загрузка начата в 354807030 Загрузка окончена в 354816957 Дельта: 9927 Загрузка начата в 354818861 Загрузка окончена в 354828774 Дельта: 9913 Загрузка начата в 354829916 Загрузка окончена в 354839561 Дельта: 9645 Загрузка начата в 354840821 Загрузка окончена в 354850700 Дельта: 9879 Загрузка начата в 354861472 Загрузка окончена в 354871427 Дельта: 9955 Разница, я полагаю, очевидна. |
|||
73
Kiber
11.07.08
✎
20:35
|
Да, конечный вариант кода выглядел так:
КоличествоСовпадений = 0; СоответствиеПоКоду = 0; Если флПроверятьКод = 1 Тогда Если СпрСоответствие.НайтиПоКоду(ТЗ.Код) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоКоду = 1; КонецЕсли; КонецЕсли; СоответствиеПоНаименованию = 0; Если (флПроверятьНаименование = 1) и (СоответствиеПоКоду = 0) Тогда Если СпрСоответствие.НайтиПоНаименованию(ТЗ.Элемент,0) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; СоответствиеПоНаименованию = 1; КонецЕсли; КонецЕсли; СоответствиеПоИНН = 0; Если (ТЗ.Вид = "Контрагенты") и (СоответствиеПоКоду + СоответствиеПоНаименованию = 0) Тогда Если (флКонтрагентыПроверятьИНН = 1) Тогда Если СпрСоответствие.НайтиПоРеквизиту("ИНН",ТЗ.Доп1,1) = 1 Тогда ТЗ.Соответствие = СпрСоответствие.ТекущийЭлемент(); КоличествоСовпадений = КоличествоСовпадений + 1; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; СоответствиеПоИНН = 1; КонецЕсли; КонецЕсли; КонецЕсли; Если СоответствиеПоИНН + СоответствиеПоНаименованию + СоответствиеПоКоду = 0 Тогда ТЗ.Соответствие = ""; ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; Возврат; КонецЕсли; Если (СоответствиеПоКоду = 1) и (СоответствиеПоНаименованию = 0) Тогда Если флПроверятьНаименование = 1 Тогда Если ТЗ.Соответствие.Наименование = ТЗ.Элемент Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КонецЕсли; Если (СоответствиеПоКоду+СоответствиеПоНаименованию > 0) и (СоответствиеПоИНН = 0) Тогда Если ТЗ.Вид = "Контрагенты" Тогда Если флКонтрагентыПроверятьИНН = 1 Тогда Если СокрЛП(Строка(ТЗ.Соответствие.ИНН)) = ТЗ.Доп1 Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа + флКонтрагентыПроверятьИНН; Иначе КоличествоПроверок = флПроверятьКод + флПроверятьНаименование + флПроверятьГруппа; КонецЕсли; КонецЕсли; Если флПроверятьГруппа = 1 Тогда Если Строка(ТЗ.Соответствие.ЭтоГруппа()) = ТЗ.ЭтоГруппа Тогда КоличествоСовпадений = КоличествоСовпадений + 1; КонецЕсли; КонецЕсли; Если КоличествоСовпадений = 0 Тогда ТЗ.ТипДействия = "!!! Не найден"; ТЗ.v = 0; ИначеЕсли КоличествоСовпадений < КоличествоПроверок Тогда ТЗ.ТипДействия = "!!! Вопрос Соответствия"; ТЗ.v = 0; Иначе ТЗ.ТипДействия = "Найден"; ТЗ.v = 1; КонецЕсли; |
|||
74
Kiber
11.07.08
✎
20:38
|
(71) Хороший пример. Сейчас мы его замерим... )))
|
|||
75
Дядя Васька
11.07.08
✎
20:47
|
Не, непрально ты Дядя Федор бутерброд ешь... Не на условиях надо оптимизировать, а на количестве проходов. Всего кода не вижу, но подозреваю что там можно было свертками извратиться, и ускорить его раз в 10...
|
|||
76
Kiber
11.07.08
✎
20:53
|
(71) ээээ, выдает ошибку
ИначеЕсли (ТЗ.Вид = "Контрагенты") {F:\BASE77\TEPLOENERGO\ТИС_БУХ\ДОКУМЕНТЫВБУХ.ERT(295)}: Неверное имя реквизита! При проверке 651 строки из ТЗ. Данные проверил - все корректно, в ТЗ они есть, получаются нормально. Связываю это с ошибкой платформы 77. Удалил 651 строку из файла загрузки - всеравно ошибку на 651 строке, теперь на другой элемент. |
|||
77
Kiber
11.07.08
✎
20:59
|
(75) что делает код:
в строке ТЗ содержатся ключевые поля загружаемого элемента (код, наименование, ИНН для контрагентов), при загрузке он пытается найти эти элементы в существующих справочниках. А что можно сделать сверткой? В любом случае, для каждого контретного элемента надо искать свое соответствие.. Можно конечно заранее сделать запрос по каждому виду справочнику, но в 77 я очень не люблю исопльзовать запросы. Капризные очень. Да и выгода эфемерна. |
|||
78
Дядя Васька
11.07.08
✎
21:05
|
(76) Так попробуй что ли:
возможно у тебя при флКонтрагентыПроверятьИНН = 0 может не быть колонки "Вид", а я в одно условие запихнул.. |
|||
79
Дядя Васька
11.07.08
✎
21:08
|
(77) Ну а сверткой... Да просто сваливаешь что сравниваешь в одну ТЗ, добавляешь колонку "совпадения" и заполняешь ее единичками. Затем свернуть, и через долю секунды количество соответствий по каждой строке известно. А ты на каждую строку по столько же тратишь, так как сравниваешь их по отдельности.
|
|||
80
Kiber
11.07.08
✎
21:09
|
(78) я проверил все нужные реквизиты, программно при помощи "Сообщить()" они получаются.
сейчас попробую... |
|||
81
Kiber
11.07.08
✎
21:10
|
(79) но чтобы заполнить колонку, надо провести проверку, верно? :-)))
|
|||
82
Дядя Васька
11.07.08
✎
21:13
|
(81) неверно
|
|||
83
Kiber
11.07.08
✎
21:14
|
Загрузка начата в 357396847
Загрузка окончена в 357405438 Дельта: 8591 Загрузка начата в 357407046 Загрузка окончена в 357415580 Дельта: 8534 Загрузка начата в 357416595 Загрузка окончена в 357425407 Дельта: 8812 Загрузка начата в 357426467 Загрузка окончена в 357435537 Дельта: 9070 Загрузка начата в 357437125 Загрузка окончена в 357445947 Дельта: 8822 Загрузка начата в 357447855 Загрузка окончена в 357456814 Дельта: 8959 Нет слов...... |
|||
84
Kiber
11.07.08
✎
21:17
|
(82) а вот с этого момента, пожалуйста, поподробнее))
|
|||
85
Дядя Васька
11.07.08
✎
21:21
|
Упрощенный пример, есть два справочника, нужно быстро найти количество совпадающих наименований, предположим что наименование уникально:
под реальную задачу доработать напильником... |
|||
86
syktyk
11.07.08
✎
21:30
|
(85)Ты ратуешь за эту кривую работу с ТЗ? А вроде через запрос можно решить.
|
|||
87
syktyk
11.07.08
✎
21:33
|
||||
88
vde69
11.07.08
✎
21:33
|
(84) почитай вот этот алгоритм
Книга знаний: v8: Алгоритм синхронизации двух таблиц (по текстовому полю) он будет СИЛЬНО быстрее твоего, особенно если размер исходных таблиц > 10 000 если нужно получить простое количество совпадений, то быстрее будет вариант со сверткой, а вот если надо сопоставить - то мой... кстати у меня было поползновение метку в одном месте поставить, но обошлось ))) |
|||
89
Дядя Васька
11.07.08
✎
21:34
|
(86) Можно и через запрос, по ситуации... Я ратую против того чтобы по каждому элементу одного справочника гонять НайтиПо по другому ))
|
|||
90
Дядя Васька
11.07.08
✎
21:36
|
(87) Ну вот и к прямым подобрались :))
Ну крайностей-то не надо... |
|||
91
Kiber
11.07.08
✎
21:36
|
(85) гениально! ))
В рамках решаемой задачи есть одно но: количество загружаемых элементов << таблицы существующего справочника. Будет-ли эффективна такая проверка? И еще один вопрос: после свертки, сортируем по колонке "КоличествоСоответствий", и когда начинаются значения 1 - прерываем обработку? И еще одно но: а если в таблице справочника существует элемент, совпадающий наименованием и существует другой элемент, совпадающий кодом с загружаемым элементом? Это разные элементы, соотв, расчитаное количество совпадений будет не совсем корректным. |
|||
92
syktyk
11.07.08
✎
21:40
|
(89)Больше и длиньше всего я смеялся, когда увидел запросы 7.7 . С претензией на оригинальность.
|
|||
93
Дядя Васька
11.07.08
✎
21:47
|
(91) Не, ну пример-то простейший, под задачу доводить надо. Главное принцип понять, как можно сразу кучу сравнить. Эффективнее твоего способа в любом случае, может что и получше придумаешь. Про сортировку вон уже сообразил ))
Про еще одно но, где-то ты не прав... Синхронизируют по чему-то одному обычно, либо код, либо наименование, либо ИНН, либо еще что-то. Но не все вместе. Иначе неизбежны противоречия. |
|||
94
syktyk
11.07.08
✎
21:49
|
(93)А тебе не кажется, что решая задачу в рамках классов 1С, мы себя немного кастрируем?
|
|||
95
Дядя Васька
11.07.08
✎
21:52
|
Простой пример опять же:
Чего ты будешь с этим делать? Выискивать которые из них наиболее равны? Это будет не просто, и что самое обидное не оценят. Так как для пользователя понять по какому принципу ты определил какие "равнее" он уж точно не поймет. |
|||
96
Дядя Васька
11.07.08
✎
21:54
|
(94) Не думаю. Все от задачи зависит. Для того чтобы загрузить пару тысяч строк не нужен прямой запрос, так как за счет объемов скорость будет одна и та же, а возни с написанием кода значительно меньше в рамках типовых.
|
|||
97
Дядя Васька
11.07.08
✎
21:55
|
(95) -> +(93)
|
|||
98
Злопчинский
11.07.08
✎
21:56
|
метки юзать надо там, где они уместны.
уместная метка по своему имени позволяет получать вполне читабельный код. все приведенные выше метки типа А1 и комментарии Перейти ~M1; переход к М1 - пример тяжелейшего дебилизма. ... написанный код должен быть "понятным"... |
|||
99
Дядя Васька
11.07.08
✎
21:58
|
(98) Чет за последние 15 лет мне не попадался код где они уместны (ассемлер не в счет конечно) :))
|
|||
100
Дядя Васька
11.07.08
✎
22:07
|
100 сотыга чтоль...
|
|||
101
syktyk
11.07.08
✎
22:20
|
(99)Мне приходилось изучать профессионально сделанные проги на ассемблере. Поверь: они читаются, как бестселлер.
|
|||
102
Дядя Васька
11.07.08
✎
22:24
|
(101) Да верю.. Я ж говорю, ассемлер не в счет, а в языках высокого уровня ну не могу я представить ситуацию где с меткой читабельнее...
|
|||
103
syktyk
11.07.08
✎
22:31
|
(102)Дык, если метку обозвать, кка пременную - со смыслом, она и будет читабельней
|
|||
104
Дядя Васька
11.07.08
✎
22:34
|
(103) Дело не в том как ее обозвать, логика кода будет не очевидна, так как структуры не будет.
|
|||
105
Злопчинский
11.07.08
✎
22:37
|
ну не знаю...
5 вложений если с несколькими циклами - это читабельно..? постоянное обращение к процедурам/функциям из 5 -10 строк - которые находятся в гм - или хз знает где - это читабельно...? |
|||
106
Дядя Васька
11.07.08
✎
22:40
|
(105) Интересно взглянуть на примерчик, который метками заменяет 5 вложений и при этом более читабелен. А обращение к процедурам/функциям это как раз нормально, при условии что понятно что они делают. Раз отладил и забыл...
|
|||
107
Злопчинский
11.07.08
✎
22:53
|
а что непонятного во вменяемых метках...?
|
|||
108
Дядя Васька
11.07.08
✎
22:57
|
В (22) тебе пример, как их там не назови, а все равно бредятина.
|
|||
109
Злопчинский
11.07.08
✎
23:06
|
потому что сам код бредятина... а так даже с беглого взгляда ясно что образован цикл по ТЗ...
|
|||
110
Дядя Васька
11.07.08
✎
23:11
|
(109) Так он и будет бредятина, пока он с метками. Если ты ломаешь структуру, как он может другим-то быть?
|
|||
111
vde69
11.07.08
✎
23:13
|
(108) (109) ИХМО метки можно использовать как альтернативу для некотрых случаев рекурсии, по сколько и то, и другое не читаемо в любом случае )))
|
|||
112
Злопчинский
11.07.08
✎
23:16
|
Использование меток - это более низкий уровень абстракции кода - вот и все...
одно дело, когда их использовать "по делу" - и это не так уж часто нужно, и другое дело - пихать куда ни попадя... |
|||
113
Дядя Васька
11.07.08
✎
23:17
|
(111) Да ладно нечитаемо... Когда ты из функции вызываешь ее же, ты все-таки вызываешь функцию, которая понятно что делает, а не отправляешь "в небо"..
|
|||
114
Дядя Васька
11.07.08
✎
23:19
|
(112) Ну так о том и речь. Приведи хоть один пример, где в языке высокого уровня их можно использовать по делу? Тогда я поверю что от них есть польза...
|
|||
115
Злопчинский
11.07.08
✎
23:25
|
(114) а смысл - если ты не веришь что ЯВУ есть польза от меток - то и не поверишь, я - верю... ;-)
|
|||
116
Дядя Васька
11.07.08
✎
23:26
|
(115) ну если это вопрос веры :))
|
|||
117
Лефмихалыч
11.07.08
✎
23:28
|
(0) всю ветку не читал, да и для того, чтобы свое мнение по сабжу сказать оно и не надо. метки вредны тем, что:
1. код становится нечитаемым (если кода 10 строчек, то похрену, есть там метки или нет). 2. в общем-о это следствие первого пункта - поддерживать код с метками - это... такое ... що яивороцтвенник... |
|||
118
Медвед1Сник
11.07.08
✎
23:49
|
Метки просто не нужны. Это просто рудимент каменного века программирования. Метки не увеличивают мощность языка программирования, но только запутывают текст программы. Все делается элегантно и просто без меток - с помощью конструкций вевтления, циклов и блоков.
Никогда у меня еще не возникала потребность использовать метки. Только когда изучал бейсик в школьную пору. :) |
|||
119
vde69
11.07.08
✎
23:55
|
(113) а если мне надо использовать 20-30 переменных из текущей процедуры! зачем мне их передавать в рекурсию?
можно их описать на весь модуль, или впихивать в массив или соответствие, но согласись - это то же не красиво и запутывает код))) |
|||
120
Дядя Васька
12.07.08
✎
00:02
|
(119) Думается мне если из одной процедуры столько надо, скорее всего она перегружена. И должна была бы быть не одна...
|
|||
121
rotting
12.07.08
✎
01:11
|
(118) А как без меток написать процедуру которая перебирает таблицу значений и некоторые строки удаляет?
|
|||
122
Дядя Васька
12.07.08
✎
01:14
|
(121)
Для Сч=-ТЗ.КоличествоСтрок() По -1 Цикл Если ТвоеУсловие Тогда ТЗ.УдалитьСтроку(-Сч); КонецЕсли; КонецЦикла; |
|||
123
rotting
12.07.08
✎
01:28
|
(122) Спасибо, даже не подозревал!!!
|
|||
124
France
12.07.08
✎
02:06
|
(122) а давно перестало работать правило "сбита выборка"??
|
|||
125
чупа
12.07.08
✎
02:41
|
(72)
>> Дельта: 9955 >> Разница, я полагаю, очевидна. во тупой попалсо персонаж :) максимум что выиграешь что экономии 5 проверок в пользу меток это 0.01 секунды. Пусть даже это будет 1000 проверок и выигранная секунда. Ты выиграл секунду молодец! Зато когда - ты сядешь через длительное время за модернизацию этого кода - ты потеряешь час на понимание - тебе понадобится изменить логику процесса в твоем примере тебе придется перелопачивать весь код. с нормальной логической структурой проверок тебе придется изменить пару условий. - другому программисту понадобится модернизировать этот код, он потяреят час и сотрет его чтобы не терять его снова, и напишет нормальный код итог - ты сделал НЕКАЧЕСТВЕННЫЙ код с выигранной секундой (и то не факт). последствия некачественного кода гораздо более тяжкие, чем выигранная секунда. |
|||
126
чупа
12.07.08
✎
02:42
|
(124) что значит сбита выборка?
прочитай его пример (122) внимательно особенно строку Для |
|||
127
Дядя Васька
12.07.08
✎
08:12
|
(124) Задом наперед же...
|
|||
128
Kiber
12.07.08
✎
09:13
|
Приведенный мною кусок кода куда более элегантный чем твой. Код максимально прост, все переходы расположеные выше слова возврат, а все метки ниже.
Конечно, спасибо Дяде Васе, я все-таки оценил нерациональность ипользования меток, и в рамках данной задачи попытаюсь использовать сложные условия. В тестировании я выиграл 7%, а если учесть, что в процедуре загрузки есть еще операция построчного чтения файла, то это раза в 3 больше чем 7%. В предь, обещаю, не обращать внимания на посты глупых людей вроде тебя, которые мало того что ноуманнерят, но еще и пытаются доказать что белое это черное. |
|||
129
Kiber
12.07.08
✎
09:13
|
(128) для (125)
|
|||
130
Kiber
12.07.08
✎
09:35
|
(121)
Есть еще кстати 1 вариант: Пока н <= ТЗ.КоличествоСтрок() Цикл Если (ТвоеУсловие) Тогда ТЗ.УдалитьСтроку(н); Иначе н = н + 1; КонецЕсли; КонецЦикла; |
|||
131
FreeFin
12.07.08
✎
09:37
|
Моё личное мнение:
Никакого вреда в метках нет. Заявления о нечитабельности кода = пустые (и главное чужие) слова. |
|||
132
Kiber
12.07.08
✎
10:00
|
(95)
Вроде придумал решение проблемы: Запросом получаем из справочника значения всех 4х ключевых полей, и одно поле из единичек. в получившуюся ТЗ добавляем загружаемую, сворачиваем по 4м группируемым полям и по 1 суммируемомму. Обрабатываем и удаляем все строки что сгруппировались (поле из единичек > 1), удаляем один из группируемых столбцов. Снова сворачиваем по 3м группируемым полям и по 1 суммируемомму. И т.д.. до 1 группируемого поля. |
|||
133
Kiber
12.07.08
✎
10:04
|
+(132)
Даже, после несовпадения полной группировки можно сразу перейти к группировке по первому ключевому столбцу. Так как нам в принципе не важно сколько было совпадений, важно что совпадение не полное. |
|||
134
Злопчинский
12.07.08
✎
11:52
|
глубокое имхо
в (130) код настолько нечитабелен, что про метки даже вспоминать не хочется. а когда подобных условий много и они вложенные - то ппц, можно вешаться... я в таких еслях обычно юзаю Пока н <= ТЗ.КоличествоСтрок() Цикл Если (ТвоеУсловие) Тогда ТЗ.УдалитьСтроку(н); Продолжить; КонецЕсли; н = н + 1; КонецЦикла; |
|||
135
rotting
12.07.08
✎
12:09
|
А тчто в этом плохого:
~МЕТКА: Для Индекс = 0 По (ТЗ.Количество()-1) Цикл Если Условие Тогда ТЗ.Получить(Индекс).Удалить(); Перейти ~МЕТКА; КонецЕсли; КонецЦикла; Сильно плохо читаеться???????? |
|||
136
Kiber
12.07.08
✎
12:15
|
(134) те-же яйца только в профиль.
|
|||
137
Kiber
12.07.08
✎
12:21
|
(135) а зачем цикл если ты используешь метку?
Удаляешь цикл, Перейти ~МЕТКА выносишь за условие, в Иначе добавляешь Индекс = Индекс +1. |
|||
138
rotting
12.07.08
✎
12:25
|
Вариантов до х...., и сильно ли мой вариант замедлит работу системы???? Или вы не поняли что я написал в (135)
|
|||
139
Sadovnikov
12.07.08
✎
12:35
|
(138) Извини, но в (135) ты написал нечитаемую хрень.
|
|||
140
Лефмихалыч
12.07.08
✎
13:45
|
"http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/pp/ewd215.html"
Эдсгер В. Дейкстра: Доводы против оператора goto |
|||
141
Лефмихалыч
12.07.08
✎
13:59
|
+(140) Ключевой аргумент Дэйкстры в том, что goto ни чего не говорят о состоянии процесса. Например, если посмотреть на интерфейс какой-то процедуры, то можно делать какие-то выводы, исходя из ее имени, имен и типов ее параметров о том, что произошло до ее вызова и что будет сделано в ней, а вот с готами ни чего понятно не будет.
ЗЫ Которые тут приводят 5-10 строк текста программы с готами и спрашивают, чо и кому не понятно, те пусть идуть убиваться об бетонные препятствия, поскольку это не аргументы, а казуистика - готы вредны в настоящих (читай - "длинных", или "в которым офигенно много букв", или, если хотите, - "которые делают хоть что-то полезное") программах |
|||
142
Дядя Васька
12.07.08
✎
19:38
|
(138) Во-первых чтобы въехать что ты сделал нужно раза три перечитать, хотя там и 7 строк всего, во вторых ты после каждого удаления начинаешь проход с первой строки и многократно проверяешь условие по одним и тем же строкам. Неужели не сильно замедлит?
|
|||
143
Медвед1Сник
12.07.08
✎
19:49
|
(141) Совершенно верно. Недостатки или достоинства отдельных программистских конструкций или целых парадигм можно "прочуствовать" лишь только участвуя в больших проектах а не клепая копеечные примеры. :)
|
|||
144
Злопчинский
12.07.08
✎
21:09
|
fuf/// иногда так код в тех же типовых написан - как будто у разработчиков 48дюймовые экраны..
|
|||
145
The gray Cardinal
12.07.08
✎
22:47
|
Метки можно использовать для выхода из глубоко вложенных циклов.
|
|||
146
Дядя Васька
12.07.08
✎
22:52
|
(145) Проще сунуть их в отдельную процедуру и выходить возвратом. Заодно и код не такой многоэтажный будет, под 48дюймовый монитор ))
|
|||
147
dimoff
12.07.08
✎
22:53
|
Метки как раз хороши в 1С, если ты хочешь чтобы не исполнялся большой кусок типового кода в середине функции - вместо того чтобы его комментировать лучше использовать метку и Перейти
|
|||
148
Kiber
12.07.08
✎
23:04
|
(141) Довольно познавательная статья.
Из профессионального кода, метки я видел в одном довольно известном коде выгрузки(тис-бух), причем использованы они были непотребно (без надлежащих комментариев и объяснений, без структуры). off: (145) я тебя знаю...))) |
|||
149
Дядя Васька
12.07.08
✎
23:12
|
(147) Хм.. А чем плохо его закомментировать? Не знаешь сочетания клавиш которое комментирует блок? :)
|
|||
150
dimoff
12.07.08
✎
23:18
|
(149) Эстетически некрасиво, при обновлении прийдется помнить.
|
|||
151
Дядя Васька
12.07.08
✎
23:20
|
(149) Напротив, зелень сразу бросится в глаза. А вот метки поймать сложнее, бо всего две строчки.
|
|||
152
dimoff
12.07.08
✎
23:30
|
(151) Обрамляй какой-нибудь своей меткой-комментом например //Дядя Васька
в начале и конце добавленного кода. Тогда делаешь поиск по конфигурации и все видишь |
|||
153
syktyk
12.07.08
✎
23:34
|
(152)Апиридил! Только в 1с нет вставки времени, и это плохо.
|
|||
154
Starhan
12.07.08
✎
23:36
|
:) метки надо называть и коментировать нормально тогда вопрос о читабельности отпадает.
тоже не помню что бы как нибудь пригодились, даже в рекурсивных функцих создания родителей для элементов справочников. |
|||
155
Дядя Васька
12.07.08
✎
23:37
|
(152) Да я как-то и так неплохо вижу... Делаю объединение с тем же релизом типовой, и всего делов. А так фигня какая-то, сначала делаем метки чтобы не делать комментариев, затем добавляем комментарии чтобы не потерять метки :) В принципе при сравнении их тоже без комментов видно, но по запаре одну измененную строчку легко пропустить, а блок фик пропустишь.
|
|||
156
Starhan
12.07.08
✎
23:38
|
есть вставка даты, если пользовтася шаблоном
|
|||
157
syktyk
12.07.08
✎
23:39
|
(156)Undocumented?
|
|||
158
Дядя Васька
12.07.08
✎
23:40
|
(154) Структура кода ломается. Вопрос не в том чтобы метку прочитать. Вон в (135) к примеру, если обозвать метку ~ВНачалоЦикла, вроде бы должно быть понятно что к чему, однако ж что делает этот кусок все равно поймешь только с третьей попытки, тогда как в (130) или (122) все просто и прозрачно.
|
|||
159
Starhan
12.07.08
✎
23:42
|
(157) в 8ке точно есть :)
|
|||
160
Starhan
12.07.08
✎
23:43
|
(158) кстати, если код не знакомый то все равно приходится залазить в каждый метод и смотреть чаво он там мутит :)
|
|||
161
syktyk
12.07.08
✎
23:43
|
(159)8-ка - мертворождена. :) В клюшках - точно не было.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |