Имя: Пароль:
1C
1С v8
Идеальный способ комментирования изменений в чужом коде
,
0 mvgfirst
 
15.04.12
02:00
Заранее приношу свои извинения если подымаю избитую тему.
Но для себя этот вопрос до конца не прояснил, и как заядлый сторонник постоянного улучшения и совершенствования ищу идеальный вариант.

Итак, все Вы(Мы) когда нибудь, кто редко, кто часто, а кто постоянно вынуждены вмешиваться в код написанный сторонними разработчиками. И зачастую это вмешательство бывает разовым, т.е. код и дальше будет поддерживаться предыдущим (а может быть и новым) "творцом"...
Так вот, правила приличия подсказывают что, такого рода вмешательства должны быть должным образом прокомментированы. И что желательно, но как показывает практика совсем не обязательно, комментарии эти должны содержать не изречения Капитана Очевидности, а краткую суть и(или) предысторию, приведшую к возникновению комментируемых изменений.
Все это понятно.. вопрос в следующем:
Подскажите самый правильный (лучший, идеальный) способ обрамления своих изменений кодом.
Я на сегодняшний день использую такую конструкцию:

// [начало] mvgfirst 15.04.2012
// пояснительные комментарии

// ... тут я комментирую код который был до внесения мною изменений

.... тут как правило идет код который я добавляю

// [окончание] mvgfirst 15.04.2012

Но закралось мне в душу подозрение, что это не оптимальный способ, и есть наверняка лучше, оптимальнее, понятнее для последователей.
Если таковые есть - буду признателен, если поделитесь опытом.
55 experimentator76
 
15.04.12
10:54
просто без слоев выглядят комменты как зоопарк
56 МихаилМ
 
15.04.12
10:54
где есть (можно посмотреть слои) ?
57 experimentator76
 
15.04.12
10:54
особенно когда закрывается одна-две строчки кода а нам и под жирная конструкция кодера
58 experimentator76
 
15.04.12
10:55
(56) это одноэс должна была давно реализовать
59 МихаилМ
 
15.04.12
10:56
(58)
где реализованы слои ?
60 experimentator76
 
15.04.12
10:57
(0) сейчас так пользуюсь
//:псевдоним - описание действий
//:псевдоним

дату как-то не пишу так как обычно для разборок есть хранилище
а работающий код в разборках не нуждается

комменты часто пишу когда код замудренный получается и через полгода сам будешь думать что понаписал :)
61 zak555
 
15.04.12
10:59
зачем комменты нужны ?
62 experimentator76
 
15.04.12
11:00
(59) наверное (jsmith) где-то видел
я не помню может и сам видел но мысля такая давно сидит

еще есть мысля что реквизиты объектов конфигурации были ссылочными
тогда их легко будет найти и обработать
63 experimentator76
 
15.04.12
11:01
(61) имхо когда код мудренный - комменты помогают
если таких конф не писывал то да комменты кажутся чем-то ненужным
64 vde69
 
15.04.12
11:02
коментирую редко, но обычно в таком формате

//-----------------------------------------
// vde69, замена кода
// было:
//
// бла-бла
//
код
// vde69, конец замены кода
//-----------------------------------------
65 experimentator76
 
15.04.12
11:02
а вообще я думаю комменты придумали во франчах когда не было хранилищ
чтобы можно было вздрючить за код
66 vde69
 
15.04.12
11:03
(64) имелось в виду именно исправления в чужем коде..

смысловых коментов пишу много
67 jsmith
 
15.04.12
11:06
В кацапте есть слои
68 jsmith
 
15.04.12
11:06
слышал, нуралиев обещал в 8.3 их появить
69 zak555
 
15.04.12
11:07
(63) пиши правильно -комментировать ненужно
70 experimentator76
 
15.04.12
11:07
еще бывает многослойный код
когда один и тот же код в разных итерациях работает по разному
так получается когда разделив текст на модули теряется его наглядность
тогда кратко поясняю в какой итерации как работает код
я ведь не единственный прог
71 DEVIce
 
15.04.12
11:07
(1). О, сразу видно тру программера. Нафиг нужны эти комменты, отнимают только время. :)
72 jsmith
 
15.04.12
11:08
в принципе, что слойность реализовать (тем более для интерпретируемой системы) много ума не надо
странно, что разработчики до сих пор не сделали
73 experimentator76
 
15.04.12
11:10
(69) я ждал этого коммента :)
спорить не буду - вариантов реализации алгоритма может быть несколько
и каждый прог свой вариант считает правильным ;)

если так проще меня понять
комменты в моем коде для меня являются некими метками по которым я якорю эти куски кода в голове
чтобы быстро ими быстро оперировать когда возвращаюсь к этому коду
грубо говоря это все равно что сворачивание кода в одну строку-описание
74 zak555
 
15.04.12
11:11
(73) т.е. ты обычно не помнишь о чём ты размышлял ?
75 experimentator76
 
15.04.12
11:12
(71) скорее тру-кодера после которого хоть потоп
и к своему коду из одного цикла он не возвращается )))
76 ВечныйНуб
 
15.04.12
11:14
(0)

При изменении типовой конфигурации предпочтаю такой способ:

Для добавления нового кода
// ВечныйНуб {+
..
// ВечныйНуб +}

Для закомменчивания неверного типового кода
// ВечныйНуб {-
//
// ВечныйНуб -}

кому-то, может, комменты и не нужны, а мой слабенький мозжечок не может запомнить те 80 изменений, что я тащу при обновлениях из одного типового релиза в другой
77 experimentator76
 
15.04.12
11:15
(74) первые полгода помню, но конф много...
при универсиализации кода он становится менее понятен чем прикладной код но задупленный много раз конечно
я терпеть не могу дуплить код
78 experimentator76
 
15.04.12
11:18
(72) может не хотели раздувать конфу... ну можно было бы дать потом кнопку типа - оставить только актуальный слой
одноэс мне напоминает подход виндовс
когда можно сделать вменяемый проигрыватель музыки\видео они оставляют это на стороннего разработчика
79 experimentator76
 
15.04.12
11:19
(76) и еще отдельный текстовичек где прописаны изменения типовой ?
80 ВечныйНуб
 
15.04.12
11:45
(76)
Изменения в коде в отдельном текстовичке не нуждаются: тупо выполняю полный поиск по вхождению моего ника, после чего вижу все изменения.
Но текстовичок таки есть. Там изменения "не в коде". Т.е. то, что при обновлении беспощадно замещается (например, роли и интерфейсы).
Есть у меня, к примеру, новый регистр. И после каждого обновления, если в типовой изменились роли, мне надо не забыть заново дать бухгалтеру право на запись в этот регистр. Может, есть способ объединения ролей, просто я не знаю?
81 ВечныйНуб
 
15.04.12
11:46
(79)
сорри ) ответ в сообщении (80)
82 Sorm
 
15.04.12
11:49
(0) Пишу так: "Старый вариант. Закомментил я, дата ". Комментирую и сохраняю старый код. На новый код пишу "Новый вариант. Добавил я, дата"...ну и плюс описания кусков(если надо). История изменений в некоторых конфигах отслеживается с 2008г...
83 experimentator76
 
15.04.12
11:53
(80) как вариант роль-клон но не исключает что исходную роль сильно поменяют
84 echo77
 
15.04.12
12:10
У нас комменитруют по такому шаблону:

// Моя вставка <?"", ИмяПользователя> <?"", ДатаВремя, "ДФ=dd.MM.yy">
// Конец моей вставки
85 Лефмихалыч
 
15.04.12
12:24
(0) код надо писать так, чтобы понятно было, что он делает и зачем, уже из самого кода. Твои зеленые простыни нафиг ни кому не нужны, ибо в правильном коде они излишни, а говнокод они не спасут
86 experimentator76
 
15.04.12
12:40
(85) фотку лучше смени )) пока тебе веры нет что 22 ))
87 Лефмихалыч
 
15.04.12
12:42
(86) чо?..
88 experimentator76
 
15.04.12
12:44
(87) пацан справа намекае... извини ничего личного ))
89 experimentator76
 
15.04.12
12:45
(85) несогласен - комменты полезная вещь и код бывает "неодноцикловый"
90 Лефмихалыч
 
15.04.12
12:49
(88) он в фотографа играет. Да всё нормально - я понимаю, что трудно жить, когда вся информация тобой воспринимается через призму содержимого трусов.
91 experimentator76
 
15.04.12
12:54
(90) я прекрасно воспринял оба варианта интерпретации жеста ребенка ;)
просто благоразумнее в современных реалиях фотку сменить
ну как хочешь... я ж сказал лично мне все равно
92 experimentator76
 
15.04.12
12:57
а пацаны классные - у меня только дочка пока
93 ОбычныйЧеловек
 
15.04.12
12:57
(89) комменты могут понадобиться в одном случаем из тысячи, во всех остальных случаях - код являетя комментарием.
94 ОбычныйЧеловек
 
15.04.12
12:59
(92) глянул фотку - хорошая дочка :-)
95 experimentator76
 
15.04.12
13:00
(93) я бы выложил кусок особенно замороченного кода, но там комментов нет
да и смысл выкладывать его для обсирания нет - у каждого свой подход
может на самом деле у меня привычка сложилась комментить... а откуда она пошла я ХЗ
но кто-то же меня надоумил комментить... наверное в университете...
96 experimentator76
 
15.04.12
13:01
(94) мая прелесть :))
97 experimentator76
 
15.04.12
13:05
98 ОбычныйЧеловек
 
15.04.12
13:06
(95) я не программист, но когда меня учили кодить на 1С попросили запомнить одно правило "код - для которого нужен коммент - плохой код"
99 cViper
 
15.04.12
13:08
(0) Очень смешно выглядят 4-5 строчек комментария на 1 строчку кода. Через пару месяцев зелени комментариев становится больше чем кода. Бывший коллега там любит писать.
100 experimentator76
 
15.04.12
13:08
(98) я начинал программировать не на 1С - может в этом дело

Комментарии

Расставляйте комментарии по принципу “чем больше, тем лучше” — пройдёт некоторое время и вы забудете, что делал тот или иной программный блок. Вообще принято комментировать код на английском языке или не комментировать вообще, так как в русском дикое количество кодировок, да и вообще так исторически сложилось. Плюйте на это, код вы комментируете в первую очередь для себя, а не для других! А раз уж вы делает это для себя делайте это в удобной для вас кодировке.

отсюда
http://www.softtime.ru/info/articlephp.php?id_article=28
101 cViper
 
15.04.12
13:09
(98) плохое правило. Новые функции и процедуры необходимо комментировать, и внесенные изменения также необходимо сопровождать своими инициалами и датой. А то потом не отыщешь концов.
102 experimentator76
 
15.04.12
13:13
103 ОбычныйЧеловек
 
15.04.12
13:15
(101) зачем что-то искать? Взглянув на код - все должно стать предельно ясно. Если код требует коммента - меняйте код и меняйте его до тех пор пока необходимость в комментах не исчезнет.
104 experimentator76
 
15.04.12
13:16
еще комменты это вежливость программиста по отношению к коллегам
105 romix
 
15.04.12
13:17
А версионирование по типу Википедии - может даже легко бы могли в 1С организовать...
106 romix
 
15.04.12
13:22
(104) Возможен стиль, когда код комментирует сам себя (например множество исключительных ситуаций, подробная печать сообщений). Тогда еще и пользователь сможет разобраться в том что происходит, если что-то пошло не так.
107 catena
 
15.04.12
13:23
(99)У меня есть обработка обмена с базой с совершенно отличной от 1с логикой учета. Выгрузка на стадии тестирования еще. Наверное у меня там комментов больше, чем кода, я местами туда выдержки из совещаний вставляла, чтобы помнить - почему решили так и кто именно учавствовал в обсуждении.
108 zak555
 
15.04.12
13:27
(107) приводи тогда пример
109 experimentator76
 
15.04.12
13:27
и номер заявки с ХД тоже в комменты можно
так сказать ссылка на сущность по которой сделаны изменения

я так понял что в теме сильно разные по опыту проги собрались
если чел делает на текущий момент текучку и возможно никогда сам к ней не вернется то да можно и в одну строку все написать
я встречался с некомментируемым коммерческим кодом, писанным кучей прогов - сложновато с тыка разобраться
а также встречался с комментируемым проблемным коммерческим кодом который я копи-пастом отправлял разрабы и сразу же кто-то там "получал по шапке"
110 catena
 
15.04.12
13:31
(108)Какой пример? Пример комментария? Зачем вам :) Там тупо стенография обсуждения. Не листами, конечно, но строк по 5-6.

В той же обработке есть одно место... Тонкое очень... Начинала писать не я. И вот как-то вдруг подумалось мне, что не правильно это место работает. Взяла ручку, стала рисовать схему. Дохожу до конца, а там коммент:

//*Соколова* проверила 2 раза. Ошибок нет!

Ну... увеличила счетчик проверок :)
111 zavsom
 
15.04.12
14:04
я всегда пишу так //***ШО 15-04-2012 и заканчиваю //***шо 15-04-2012
112 zavsom
 
15.04.12
14:05
иногда путаюсь и пушу так:  //*** ШО 15-04-2012 и заканчиваю //*** шо 15-04-2012
113 batman69
 
15.04.12
15:20
(103)Глупость это.
114 batman69
 
15.04.12
15:21
(98)Кто-то тебе бред сказал, а ты и повторяешь не думая...
115 ОбычныйЧеловек
 
15.04.12
15:29
(113) глупость - это писАть код в кототом можно разобраться лишь при наличии коментов.
(114) Когда научишься писАть нрмальный код (а не ....) - только тогда тебе придет понимание того,что умные люди говорят.
116 nunzio
 
15.04.12
15:37
(0) использую комментирование, чтобы отделить свой код от типового и потом легче было-бы найти свою писанину. Опытным программистом себя не считаю.
117 DimVad
 
15.04.12
15:57
(0) IMHO, комменты нужны. Там должны быть максимум 4 вещи - "Кто", "Когда", "Нафига" и старый вариант кода (чтобы откатить было легко). Типа так:

// mvgfirst 15.04.2012
// Старый код сбоил на PostgreSQL, падла
// Процент = Параметры.Ссылка.Процент;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
  Процент = Выборка.Процент;
Иначе
  Процент = 0;
КонецЕсли;

// mvgfirst 15.04.2012

Сам код описывать не надо. Он и так на русском.

P.S. Конечно, об это Вы не спрашивали, но если будет время, загляните сюда:
wiki:Перфекционизм_(психология)
118 batman69
 
15.04.12
16:31
(115) "я не программист, но.." может быть в этом все дело?
119 batman69
 
15.04.12
16:34
(118)+ Зачем тогда рассуждать берешься?
120 ОбычныйЧеловек
 
15.04.12
17:20
(119) я не программист, но это не означает,  что я не пишу код  - пишу на 1с очень давно (благо для этого прогом быть не нужно) и поэтому могу судить нужны коменты или нет.
Коменты нужны в коде:
1.  Который хрен знает, что делает потому как написан хрен знает как на несколько страниц в котором без бутылки не разобраться.
2. Исключительные ситуации когда обходится какая нить ошибка платформы либо описывается какая нить дебильная ситуация нашего законодательства - которая не поддается никакому логическому объяснению.
121 Anton_2011
 
15.04.12
17:28
Изначальная строчка: Если Ы=Й Тогда Х
После правки: Если Ы=К Тогда Ю.
Как комментить будем?: //Петя из города Заступинск 01.01.2001 Изменил условие потому что тот кто это написал кг/ам...
?
Для себя комменты писать - это одно(как правило - не нужно, ну иначе если что то черезкитайское и хрен потом вспомнишь на вскидку, учитывая русский бизнес: "Сроки - вчера"). Когда человек пишет комменты заботясь о других - это другое.
Есть шаблоны. "//Петя из города Заступинск 01.01.2001" достаточно набрать один раз.
122 experimentator76
 
15.04.12
17:31
(120) странно... если способен преобразовать алгоритм в последовательность машинных команд то программист
а то ни то ни се... вроде пишешь код но не прог
123 МурЬка
 
15.04.12
17:36
Комментирую

//+ МурЬка

изменения

//++ МурЬка

При необходимости внутри блока изменений - комментарии по делу
124 ОбычныйЧеловек
 
15.04.12
17:42
(122) прог - тот кто знает какой-нить язык программирования. Я разработчик на 1С не более того.
125 experimentator76
 
15.04.12
17:55
(124) разработчик 1С тоже неплохо, потому что чисто программер - 1С может и не потянуть
126 batman69
 
15.04.12
18:51
(124)Странные рассуждения... каша у вас в голове...
127 Кокос
 
15.04.12
19:00
раньше как-то комментировал. а теперь лень.
128 Кокос
 
15.04.12
19:00
скоро свою нетленку на базе УГ11 надо будет передавать другому... как он там разберется?:)
129 Кокос
 
15.04.12
19:04
(0) А вообще - умение разобраться в чужом некомментированном коде есть своего рода тест на профпригодность. Для меня еще с семерки с этим проблем не было. Естьже сравнение конфигураций в конце концов :)
130 experimentator76
 
15.04.12
19:05
(128) будет поминать добрым словом если отличит от типовой
к слову еще в семере баги старых прогеров отлавливаются
а им пох
131 experimentator76
 
15.04.12
19:06
(129) сравнение каких конф ? типовой и дописанной ?
132 Лефмихалыч
 
15.04.12
19:07
(117) а в этом, пожалуй, что-то есть...
133 Torquader
 
15.04.12
19:07
Комментарий нужен для того, чтобы было понятно, для чего было сделано то или иное изменение - описывать в комментарии само изменение не обязательно.
134 Кокос
 
15.04.12
19:08
(131) да :)
135 mikeA
 
15.04.12
19:09
(115) Вообще-то умные люди утверждают несколько иное:
"Good comments don't repeat the code or explain it. They clarify its intent. Comments should explain, at a higher level of abstraction than the code, what you're trying to do." Steve McConnell. Code Complete
136 ОбычныйЧеловек
 
15.04.12
19:09
(126)ты не можешь в коде разобраться без коментов (писАть код так, что бы он был понятен без коментов) а каша в голове у меня - класс.
137 mikeA
 
15.04.12
19:12
(136) Это всего лишь вопрос времени. В хорошо документированном коде (не путать с избыточно документированном) разбираться быстрее, при прочих равных.
138 Кокос
 
15.04.12
19:14
(136) точно :) два раза у меня было: расходился с клиентом по вопросу цены сопровождения. он брал другого прогера, который начал ругать мой код типа некомментирован, что писатель из меня 1сный фиговый и т.д. Клиент при этом многозначительно при расставании смотрел на меня. Первый позвонил через два месяца второй через полгода. Второго послал ибо я ему вернул половину суммы, и сказал что мое возвращение стоит этой возвращенной суммы безвозвмездно. Чего там эти горе программисты налопатили до сих пор вспомнить страшно :))

Так что если прогер дебил ему и комменты не помогут, а если спец он на них особо внимания и не обратит.

По мне комменты нужны при очень больших структурированных проектах, типа самих типовых. А мелкие изменения по желанию прогера.
139 Torquader
 
15.04.12
19:21
(138) Ещё одна полезная вещь - журнал изменений, где написано, что делалось, когда и зачем - вот с ним гораздо проще понять, что было сделано.
140 experimentator76
 
15.04.12
19:26
(137) вот именно. времени много не бывает тем более разбираться в чужих творениях
у куска кода есть определенная функция - если она обозначена, то углубляться в структуру кода необходимо только если код с багами или его приходится дописывать

в общем-то понятно
и без автора конечно можно разобраться, но подход его - "пишем только раз" - не делает его профессионализму чести
141 ОбычныйЧеловек
 
15.04.12
19:27
(135) интересно ты на англоязычных форумах пишешь на русском?! (вопрос риторический, перевод не требуетсяятнт).
(137) Возможно в серьезных языках и требуется что-то описывать - в 1Ске все на русском -чего тут комментарить то?
Вот зачем тебе коменты? Правильно - чтобы разобраться в коде в котором вообще ничего не понятно.
142 acsent
 
15.04.12
19:32
а если несколько изменений одного участка разными датами, что пишете?
143 Alexor
 
16.04.12
00:02
Я примерно также далаю как 0
Дополнительно, если вставляю свои переменные, обработки, функции, то впереди ставлю псеводним.
Правда обычно псевдоним не свое ФИО, а название организации, кому принадлежит база.
144 fisher
 
16.04.12
01:37
(0) Это удобно только при разовых изменениях в чужом коде при отсутствии системы контроля версий. Вернее, не то чтобы удобно - вынужденная мера.
При нормальной совместной разработке все вопросы разруливаются системой контроля версий, а комментится только логика. Иначе не код получится, а форум какой-то и все равно нифига не разобрать будет.
145 Balabass
 
16.04.12
01:56
Я делаю так

//++ %UserName% %Date%
// Comments

//Было ...

Стало

//--
146 Гот
 
16.04.12
02:05
(0)
//Я
// old_code
...new code
//я
147 mvgfirst
 
16.04.12
02:29
(144) Речь о системе контроля версий не идет. Вопрос подымается исходя из реалий работы фрилансера. Когда ему достается база (конфигурация) в которой нужно разобраться, внести изменения и отдать заказчику. Да так что бы не было стыдно перед последователями не только за качество кода, но и за его документирование.
P.S.
А процедуры длиной в несколько экранов выводят из себя настолько что ни один грамотный комментарий не поможет. Единственный вопрос возникающий в этот момент в голове - "... неужели он(она/оно) не знает о том что можно создавать процедуры и функции и вызывать одну из другой...
Особенно прикалывают конструкции Если Тогда КонецЕсли у которых между началом условия и окончанием экранов так 5-6 и множество вложенных условий.
148 Гот
 
16.04.12
02:30
(147) Есть же жадные лохи еще на свете, с фрилансерами связываться :)
149 mvgfirst
 
16.04.12
02:38
(148) Какая связь между жадностью и обращением к фрилансеру?
Т.е. если человек, считает себя профессионалом и не желает идти в кабалу в какую-то франч-фирмочку... то он обязательно должен работать за гроши...?
150 Гот
 
16.04.12
02:45
(149) Все хорошо. Будь свободным.
151 Паланик
 
16.04.12
10:00
Когда пишу свое - комментирую редко, где реально нетривиально что-то, что может сбить с толку. Если и камменчу - не больше чем в одну строку. А если правлю чужой код - отделяю, и ставлю дату и имя обязательно.
152 fisher
 
16.04.12
13:04
(147) Ну так я об этом и говорю.
"удобно только при разовых изменениях в чужом коде при отсутствии системы контроля версий"
Где тут противоречие?
153 fisher
 
16.04.12
13:10
(152) + Встречал подобное комментирование в серийном продукте (т.е. либо не было СКВ, либо плюс к ней комментировали) - выглядело глупо, некрасиво и непрозрачно. "Здесь был Вася, а раньше был Петя а потом все похерил Онуфрий".
И вместо того, чтобы видеть красиво комментированный код и бегло читать логику приходится эту наскальную живопись созерцать.
154 Starhan
 
16.04.12
13:14
(147) а в типовых разве не так?