#0
by komanch75
Встречаются такие самописные модули, где процедуры создаются лишние. Т.е. например кусок кода используется только один раз во всей программе, но он для чего-то вынесен отдельной процедурой. Или кусочек из двух - трех строчек используется всего два раза, но тоже вызывается отдельной процедурой. И это, часто, мешает читать программу. Вместо того, чтобы просто прочитать код, нужно перескакивать с одного места кода на другое, возвращаться назад, запоминать, как автор обозвал свою процедуру и что она делает. А если таких лишних процедур еще и много... Просто поражает, неужели сейчас не учат хорошему тону в программировании? Я думал, что это называется заструктурированность кода, но погуглив, такого определения не нашел. Так как называется такое явление?
#0
by komanch75
Встречаются такие самописные модули, где процедуры создаются лишние. Т.е. например кусок кода используется только один раз во всей программе, но он для чего-то вынесен отдельной процедурой. Или кусочек из двух - трех строчек используется всего два раза, но тоже вызывается отдельной процедурой. И это, часто, мешает читать программу. Вместо того, чтобы просто прочитать код, нужно перескакивать с одного места кода на другое, возвращаться назад, запоминать, как автор обозвал свою процедуру и что она делает. А если таких лишних процедур еще и много... Просто поражает, неужели сейчас не учат хорошему тону в программировании? Я думал, что это называется заструктурированность кода, но погуглив, такого определения не нашел. Так как называется такое явление?
#0
by komanch75
Встречаются такие самописные модули, где процедуры создаются лишние. Т.е. например кусок кода используется только один раз во всей программе, но он для чего-то вынесен отдельной процедурой. Или кусочек из двух - трех строчек используется всего два раза, но тоже вызывается отдельной процедурой. И это, часто, мешает читать программу. Вместо того, чтобы просто прочитать код, нужно перескакивать с одного места кода на другое, возвращаться назад, запоминать, как автор обозвал свою процедуру и что она делает. А если таких лишних процедур еще и много... Просто поражает, неужели сейчас не учат хорошему тону в программировании? Я думал, что это называется заструктурированность кода, но погуглив, такого определения не нашел. Так как называется такое явление?
#5
by Анцеранана
Тут как раз - хороший тон в программировании. Все типовые как раз "заструктурированы" , разве нет? Хотя для 2-х строчек - да, не надо отдельную процедуру делать, но для 10 уже надо))) Весь вопрос только в том , что имена процедур и функций понятные и адекватные должны быть.
#11
by batmansoft
Спагетти код это кода код запутан и процедуры влияют друг на друга через глобальные переменные или прочую шнягу.
#16
by aka AMIGO
в адекватности предыдущего программера надо сомневаться сразу при открытия дерева метаданных
#18
by ДенисЧ
Не собираюсь. Я, наоборот, горжусь тем, что могу использовать гото, не запутывая код...
#19
by Господин ПЖ
// а теперь позовем общую процедуру проверки писатели типовых сами с собой общаются в коде...
#20
by Starhan
>>Встречаются такие самописные модули Начало как у анекдота, встречаются такие две блондинки.
#22
by БледноЗолотистый
Где то было, что если появляется желание что либо прокомментировать в коде, то этот кусок необходимо выделить в отдельный метод.
#26
by komanch75
Процедуру нужно создавать только тогда, когда этот кусок кода нужно вызывать НЕСКОЛЬКО раз. Если хочешь что-то закомментировать, что мешает сделать это в коде? Зачем, объясните мне, создавать процедуру, которая используется один раз, если это мешает читать программу? Только не надо цитат и отсылок к "столпам". Объясните своими словами.
#27
by komanch75
Спагетти-код это как раз, когда перскакиваешь с места на места. И это не только гото. Гото просто частный случай.
#28
by Адинэснег
в плане сопровождения имеет смысл разделять код на блоки, представь если какое-нибудь закрытие месяца запихать в одну процедуру
#31
by GedKo
>Зачем, объясните мне, создавать процедуру, которая используется один раз, если это мешает читать программу? чем мешает? переход к объявлению процедуры и возврат обратно в конфигураторе есть. а вот в отладке этот кусок кода, если он не нужен, гораздо легко перескочить.
#32
by su_mai
Ерунда! Процедуру фрагмент кода надо выносить в отдельный метод, когда у тебя есть желание написать комментарий к этому фрагменту кода. Название процедуры должно отражать суть выполняемого преобразования. У Макконела в книге "Совершенный код" - раздел "Самодокументирующийся код".
#33
by Адинэснег
попался мне тут один дядька, за 35 наверное, матерый якобы 8шник, не знающий о стеке-вызовов в отладке...
#37
by БледноЗолотистый
во-во и я про это, зачем мозолить глаза об код процедуры, механизм работы которой и так понятен из названия. Даже если он вызывается один раз.
#38
by Garykom
Гм я тоже так делаю и что точнее через Сообщить("Тута") отлаживаю! Просто потому что практически без отладки пишу сразу рабочий код...
#39
by Garykom
+ Вот нафик нужен отладчик если там проводится больше времени чем за написанием собственно кода?
#40
by su_mai
>Просто потому что практически без отладки пишу сразу рабочий код... Это умиляет. Все к Макконелу!
#45
by Адинэснег
прям представляю сколько кода и времени у тебя уходит на "Сообщить", когда в чужом коде нужно узнать что за дерево значений лежит в переменной, и какие там 100500 типов значений, бгыы
#46
by Garykom
+ но скилл чтения чужого кода прокачан счас уже пофиг свой вспоминать или чужой с нуля
#48
by komanch75
"в плане сопровождения" это не аргумент. С практической точки зрения, какой смысл лишних процедур? Ну вот это может быть аргумент, соглашусь. Да вот мешает тем, что надо перескакивать с места на место, пусть даже для этого есть горячие кнопки. Запоминать, какие переменные ты туда передал, что делалось 10 строчками выше, что должна вернуть функция и т.п.
#52
by Garykom
ну не 50 тысяч а скажем просто 50-100 строк сразу причем не обязательно все они подряд, нет читаю код и важные строки запоминаю потом анализирую что они в сумме делают
#53
by komanch75
а что Мак Конел по этому поводу говорит? Можно хоть небольшой отрывок? Может там как-то не так написано, или недочитано? Прямо вот так и говрит: Захотелось тебе что-нибудь накоментить, лепи новую процедуру и ничего не бойся, пусть другие после тебя по коду как кенгуру скачут и глаза с мозгами себе ломают?!
#54
by Apokalipsec
Все 1Сные разработки делаются по одним корпоративным стандартам: "х*як, х*як, в продакшен!". Все кто делают отсылки к "идеальному коду" должны быть сожжены как еретики!
#55
by DS
Это называется неправильное (или просто иное нераспространенное) восприятие кода. Если функция потенциально может использоваться более одного раза (не только в данной конфе) или имеет логическую завершенность, то ее необходимо выделить. И читать такой код намного легче (если функция имеет адекватное имя).
#59
by Mikeware
Объясняю: функция или процедура делает некий законченый объем работы. Ее название и аргументы должны говорить сами за себя - что она делает, и что ей дается на вход. при такой заменеуже не нужно читать ее код.
#62
by Ненавижу 1С
если процедура много больше 1 экрана, то что-то надо делать исключения тексты запросов, но я их выделяю в отдельные процедуры тоже
#63
by komanch75
мне кажется - ключевое здесь "может использоваться более одного раза". Так кто бы спорил. Я же про другой вариант говорю сейчас.
#66
by Адинэснег
какое восприятие, тут люди пишут для себя, для души так сказать... попадут в команду из 5-10 разрабов - будут бить по морде, возможно даже ногами
#67
by Garykom
Да однажды встетил при собеседовании при приеме на работу одного программиста который шел на 1С-ку хотя до этого писал на delphi и прочих c++ Так отпал после вопроса (до него еще додуматься надо было) а вы в 1С на русском или на английском пишите? Ответ был неудивительный после delphi )) естественно он на английском писал в 1С
#69
by Garykom
+ т.е. если он один то пофиг пусть как хочет пишет а вот в коллективе как когда стандарт и все привыкли русский использовать в операторах?
#70
by Адинэснег
надо было его спросить, как будет по-английски ИсточникДоступныхНастроекКомпоновкиДанных, и если бы он ошибся хоть на одну англобукву , посцать ему на грудь
#71
by ДенисЧ
А я одну полезную обработку, помнится, написал целиком на аглицком... Как мне благодарны были сопровожденцы после этого...
#75
by Apokalipsec
Вообще, прочитав заголовок, решил, что в теме про обфускацию. А оказалось как всегда..)
#76
by Garykom
нафик нафик никаких ерп в ближ время счас розницу мучаю типовую чтобы шашечки и ехала
#79
by komanch75
Ну а что значит Логическая завершенность функции? Допустим она создает элемент справочника. Но создавать элемент нужно в обработке только один раз. Ведь проще при чтении программы написать //Создаем элемент справочника ... //Создали элемент. Чем прыгать в другой конец кода, разбираться, что там создается элемент справочника (особенно если из названия не понятно, что делает эта процедура). Да и без комментариев проще прочитать код сразу, чем скакать куда-то, чтоб его прочитать.
#80
by Garykom
угу почти вот к примеру чтобы на кассе выдали новый сертификат на произвольную сумму - точнее ввели номенклатуру, сделали приход, и продали-пробили дохрена действий выходит а надо просто кнопочка открывается формочка где вводят номинал, номер сертификата и все оно все автоматом ввелося причем с формированием шк и добавление в чек номенклатуры и при пробитии вышло сертифиикат(с ШК поверх бланка) и чек к нему
#83
by Apokalipsec
Ну конечно очень удобно такой код читать, когда в "выполнить" создаются элементы справочника, потом создаются документы, все это разбавлено тремя-четыремя запросами на 100+ строк, где получаются какие-то данные из регистров для заполнения этого документа. Очень хочется пожать таким разработчикам горло...
#84
by Garykom
+ и выходит чтоб банально записать штрихкод в номенклатуру в рознице или писать кучу своего кода или использовать телепат.dll и найти функции в типовой от разработчиков и как их юзать типа ПодключаемоеОборудованиеРТ.УстановитьШтрихкод(ШтрихКод, НоменклатураСсылка, , , ОписаниеОшибки);
#88
by komanch75
Хорошо, а теперь другая ситуация: В коде где-то надо что-то исправить. Ты читаешь текст Выполнить, а там сплошные отсылки к процедурам с непонятными названиями. Тебе надо в каждую зайти и разобраться, правильно ли она все делает, а из нее идет вызов еще 10 процедур, а из каждой из них еще по 5. В итоге в конце ты уже забыл, с какого места кода ты сюда пришел. Так лучше? А так бы читал простыночку и понимал ход исполнения. Что зачем идет и где тут ошибка.
#89
by su_mai
Смысл в том, что бы при необходимости читать чужой код не пришлось сначала читать неправильно написанные комментарии к методам, а затем разбираться в коде метода. При этом чем более простой код метода тем легче и быстрее его можно понять. По этому не является "грехом" создавать маленькие методы для создания элементов справочника, так как поддержка такого метода проще, чем если бы этот код был в составе прочего кода.
#90
by Garykom
встречный вопрос, а зачем тебе в коде что то исправлять когда можно написать свой код в другом месте который сделает то что нужно, исправит данные или еще что? и потом другие которые за тобой придут матом не покроют за то что наисправлял вместо дописания?
#91
by Apokalipsec
Непонятные названия процедур - это совсем другая степь, в тебе написали, при чем тут их количество?
#92
by Ndochp
Ну ты умник братец. Создаем новый элемент справочника с десятком реквизитов. Один раз, 15 строк, но в цикле загрузки данных из эксель. И вот ты сидишь в отладчике и долбишь Ф10 как дятел вместо того, чтобы зайти в эту процедуру один раз по Ф11, убедиться, что она работает правильно, а в остальные разы спокойно ее пропускать за один шаг.
#93
by su_mai
Выполнить это жесть :) В 1С от неё рекомендуют отказываться, но когда это невозможно то...
#94
by komanch75
Хорошо, согласен, логически завершенные БОЛЬШИЕ куски, с нормальными названиями и еще и желательно - подробными комментами, я и сам выделяю в отдельные процедуры бывает. Но я про то, что зачем делать кучу процедур по 3 строчки, которые вызываются 1 раз?
#95
by su_mai
+ Макконел "Совершенный код", раздел 32.3. Комментировать или не комментировать? стр 764-767
#96
by komanch75
Я ж не про цикл говорю, а когда процедура вызывается ОДИН раз. Т.е. не в цикле, а просто в тексте модля.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Отправить для обработки (POST)
- 1с 8.2 Комплексная. в "ПриемНаРаботуВОрганизацию" не попадает Северная надбавка
- БГУ 1.0.25.9. Нет новых КПС?
- передача результат запроса на клиент
- ISS 8.5 и 1с 8.3 задолбало
- ImplAppId и зависание базы
- Запуск 1С после перезагрузки сервера
- Обмен между ЗУП (базовая) и БП ПРОФ
- Заполнение полей контактной информации в бух 2.0
- v7: Вывод в таблицу подчиненные документы
- ЗУП 3.0, расчет среднего заработка, "Норма дней по произв. калегдарю", помогите
- Торговля ИТС без НДС
- БП 2.0 Округление НДС 99/68.02 После округления есть остаток
- v8: Начисление и выплата зарплаты в УТ 10
- ВИД какой драйвер ODBC задать для excel 14 (х32)?
- УТ 11. Как приязать ДополнительныеРеквизитыИСведения к конкретному типу спр.?
- Очистка поля при изменении другого реквизита
- Реквизит типа таблица значений в тонком клиенте
- хеш в 16 символов
- глЗначениеПеременной("глТекущийПользователь") или ПараметрыСеанса.ТПользователь?