Автоформатирование кода

10.01.13

Разработка - Рефакторинг и качество кода

Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени?
И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок.
Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя.
Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

Скачать файлы

Наименование Файл Версия Размер
ФорматированиеТекста.epf
.epf 66,91Kb
188
.epf 66,91Kb 188 Скачать

Что это?

Это внешняя обработка, написанная на управляемых формах (то есть работает только под 8.2).

Как с этим работать?

Работа предполагается в режиме тонкого или толстого клиента. Копируется блок кода (можно кусочком, можно модуль целиком) и помещается в левую часть экрана, нажимается волшебная кнопка и вправой части - появляется отформатированный код.

После чего его можно скопипастить в текст модуля.

А что она может:

  1. Все строчки а-ля Переменная=4; Переменна2=5; будут оформленны в две строки;
  2. Все двойные пробелы "  " будут заменены на один " ";
  3. Все двойные пустые строчки будут заменены на одинарные;
  4. Все что есть в списке "Регулярных выражений" будет приведено к одному регистру;
  5. Будут настроены отступы, в соотвествии с установленными правилами;
  6. Количество пробелов перед и после арифметических действий станет одинаковым, в соответствии с настройками пользователя (+,-,*,/,=);
  7. Можно будет выровнять знаки равенства при  последовательной установке значений (если между ними нет пустых строк);
  8. Можно настроить перед какими выражениями и после каких выражений обязательно нужна пустая строка;
  9. Можно настроить между какими выражениями не должно быть пустой строки;
  10. Система автоматически способна определить необходимость комментария к процедуре или функции и вставить шаблон комментария. Пропишет передаваемые параметры.

А как быть с комментариями и переменными?

Все что есть в комментариях и в переменных останется неизменным!

Что за пользовательские настройки и где их брать?

Система имеет настройку "По умолчанию" Хранит в макетах и можно будет начать работать с обработкой сразу.

Так же можно сохранять настройки как в стандартном хранилище настроек (возможности платформы), так и выгружать и загружать настройк в/из файла с расширением *.xml


См. также

Когда понадобился новый оператор

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Когда понадобился новый оператор, но его нет в синтакс-помощнике, что делать?

вчера в 08:00    739    ZhokhovM    2    

2

Когда разработчик платформы не добавил проверку препроцессоров

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Когда разработчик платформы решил пойти на кухню за кофе, а проверку препроцессоров не добавил, и вот тут-то и началось: "Что, опять все сломалось? Ну и кофе же я забыл сделать!".😅

вчера в 07:00    1862    ZhokhovM    2    

5

Реструктуризация - бесконечная история

Рефакторинг и качество кода Платформа 1С v8.3 Бесплатно (free)

При разработке программ требуемый функционал ставят на первое место, но есть еще и архитектура программы. На горизонте 5-10 лет она становится важнее функционала, который должен работать при масштабировании и росте данных. Реструктуризация 5 терабайтной базы 1С 8.2 в формат 1С 8.3, складывает весь пазл архитектурных просчетов, которые сделали ради функционала. Как это исправить? - для разработки правильной архитектуры, нужно всего лишь сместить фокус с функционала и подумать о «вечном».

29.09.2023    1869    1CUnlimited    15    

22

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 2

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Коротко о том, как я перестал быть создателем макаронного кода и непроходимых джунглей методов и модулей. Расскажу о том, что реально применяю на практике с примерами при разработке (а в основном доработке) в типовых конфигурациях 1С. Комментарии очень приветствуются.

27.09.2023    6872    Lemmonbri    136    

35

Чистый код. Мой взгляд на жизнь в макаронных джунглях. Часть 1

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Коротко о том, как я перестал быть создателем макаронного кода и непроходимых джунглей методов и модулей. Расскажу о том, что реально применяю на практике с примерами при разработке (а в основном доработке) в типовых конфигурациях 1С. Комментарии очень приветствуются.

19.09.2023    4265    Lemmonbri    16    

31

5 подходов при доработке конфигурации 1С, чтобы в будущем не было мучительно больно её обновлять

Архитектура Рефакторинг и качество кода Обновление 1С Платформа 1С v8.3 Бесплатно (free)

Нашей компании часто приходится сталкиваться с обновлением конфигураций разной степени переписанности. Какие-то из них обновляются легко, какие-то — не очень. Расскажем о некоторых принципах модификации программы, которые помогут сделать последующий процесс обновления легче. Или тяжелее, если стараться их не соблюдать.

10.08.2023    9515    0    1c-izhtc    37    

21

Задача на ошибки и неоптимальности при проведении приходной накладной

Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Задачу эту дают на собеседованиях, видимо, те франчи, которые не в состоянии оценить человека по резюме и в ходе беседы. По идее задачи, подобные этой, должны давать начинающим студентам. Но дают всем подряд. Итак: мои 5 копеек. Критика приветствуется.

11.07.2023    2184    magic1s    32    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. serega3333 19.12.12 17:26 Сейчас в теме
так автоформатирование как таковое не вкручено? хочется закрывать конфигуратор - открывать предприятие - нажимать кнопку в обработке - она парсит и обрабатывает...а тут копипаст туда сюда получается?
3. Sibars 351 19.12.12 19:22 Сейчас в теме
(1) serega3333,
Пока поддерживается только копипаст. В следующей версии предполагается выгрузка текстов модулей из режима предприятия и/или выбор уже выгруженных в файлы и их форматирование с сохранением в текстовые файлы.
Также предполагается запустить орфографическую проверку на наименование метаданных и переменных в модулях. Естественно с учетом правил именования объектов состоящих из нескольких слов.
2. pumbaE 19.12.12 18:41 Сейчас в теме
Вверху страницы баннер, там можно даже не закрывать конфигуратор.
Конечно не все там есть из перечисленного но можно и добавить.

p.s: в принципе, эту обработку думаю можно портировать для работы прямо из снегопата.
boggonzikov; +1 Ответить
5. Sibars 351 19.12.12 19:33 Сейчас в теме
(2) pumbaE,
Сам пользуюсь СНЕГОПАТОМ. Вещь с правильной пометкой "must have"!
Можно попробовать реализовать функционал и на скриптах, но стоит ли игра свеч, если учесть, что для всех фломастеры на вкус разные и надо учесть возможность настройки форматирования.
...
Если есть желание, могу предложить такой вариант:
Пишется скрипт для СНЕГОПАТА (сам пока не разбирался с написанием), который по хоткею, копирует выделенный фрагмент текста или весь модуль целиком и помещает его в текстовый файл.
Параллельно запущена моя обработка, которая определяет наличие этого файла, обрабатывает его и кладет новый файл с форматированным кодом рядом. Скрипту СНЕГОПАТА останется только получить текст из нового файла и заменить его на старый.
...
Автору такого скрипта с такой логикой или более удачной - в подарок эта обработка.
...
В будущем предполагается развитие данной обработки и наращивание функционала.
В целом это должно вылиться в небольшую конфигурацию, которая будет контролировать корректность написания кода по оформлению, орфографии, повторяемости процедур и функций, наличие циклов в циклах, запросов в циклах и тому подобное.
8. pumbaE 19.12.12 19:49 Сейчас в теме
(5) зачем же так сложно. Если есть обычная форма, то можно отделаться 5 строчками кода. Например для портирования обработки анализа цикломатической сложности кода, я добавил в модуль такие строки:
Процедура МакросАнализЦикломатическойСложностиТекущегоМодуля() Экспорт
	ТекстовоеОкно = Конфигуратор.snegopat.activeTextWindow();
	
	Если ТекстовоеОкно = Неопределено Тогда
		глВывестиСообщение("Не найдено текстовое окно!");
		Возврат;
	КонецЕсли;
	
	ИсходныйКод = ТекстовоеОкно.text;
	ТекстМодуля = ИсходныйКод;
	
	Форма = ПолучитьФорму("Форма");
	ВычислитьСложностьТекстаМодуля();
	Форма.ЭлементыФормы.Панель1.ТекущаяСтраница = Форма.ЭлементыФормы.Панель1.Страницы.СтраницаРезультаты;
	Форма.ОткрытьМодально();
	
КонецПроцедуры
Показать
и у меня теперь прям из конфигуратора работает данная обработка Пример

Так, что если у вас весь разбор делается в модуле и сильно не завязано на управляемые формы, то можно легко и просто добавить вызов данной обработки прям из конфигуратора.

Посмотрите на скрипт spellchecker.js , там тоже есть проверка как word так и libreoffice.
10. Sibars 351 19.12.12 19:55 Сейчас в теме
(8) pumbaE,
Интересно. Спасибо.
Все форматирование происходит в модуле объекта. на формах реализованы только выбор настроек и вывод результата.
Еще бы придумать как настройки легко менять и будет вообще все в ажуре.
В принципе если заодно передать настройки в строке в формате XML можно для основного форматирования вообще обойтись без интерфейса.
А обработку использовать для создания настроек :)
Готовы взяться за сопряжение со СНЕГОПАТОМ?
12. pumbaE 19.12.12 20:07 Сейчас в теме
(10) готов. Пишите на мыло. Мой профиль Сосна Евгений e-mail в скриптах думаю найдете :)
13. Sibars 351 19.12.12 20:10 Сейчас в теме
(12) pumbaE,
Отлично! Завтра Вам напишу.
14. Модератор раздела 20.12.12 11:10 Сейчас в теме
Обработка полезна, но денежек жалко.
Сопряжение со Снегопатом платной разработки?
(12) Жень, неужели будешь работать с платной? или сделаешь интеграцию со Снегопатом, а автор снимет платность? :)
15. Sibars 351 20.12.12 11:30 Сейчас в теме
(14) artbear,
Если обработка не полезна, то ей нет места ни в платном разделе, ни в бесплатном.
...
Посмотрим как это получится объединить со СНЕГОПАТОМ.
...
Возможно эта обработка через некоторое время станет продуктом лайт (то есть демкой, то бишь бесплатной).
А платной станет конфигурация, с большим функционалом.
Вопрос только сколько будет стоить эта конфигурация :)
Поэтому есть смысл купить обработку сейчас, что бы потом не платить больше.
Равно как и есть смысл подождать, когда обработка станет бесплатной.
Решение за вами!
4. pumbaE 19.12.12 19:27 Сейчас в теме
Какой движок будете использовать для проверки орфографии?
совет: не забудьте добавить правила для исключений префиксов и суффиксов при проверке.
6. Sibars 351 19.12.12 19:35 Сейчас в теме
(4) pumbaE,
Для орфографии будем использовать старый добрый Word.
C предложениями по вариантам замены, словарем исключений.
За совет спасибо. Префиксы и суффиксы постараемся учесть.
7. Sibars 351 19.12.12 19:38 Сейчас в теме
Вообще идея такого автоформатирования родилась тогда, когда в отделе разработчики стали высказывать друг другу свои соображения по поводу как правильно надо оформлять код и что чужой код читать невыносимо.
Идея этой обработки заключается в том, что не надо переучиваться под единый стандарт, если привести к общему знаменателю можно набором достаточно нехитрых алгоритмов.
9. w-divin 19.12.12 19:53 Сейчас в теме
прикольненько, но жаба давит...
а по поводу снегопата (юзверем которого также являюсь) там есть подобный механизм: format.js Функционал конечно послабее, но для халявного варианта хватает...
11. Sibars 351 19.12.12 20:00 Сейчас в теме
(9) w-divin,
Жаба она такая :)
А функционал будем наращивать! Планов - громадье)
И, надеюсь, задавим Вашу жабу объемом возможностей!
16. tormozit 7133 20.12.12 11:55 Сейчас в теме
17. _also 484 20.12.12 23:42 Сейчас в теме
мне кажется актуально только со снегопатом, а pumbaE пора Снегопат store открывать ))). Скрипты по 99 центов будут разлетаться только в путь))
Dimon93dimon; w-divin; Sibars; +3 Ответить
18. Sibars 351 09.01.13 18:20 Сейчас в теме
Решил выложить в общий доступ.
Работа по интегрированию в снегопат ведется.
Надеюсь у Евгения хватит терпения общаться с таким невеждой в JS как я и допилить функционал до рабочей версии.)
20. Модератор раздела 10.01.13 12:12 Сейчас в теме
(18) Молодец, спасибо.
Ждем скрипт для снегопата.
Готов помогать в его тестировании и добавлении хотелок
21. Sibars 351 10.01.13 12:16 Сейчас в теме
(20) artbear, Возражений никаких нет, только приветствую).
А то из меня тестировщик не очень получается - то уеду, то подключить библиотеку не могу.
Если Евгений aka pumbaE не возражает, то милости просим)
19. dyak84 09.01.13 18:51 Сейчас в теме
Судя по скрин шотам вещь довольно интересная и нужная (автоматические ошибки бывает проскакивают что есть то есть). Появятся деньги обязательно скачаю. Автору спасибо
22. Модератор раздела 10.01.13 12:27 Сейчас в теме
(22) Вряд ли Женя будет возражать, он меня знает :)
Женя, пиши в Гугл+ или гмейл напрямую.
23. WKBAPKA 214 10.01.13 13:36 Сейчас в теме
а я немного покритикую... даже работая в режиме аврала я код оформляю как следует... единственное, чего я не делаю, так это не документирую, чего иногда не хватает...
а тем кто пишет как попало, вообще головы поотрывал бы... когда читаешь их код, думаешь, что они курили... я не в плане алгоритма, а в плане оформления, что бы удобно было читать... но за работу плюс
24. Sibars 351 10.01.13 13:43 Сейчас в теме
(23) WKBAPKA, Это не критика, а повсеместная действительность )))
Именно из-за этого данная работа и была проделана.
1. Когда видишь такой код - спокойно его форматируешь, и читаешь уже более привычном формате.
2. Когда одну конфу пишут несколько человек, что бы не заставлять и не переучивать людей к единообразному оформлению. перед сдачей прогоняешь через обработку и получаешь единообразный код.
25. WKBAPKA 214 10.01.13 13:47 Сейчас в теме
(24)
если с этой точки зрения, когда пишут несколько человек, согласен, нужная вещь... вот интересно, а форматирует код под один шаблон, или можно под себя настраивать? а то не очень хорошо получается, пишут несколько человек, а код форматируется под одного человека ;)
26. Sibars 351 10.01.13 13:50 Сейчас в теме
(25) WKBAPKA, Можно хранить неограниченное количество настроек.
Мы у себя в отделе за основу приняли стандарты оформления изложенные на диске ИТС + оптимизировали под себя.
Форматироваться код должен не под одного человека, а с точки зрения правил принятых между разработчиками -участниками.
27. pumbaE 10.01.13 14:24 Сейчас в теме
Добавлю от себя, к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует. Эх...
35. AlexO 135 21.01.13 11:32 Сейчас в теме
(27) pumbaE,
к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует.

по-моему, такие обработки еще больше всего напихают в код, чего там и не нужно вовсе было, и безмерно его утяжелят.
36. pumbaE 21.01.13 12:06 Сейчас в теме
(35) AlexO, при должной настройке наоборот помогают исправить некоторые недочеты, которые на первый взгляд и не видны.

alt+shift+f - это хорошо, но как показано на рисунке, после обработки значительно лучше выглядит текст.
Прикрепленные файлы:
37. AlexO 135 21.01.13 14:32 Сейчас в теме
(36) pumbaE,
ну вот сразу - вот это "фНеОтбиратьПодразделение" - это что такое? Фукнция без скобок? :)
38. pumbaE 21.01.13 14:56 Сейчас в теме
(37) AlexO, прочтите еще раз (27) - данная обработка от говнокода не спасет, но вот от "ИНаче" , "ЕСли" и т.д. очень даже помогает. Я очень надеялся, что может быть достаточно такой код отформатировать нормально и станет чуть легче, но (27) .

Еще раз хочу акцентировать внимание, лучше уж отформаированный говнокод, чем неотформатированный.
Brawler; Sibars; +2 Ответить
28. pumbaE 10.01.13 14:27 Сейчас в теме
В обработке ошибка, там остались вызовы процедур для снегопата, чтобы работала и в предприятии необходимо закомментировать процедуры "МакросФорматированиеВыделенногоТекста" , "ФорматированиеТекстаПоНастройке", "МакросФорматированиеВыделенногоТекстаФорма".
29. Sibars 351 10.01.13 14:34 Сейчас в теме
(28) pumbaE, Евгений, ошибки нет, так как я выложил обработку не адаптированную под СНЕГОПАТ.
30. pumbaE 10.01.13 14:41 Сейчас в теме
Прошу прощения, значит меня ввели в заблуждение.
31. Sibars 351 10.01.13 17:16 Сейчас в теме
(30) pumbaE, Это я сам себя ввел в заблуждение. Теперь исправил. Обработку обновил.
32. mzelensky 53 16.01.13 08:02 Сейчас в теме
довольно забавная штука
33. ZhokhovM 716 21.01.13 11:19 Сейчас в теме
Доброго времени суток! Добавьте ещё изменения:

1. 0 (пробел) 0 (кол-во пробелов до и после)
Пример:
Возврат (пробелы) СтруктураДействий; -> Возврат СтруктураДействий;

2.Расшифровка представления
Пример:
// ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ -> // ДанныеПараметры - ТИПДАННЫХ - Данные параметры
39. Sibars 351 21.01.13 16:42 Сейчас в теме
(33) Maxim2012,
От двойных пробелов убирает.
Возврат СтруктураДействий; -> Возврат СтруктураДействий;
..
Описание добавляет, если его нет, если описание есть - то оставляет его нетронутым

// ДанныеПараметры - ТИПДАННЫХ -> // ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ
, но если
// ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ -> // ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ
34. AlexO 135 21.01.13 11:30 Сейчас в теме
(0) есть такая функция в 1С - Alt+Shift+F
Все остальное - это придумывание себе работы.
Формуляты-оформляты....
Лучше б код писали грамотней.
И коментарии ставили....
shard; roofless; VovkaPutin; +3 Ответить
40. v.l. 434 22.01.13 18:08 Сейчас в теме
(0) Никак не избавлюсь от двойной пустой строки:
настроено пропускать строку после КонецЕсли/КонецЦикла
и пропускать строку перед КонецПроцедуры/КонецФункции

Оба правила накладываются и получаются некрасивые две пустые строки.
41. Sibars 351 24.01.13 06:16 Сейчас в теме
(40) vladal, Не могу повторить такой же ситуации у себя. Если возможно, пришлите на d.d.kruglov@gmail.com файл настроек и текст для форматирования, в котором есть появляются две пустых строки.
42. Maxis 25.01.13 10:26 Сейчас в теме
Интересная обработка! Но сам стараюсь изначально код оформлять нормально: так его и для себя в процессе работы читать проще)
43. GerHard 5 08.02.13 00:09 Сейчас в теме
Вот что, снегопатофаны... Обработочка полезная, автору плюс.
У меня практически всегда когда что-то пишу рядом открыт и пользовательский режим. Не проблема CTRL-C CTRL-V пару раз жамкнуть. А учитывая возможность настройки под себя - да вообще вполне самостоятельная вещь.
44. Sibars 351 08.02.13 05:42 Сейчас в теме
(43) GerHard спасибо).
По снегопату: Евгений (pumbaE) написал интеграцию к снегопату.
И соответственно, кто хочет - может использовать обработку как самостоятельную, кто со снегопатом - может загрузить ее функционал в него)
45. internetname 08.02.13 13:04 Сейчас в теме
Как-то привык уже сразу все форматировать.
46. Геннадьевич 18 22.03.13 19:17 Сейчас в теме
На мой взгляд - полезно, но не удобно.

Что за СНЕГОПАД? Дайте ссылку посмотреть.
47. pumbaE 22.03.13 19:23 Сейчас в теме
48. Геннадьевич 18 22.03.13 19:54 Сейчас в теме
(47) pumbaE, Спасибо, но вроде писали что эта разработка бесплатна.
49. pumbaE 22.03.13 19:57 Сейчас в теме
(48) Геннадьевич, эта разработка да - бесплатна, а инструмент платный.
50. ponaroshku 16.04.13 10:04 Сейчас в теме
51. dour-dead 270 11.06.13 08:49 Сейчас в теме
52. v.l. 434 01.04.14 19:04 Сейчас в теме
(0) Вот что обнаружил: в форматной строке с разными локалями делается перенос после первой точки с запятой. В результате появляется разрыв строкового параметра и синтаксическая ошибка.
Пример:
НСтр("ru = 'Накладная на перемещение';uk = 'Накладна на переміщення'", КодЯзыкаПечать)
разбивается на несколько строк и производится выравнивание знака равенства по самой длинной строке в блоке, добавляя 139 пробелов:
НСтр("ru = 'Накладная на перемещение';
	uk                                                                                                                                          = 'Накладна на переміщення'", КодЯзыкаПечать)
Я думаю, что в блоке поиска перевода строки по точке с запятой надо смотреть на парность кавычек.
53. break 33 08.05.14 12:03 Сейчас в теме
не хватает выравнивания по запятой
55. v.l. 434 18.09.14 23:44 Сейчас в теме
(53) break, поддерживаю.
Пробовал нарисовать такое, да где-то прокол вышел - они потом все равно переформатируются.

(0) Что еще заметил: обработка режет большие комментарии - закомментированные блоки или текстовые описания и пояснения.
54. dour-dead 270 23.05.14 13:53 Сейчас в теме
Не большой троллинг.
А так автору спасибо.
Прикрепленные файлы:
56. Sibars 351 19.09.14 07:05 Сейчас в теме
Рад, что обработка оказалась полезной. Прошу прощения за долгое молчание - загруз на работе.
Ошибки и недочеты безусловно есть, но как часто бывает, нет времени их устранить, тем более, что после написания обработки стал писать код сразу правильно :))
Если у кого есть желание дописать обработку - welcome! Могу опубликовать обновленную версию у себя, можете выложить ее в своем блоге - ссылку на обновление здесь размещу.
57. shard 279 08.12.22 11:52 Сейчас в теме
Представляю какой бардак должен быть в голове у разраба, чтобы выдавать код со скринов "до"))))
Оставьте свое сообщение