1С: Дичь (лучшее из моей коллекции)
Я постоянно имею дело с чужим кодом. В среднем раз в месяц ко мне приходит новый клиент со старой информационной системой, в которой поработали программисты 1С самых разных мастей, возрастов, квалификации, отношения к делу, чувства юмора и т.д. Ещё я постоянно работаю с молодыми программистами 1С — они учатся с нуля в моём отделе.
К чему я это… Будь я журналистом, сказал бы «у меня много источников». Как учёный — «нет недостатка в объектах исследования». Но я — лишь программист, поэтому повторю первое предложение этой статьи — я постоянно имею дело с чужим кодом.
Много лет назад, когда во мне горел юношеский абсолютизм, я реагировал на «плохой код» резко и негативно. Всё какие-то стандарты изучал и пропагандировал. В нашей среде стандартом код разработчиков из самой 1С обычно считается. А одна из высших оценок качества кода — если он не отличим от написанного вендором. Ну вот и я такой был.
Потом стандарты и подходы к разработке в самой 1С стали меняться. Местами — очень сильно. Не буду говорить, в плохую или хорошую сторону, но что совершенно точно — код нынешний не соответствует старым стандартам, а код старый — современным. Это если все возможные скидки сделать и углы сгладить (хотя, сглаживать там особо нечего, ибо принципиальных изменений не было).
Да, что ещё совершенно точно: при сильно изменившихся стандартах не сильно изменился результат, т.е. продукт :)
Так, отвлёкся… Переболел я «правильными стандартами», надеюсь больше мне это не грозит, пусть молодёжь тешится. И отношение моё к чужому коду сразу изменилось — он стал мне интересен. Как диалекты одного и того же языка, фольклор народов мира и, в конце концов, жизненные истории (да, в небольшом куске кода иногда целую историю увидеть можно).
Ну и коллекционировать эти куски кода начал. Чтобы не потерять — канал в телеге создал. Иногда там и мой код бывает, за который мне стыдно (порой).
Подумал, вдруг вам тоже будет интересно, и решил оформить в виде статьи самые интересные (на мой взгляд) примеры.
Человек решает задачу «Найти всех пользователей с определённым перечнем ролей».
Зацените сбор результата в строку.
Код из типовой ERP. Процедура вычитает одну таблицу из другой. Попробуйте по именам аргументов понять, кто откуда будет вычтен.
Ну и насладитесь именами переменных внутри.
Стажёр решает задачу «посчитать количество цифр и английских букв в строке»
Тут прекрасно всё
Первые доработки начинающих программистов почти неотличимы от сделанных на скорую руку
А это — топорное версионирование кода. Каждая следующая процедура — копия предыдущей, но с небольшими изменениями
Не просто так, объяснение есть, но… Всё равно ведь забавно?
А тут видна история — условие дополнялось не сразу, и в результате через ИЛИ перечислено почти всё
Прислал один из читателей канала
По легенде, этот код заменяет в заказах одну номенклатуру на другую
Тоже читатель прислал. Мораль: тут не всё понятно :)
Видна история, судьбы? Я прям вижу — программисты сидят, ночь, оно не считается, НАДО ХОТЬ ЧТО-ТО СДЕЛАТЬ
Гуманитарии в нашей профессии тоже встречаются. Я — один из них
Это типовая отраслевая конфигурация. Запись документа внутри обработки проведения.
Ну, а кто без греха?
Строка — надёжная, строка не подведёт
Кому-то нравится справа налево писать. Отраслевая конфигурация
Тут тоже не весь код понятен :)
Эффектно завёрнутый в универсальную функцию поиск по коду