Имя: Пароль:
1C
 
Рефакторинг как способ программирования
0 Волшебник
 
16.08.25
15:08
Что-то мысль возникла внезапная, интегральная...

Ведь любое программирование это по сути рефакторинг, который делает из говна конфетку.
Сначала пишется ХОТЬ КАКОЙ-ТО рабочий код, который потом преобразуется в более-менее оптимальный, причём не по скорости, а по КРАСОТЕ.
Я прав или нет?

Пишите, что такое КРАСОТА программного кода?
1 Asmody
 
16.08.25
15:10
(0) приходи на "Жёлтую конфу" в октябре, я буду докладывать доклад на эту тему 😁
2 Волшебник
 
16.08.25
15:22
(1) круто! А выделишь мне 5 минут микрофона? я тоже добавлю от себя.
3 Волшебник
 
16.08.25
15:27
Хотя стоп, я тогда претендую на полноценный доклад
4 RomanYS
 
16.08.25
15:37
(0) Что мешает сразу делать красиво? Переписывать явно сложнее и результат будет хуже.
Или это про мечту, что джуны наговнокодят, а ИИ забесплатно из г..на конфетку сделают?
5 Волшебник
 
16.08.25
15:46
(4) Скорее наоборот. Сначала ИИ делает говнокод, из которого джун делает конфетку.
6 Asmody
 
16.08.25
16:02
(4) ты ещё предложи сразу без ошибок писать
7 Злопчинский
 
16.08.25
16:16
(0) это когда понятно что написано.
Это необязательно м.б. и прямо уж эффективно, но понятно что должен делать код и даже почему. Вполне можно отрефакторить позже в сторону большей оптимальности/эффективности.
.
По своим наблюдениям - если фейс у проги корявый то и код гунявый (про 1с говорю). Унификация интерфейса как это сейчас в 1с в части "описываемого интерфейса" отчасти не дает майстрячить адский шлак самописок/доработок (как это в 77), но в целом как-то так связь имхо наблюдается.
.
По своему опыту первая итерация кода - базовая, в целом стараюсь писать аккуратно, хотя бы чтобы смысл кода был понятен. Если есть возможность - то вторая итерация - рефакторинг и оптимизация. Третья итерация - чтобы было красиво. Чем более редко используется код - тем менее вероятность второй и третье итерации. Ну и чем костыльнее решение (нужно вчера!) - тем меньше вероятность что базовый вариант код будет рефакторен когда-нибудь... Как-то вот так у меня. Как обстоит дело у восьмерочников - не знаю. Хорошо писать получается когда пишешь от души и для души, но таковое, видимо, редко среди погромистов 1с...
8 RomanYS
 
16.08.25
16:16
(6) К этому надо стремиться)
Делать специально ошибки чтобы было что рефакторить, вот это стратегия)
9 Chameleon1980
 
16.08.25
16:19
(8) работу нужно беречь !
10 Маленький Вопросик
 
16.08.25
17:41
Красота программного кода - когда можешь нарисовать блок-схему взаимозависимых и точечных процедур и функций, посмотрев на этот код как бы сверху


Напишу об этом в 1с - этого не хватает в конфигураторе!
11 Злопчинский
 
16.08.25
18:22
(10) в Спортлото еще можно написать...
12 Маленький Вопросик
 
16.08.25
18:24
(11) вот ты и пиши
13 p-soft
 
16.08.25
18:55
(0) ваще неверный посыл. если делать говно, говно и получится. рефакторинг только продлит агонию говна. ну еще можно применить волшебство маркетинга, но сути говна оно все равно не меняет.

красота программного кода - штука очень субьективная. вот щас меня моя поделка возбуждает, я прямо крут. через пол года смотрю - гавно ведь, как есть, как будто не сам писал..
14 Krendel
 
16.08.25
19:56
(0) ты открыл эволюцию
15 2mugik
 
16.08.25
20:18
(1) сделай доклад на мисте. Зачем эти продователи курсов.
16 Волшебник
 
16.08.25
20:51
(14) нет, это другое. Это больше похоже на креационизм
17 H A D G E H O G s
 
16.08.25
22:09
(4) Когда тема новая и ты не уверен, что сработает.
18 Garykom
 
гуру
17.08.25
00:21
Лучше сразу писать хорошо и не писать плохо
Но это очень редко получается

Рефакторинг это нормально, ненормально когда в попытке сделать идеальный код забывают об отношении качество/затраты

И да сразу сделать конфетку не выйдет
Но в тоже время рефакторинг может сделать хуже, более непонятный и непростой код
Который будет сложней поддерживать/допиливать
19 Мимохожий Однако
 
17.08.25
07:54
Красота кода - это эмоциональная оценка работающих алгоритмов, соответствующих поставленной задаче. По причине эмоциональности слишком много субъективных оценок от каждого аналитика предложенного кода. Стремятся к красоте все в той или иной мере, но, как и любой идеал, не достижим. Вот такой вечный движитель
20 Asmody
 
17.08.25
14:14
В (0) посыл изначально неверный.
Рефакторинг - это не про красоту, а красота - это следствие, побочный эффект.
21 MWWRuza
 
гуру
17.08.25
20:03
Если я вообще понимаю, что такое рефакторинг...
К примеру. Есть какая-то задача. ТЗ поставлено, вроде как исчерпывающее. Вроде как и все по нему сделал, работает. Но в процессе отладки и первого периода эксплуатации вылезают "нюансы", которые на момент постановки задачи было сложно или даже невозможно предвидеть. Уже готовую задачу, вылизываешь, различными "ответвлениями чуть в сторону", по методу "латания дыр", по сути "на ходу", когда некогда красоту наводить, клиенту работать нужно. И вот, в один прекрасный момент, количество этих заплаток начинает зашкаливать, и сам в своем коде начинаешь путаться, поскольку он становится трудночитаемым... Вот тогда и наступает момент, когда часть задачи проще переписать заново, уже с учетом приобретенного опыта по конкретной задаче, в процессе отладки и "латания дыр".
Как правило, это бывает проще, чем навести порядок в имеющемся коде. И результат получается значительно красивее. Вот это, в моем понятии и есть классический пример рефакторинга...
22 Злопчинский
 
17.08.25
23:20
(21) Это не тз было, а хрень. Если нюанс приводит к тому, что работать невозможно и надо костыль срочно лепить.
23 ILM
 
гуру
18.08.25
07:55
(0) Красота - она в глазах смотрящего.
Очень субъективное понятие красивости. Вот код ЗУП некрасивый, а код УТ красивый.
Я не могу понять и объяснить почему так.
Может  это зависит от лёгкости понимания и восприятия. В УПП код прекрасен, а в ЕРП просто красивый.
24 Asmody
 
18.08.25
08:00
(23) [В УПП код прекрасен, а в ЕРП просто красивый] - странные у вас понятия о красоте
25 maxab72
 
18.08.25
08:13
Код может быть красивый, если алгоритм в него заложенный тоже красивый. Из дерьма конфетку не слепишь, максимум получишь дерьмовую конфетку...
И вполне рабочий код часто сколько не бейся, красивым не сделать, потому что часто нет времени на проработку алгоритма, и просто вколачиваешь код, который хоть как-то криво-коряво но будет работать. Если дойдут руки потом - скорее всего все будет переписано полностью.
и многие решения, которые сейчас кажутся уродливыми, тянутся уже много лет, потому  что когда принималось решение делать именно так, условия были другие, и это решение имело больше плюсов чем остальные.
26 ILM
 
гуру
18.08.25
08:35
(24) Я воспитан на традиционных ценостях )))
27 Ватт
 
18.08.25
10:08
(0) Красота когда нет пестроты костылей, когда всё что нужно учтено в общей архитектуре, когда понятные и в меру универсальные программные интерфейсы.
28 scanduta
 
18.08.25
10:17
(23) Про ЗУП соглашусь , код очень некрасивый , к сожалению
29 scanduta
 
18.08.25
10:41
А еще для красивого кода , на мой взгляд, одно из самых важных условий - это грамотная архитектура.

Если грамотной архитектуры нет(как пример ERP) - и код становится некрасивым, очень сложно написать красивый код под плохую архитектуру

А под хорошую грамотную архитектуру и код словно по маслу идет красивый
30 unenu
 
18.08.25
10:23
Создатель красоты сразу видит детали, причем чем глубже видение детализации - тем более прекрасно творение.

Это касается не только кода, но и практически всего.

Именно поэтому физики столетиями бьются над "теорией всего" и пока в прострации, ибо упускают невероятные детали.

Примеров прекрасного в искусстве, науке, жизни масса.
Примеров ужасного в любых проявлениях мысли также масса,
потому что ...читай кратко.

Кратко:
Главный базис красоты - глубочайшая детализация.
При условии, что у творца есть талант, знания и время.
31 PLUT
 
гуру
18.08.25
10:27
(30) проходит мимо физиков молодая девушка

физики задумчиво ей вслед - как интересно красиво сгруппировались атомы...
32 strange2007
 
18.08.25
10:47
(0) >> что такое КРАСОТА программного кода?
Хороший код, это когда любой среднячок может его доработать с минимальными трудозатратами. Плохой код, это когда автор лично через год лезет его модернизировать и переписывает его с нуля. Я лично так классифицирую.
Про рефакторинг тоже есть свой подход - использую модульную систему разработки, что сильно минимизирует трудозатраты при изучении и модернизации чужого кода. Конечно это не всегда работает, но часто помогает хорошо
33 Timon1405
 
18.08.25
10:57
красота и понятность часто несовместимы

https://habr.com/ru/companies/ruvds/articles/510266/

Основную часть генератора лабиринтов написал какой-то уволившийся торчок. Я связался с ним, чтобы выяснить, как его алгоритм работал. Он ответил, что придумал этот алгоритм, когда был вусмерть накурен и вдобавок пьян, что написал его сразу на ассемблере прежде чем вырубился, а потом даже близко не мог вспомнить, в чем его алгоритм состоял.
34 MWWRuza
 
гуру
18.08.25
11:16
(22) Это не тз было, а хрень.

Сереж, соглашусь, но лишь от части. Да, когда ты пилишь задачу в команде, когда есть грамотные аналитики, консультанты, постановщики задач - то да. А когда ты один, и задачу по сути ставит клиент в общих чертах, а в тонкостях тебе самому приходится "додумывать" - то о нормальном ТЗ говорить не приходится...
Есть не только крупные компании и крупные проекты, есть еще и мелочь, от которой тоже никуда не деться...
Вот я пилю ЭДО свое, в 7.7, так, как штатного там нет. Уже несколько лет. Универсальное. От загрузки файлов из ЛК, до ЭДО лайт и СБИС внутри конфы. Заработало оно почти сразу - но, в процессе, выяснилось - вроде есть формат УПД, официальный, утвержденный ФНС... Но, он допускает кучу вариаций - и сколько поставщиков, столько может быть и вариаций, одна извращенее другой :-)
Изначально было пара поставщиков, все вылизано, работает. Потом, появляется третий, у программистов которого свое видение формата... И начинается - у первых двух работает, а у третьего что-то пошло не так, и его накладные "ложатся в программу" не так, как хотелось-бы... Допиливаешь. И так дальше.
И кроме того, наши законотворцы, скучать не дают... Это в процессе эксплуатации, как правило код не упрощает, а только запутывает.
И как было на этапе постановки задачи, предугадать, кто из контрагентов как извратится? Или, что законотворцам в голову стукнет? Сделать "универсально", четко в границах формата? Но, тогда многие "удобняшки" не будут работать... Писатели типовых как раз и идут по этому принципу... Но, хочется как лучше! А получается как всегда :-(  И вот, периодически, приходится отдельные фрагменты переделывать заново. Вот и все ТЗ, какое бы оно не было...
35 PLUT
 
гуру
18.08.25
11:23
(33) кто этот сумрачный гений, который для 1с7.7 склонение фио написал? может есть желающие, кто по красоте рефакторинг сделает?

// (c) Jurer Production Begin ( Start )
// http://superjur.narod.ru

цытата оттудова:
Функция Падежик(z1,z2=2,z3=3,Знач z4="123",z5=1) Экспорт
  Возврат?(z5<4,Падежик(СокрЛП(СтрЗаменить(Сред(z1,Найти(z1+" "," ")+1),".",". ")),z2,z3,СтрЗаменить(z4,z5,ПадежС(Лев(z1,Найти(z1+" "," ")-1),z2,Сред("ча"+НРег(Прав(СокрП(z1),1)),z3,1),z5)+" "),z5+1),z4);
КонецФункции//Падежик
36 Timon1405
 
18.08.25
11:26
(35) ох флешбэки пошли, там еще рядом функция с склонением ФИО подобная была, в три раза страшнее этой)
37 PLUT
 
гуру
18.08.25
11:27
а если ИИ скормить и пусть объяснит, как она работает?

есть у кого ИИ на подсосе?
38 Timon1405
 
18.08.25
11:35
вопрос в зал, красив ли код и если нет то почему

Функция СтранаПроисхождения(ЗаказКлиента)
    Возврат ЗаказКлиента.Контрагент.ГоловнойКонтрагент.ЮридическийАдрес.Страна;
КонецФункции
39 PLUT
 
гуру
18.08.25
11:35
(38) уродлив

разврат из функции где?
40 Timon1405
 
18.08.25
11:35
ну хорошо, добавим возврат
41 spiller26
 
18.08.25
11:39
ИИ не доверяю никак.
Иногда рефакторинг нужен, особенно после "некоторых.
Бывает аж тошно ковыряться в чужом коде, потом психуешь и пишешь заново всё, т.к. понимаешь что код говно.
42 Garykom
 
гуру
18.08.25
11:41
(38) Код странный
Если не в цикле, то проще без функции, так прямо и писать в нужном месте

Если в цикле (или в разных местах юзать чтобы), то логичней через запросы, на вход один или несколько контрагентов (или других объектов)
43 maxab72
 
18.08.25
11:41
(38) плохой и некрасивый код. если в функцию строку с номером заказа кто кинет - где отлуп, мол "чё ты тут суешь всяку хрень!!! урод блин...".
44 ejikbeznojek
 
18.08.25
12:06
(38) ну многовато точек.
И имя функции наверное правильно было бы Страна происхождения по номеру заказа.
И таки да, как-то правильнее что-ли не заказ на вход передавать.
45 Garykom
 
гуру
18.08.25
12:46
(44) Многовато точек это да
Причем каждая отдельный запрос порождает, который целиком объект дергает

Вот с точки зрения быстродействия лучше один запрос с кучей таблиц/соединений
Но код будет сильно больше места занимать это да

Хотя и работать более универсальней и быстрей/оптимальней конечно

Но в тоже самое время код с текстами запросов хуже поддается последующему рефакторингу
Там думать надо/приходится а не тупо заменять
46 Галахад
 
гуру
18.08.25
12:47
(38) Ну как минимум позволяет не забивать голову выяснением что есть эта самая страна происхождения.
47 Мультук
 
гуру
18.08.25
12:51
(38)

Накладные  расходы по получению таб.частей , особенно если заказКлиента это ссылка, вас не тревожат ?
48 d4rkmesa
 
18.08.25
13:01
(46) Страна происхождения заказа клиента? ) Сам термин сомнительный немного.
49 Галахад
 
гуру
18.08.25
13:08
(48) А представь на минуту такой код:
Объект.СП = ЗаказКлиента.Контрагент.ГоловнойКонтрагент.ЮридическийАдрес.Страна;
Можно много минут провести даря автору лучи добра.
50 maxab72
 
18.08.25
13:13
(49) особенно если у контрагента нет головного контрагента.
51 Timon1405
 
18.08.25
13:23
(42) (47) (50) пусть будет запросом, даже с проверкой на пустой результат, такой код пройдёт Ваше ревью?

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ЗаказКлиента.Контрагент.ГоловнойКонтрагент.ЮридическийАдрес.Страна как Страна
|ИЗ
|    Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
|    ЗаказКлиента.Ссылка = &ЗаказКлиента";
Запрос.УстановитьПараметр("ЗаказКлиента", ЗаказКлиента);
РезультатЗапроса = Запрос.Выполнить();
Если не РезультатЗапроса.Пустой() Тогда
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыборкаДетальныеЗаписи.Следующий();
    Возврат ВыборкаДетальныеЗаписи.Страна;
Иначе
    Возврат Справочники.КлассификаторСтранМира.ПустаяСсылка();
КонецЕсли;


(43) нет, если в функции описан контракт(в данном случае это "кинь ссылку на вход, верну страну"),
то обязанность вызывающего его соблюдать, иначе вызывающий сам дурак.
для вашего примера просто нужен тест где она упадёт
(48) допустим пишем мы апи, которое будет дергать модуль логистики, а они дальше будут что-то свое с маршрутом/пакетом документов делать в зависимости от страны.
52 Мультук
 
гуру
18.08.25
13:32
(51)

Не пройдёт. В запросе есть  неявное ЛЕВОЕ СОЕДИНЕНИЕ, а ЕСТЬNULL нет

В догонку

Внимание вопрос.
Если поле Контрагент или ГоловнойКонтрагент не заполнено (пустая ссылка), то
вернет ли код

Возврат ВыборкаДетальныеЗаписи.Страна;


ожидаемую (вроде как)
Справочники.КлассификаторСтранМира.ПустаяСсылка();


Запрос для теста. &ЗаказКлиента -- любой заказ клиента с пустым "Контрагент"

ВЫБРАТЬ
	ЗаказКлиента.Контрагент,
	ЗаказКлиента.Контрагент.ГоловнойКонтрагент КАК КонтрагентГоловнойКонтрагент,
	ЗаказКлиента.Контрагент.СтранаРегистрации.Наименование КАК КонтрагентСтранаРегистрацииНаименование,
	ТипЗначения(ЗаказКлиента.Контрагент.ГоловнойКонтрагент),
	ТипЗначения(ЗаказКлиента.Контрагент.СтранаРегистрации.Наименование)
ИЗ
	Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
	ЗаказКлиента.Ссылка = &ЗаказКлиента
53 maxab72
 
18.08.25
13:56
(52) это не УТ 11 (во всяком случае не из последних), там нет в контрагентах реквизита "ЮридическийАдрес" следовательно, мы не знаем какой тип в Юридическом адресе может принимать реквизит Страна. Может там составной тип данных, и могут быть справочники СтраныМира, КлассификаторСтранМира, Строка и еще черт в ступе. Эли так, то вернет Неопределено.
54 Timon1405
 
18.08.25
16:04
(52) вы не к тому цепляетесь. я просто обернул в запрос исходную строчку, чтобы показать что дело в не объектной модели.
Вы всё правильно пишете про пустых контрагентов в заказе, пустого Головного Контрагента итд, можете даже написать мега-запрос, который учтёт подобные случаи.
Но исходная ошибка глубже. подождём еще варианты
55 Dedal
 
18.08.25
17:20
(4) Когда ты разрабатываешь "понятную" часть можно писать красиво. Обычно, сначала хоть как-то, а уже потом если это действительно используется можно переделать в красиво.

И такой подход действительно экономит кучу времени, выясняется, что фича которую ЛПР пропихивал так рьяно и она прям "нужна-нужна" используется раз в квартал. И подождать 15 минут вместо 5, раз в квартал не критично.
56 Волшебник
 
18.08.25
19:07
Спасибо за конструктивные ответы. Я всё записываю!
57 Волшебник
 
18.08.25
19:52
(38) Не очень очевидная функция, какой-то мелкий хелпер.
Название функции лучше переделать, например, СтранаЮрАдресаГоловногоКонтрагента(Заказ)
Функция в одну строку — это обычно моветон. Зачем она нужна, кроме своего имени и передачи контекста куда-то?
58 Djelf
 
18.08.25
20:59
Что я могу сказать по некоторым наблюдениям, я очень долго слежу за развитием sqlite, больше 10 лет точно, слежу за всеми изменеиями в транке, слежу за описаниями. Бегло просматриватриваю но не все, но что-то просматриваю.

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

Плюс разработка через тестирование, а само тестирование занимает вроде уже больше кода, чем само ядро библиотеки.

У себя рефакторю, через какое-то время. Когда появился один костыль в одном месте, ладно, ладно, запихаем его как костыль, что бы по быстрому.
Потом в том же месте появляются 2,3,10 костылей.
Вот тогда и рефакторю на общий код костылей и отдельный для каждого костыля.
Без это код превращается в лапшу, где ничего понять невозможно.
Но и облегчается написание дальнейших костылей в том же стиле, пара строчек на ссылку для общего костыля, и он вызывает уже конкретные костыли, и сам костыль уже независим и логически понятен, т.к. он отделен от основного кода.

Ну и, конечно, если повторяемый код в 10-20 строк, а иногда и меньше, и встречается в 5-10 местах, то его рефакторю.
Тут главное баланс, если код после рефакторинга увеличивается, а такое постоянно встречается, то не понятно, стоит ли вообще это рефакторить, или стоит оставить как есть..
59 Ботаник Гарден Меран
 
18.08.25
20:36
(54)
Архитектурная претензия?
В стандартах 1С это называется "Самодостаточность регистров".
Страну надо хранить в заказе, если она так важна.
60 Волшебник
 
18.08.25
20:49
(59) Это нарушение 2-й или 3-й нормальной формы БД
61 Ботаник Гарден Меран
 
18.08.25
20:53
(60)
Нормальные формы - это не закон, можно и нарушать.
Следуя нормальным формам, во всех документах нужно удалить реквизит "Контрагент", ведь у договора всегда есть владелец.
62 Волшебник
 
18.08.25
20:56
(61) Категорически согласен! Более того, в движке миста форума нормальные формы осознанно нарушаются, чтобы в селектах не делать лишние соединения. Это ускоряет работу. МИСТА ФОРУМ просто летает!
С этим я согласен.

Но всё-таки. Тут речь про рефакторинг. Каждое нарушение нормальной формы БД будет оплачиваться. Это ж верно?
63 Timon1405
 
18.08.25
21:05
(57) Зачем она нужна, кроме своего имени и передачи контекста куда-то?
чем проще примеры тем лучше. юзер-стори вполне могло звучать примерно так: соседний отдел пилит логистическую систему и просит нас отдавать по апи, "страну контрагента заказа". они там дальше будут от нее или маршрут строить или на другой язык переводить итд от страны, неважно.
аналитик(или сам программист как у нас часто бывает) открыл карточку, увидел иерархию контрагентов, увидел юрадрес в нем страну, согласовал, бизнес это устроило, дали в разработку программисту. программист написал код и принёс его Вам на проверку, какие вопросы зададите вы программисту/аналитику и в каком направлении отправите их переделывать?
(59) претензия, конечно, архитектурная) допустим мы соблюдаем стандарты 1с, завели страну в заказе и будем ее сохранять перед записью. каким кодом туда её сохраните, исходным как в (38)?
64 Ботаник Гарден Меран
 
18.08.25
21:18
(62)
Мне как-то было скучно, и я полистал книгу Дейта, где он null в запросах критикует.
Вот где жесть.
65 MWWRuza
 
гуру
18.08.25
21:38
++++(58) Все именно так и есть.

"У себя рефакторю, через какое-то время. Когда появился один костыль в одном месте, ладно, ладно, запихаем его как костыль, что бы по быстрому.
Потом в том же месте появляются 2,3,10 костылей.
Вот тогда и рефакторю на общий код костылей и отдельный для каждого костыля.
Без это код превращается в лапшу, где ничего понять невозможно."

И это тоже, в точности:

"Ну и, конечно, если повторяемый код в 10-20 строк, а иногда и меньше, и встречается в 5-10 местах, то его рефакторю."

Антон, у нас с тобою, одинаковые видения процесса... Правда, у каждого в своей области, но общий принцип! :-)))
66 MWWRuza
 
гуру
18.08.25
21:43
Подчас, ради этого, даже приходится жертвовать простотой обновления - иногда, меняю структуру БД, ради правильного, красивого кода и алгоритмов...
Но, конечно, такие изменения сопровождаются написанием дополнительных обработок, помогающих преобразовать структуру при обновлении, что-бы недопустить потерь данных при реорганизации.
67 Волшебник
 
18.08.25
22:12
(66) Вот это очень интересная мысль: поменять структуру БД ради красивого кода. ИМХО, это и есть какой-то компромисс, который все ищут. Ну чтобы и строчек было мало, и чтобы база нормально себя чувствовала. Согласны?
68 Добряк Петрович
 
18.08.25
23:22
Рефакторинг сразу после написания рабочего кода - признак того, что исходный код писал неопытный, без четкого плана и понимания как правильно пишется качественный код.
Лучше потратить немного (или много) времени на хороший план, и сделать сразу качественно, потому что на рефакторинг уйдет еще больше времени.
Если нужно просто исправить недочеты и сделать код более красивым, то это не рефакторинг, а "причесывание".
Обычно свежий код прогоняется через Prettier, Linter, а по-современному через ИИ, и делается более красивым и качественным без изменения алгоритмов, это все на автомате без существенных затрат времени.
69 craxx
 
18.08.25
23:24
(68) Обычно надо быстро показать результат, когда пофиг на качество кода, лишь бы было что-то рабочее.
Хотя я, например, уже выработал в себе привычку писать нормально сразу. Это уважение к самому себе и к коллегам, которые потом это читать будут.
70 Волшебник
 
18.08.25
23:39
(69) 👍
71 mikecool
 
19.08.25
11:04
(0) стараюсь сразу писать конфетку (скромно потупя глаза)
начитался чистого кода и стараюсь его применять
72 Волшебник
 
19.08.25
11:14
(71) Покажите пример своего кода
73 Мультук
 
гуру
19.08.25
11:38
(0)

Хороший код хорошо читаем.
Хороший код -  модифицируем, расширяем. Т.е. он написан не в стиле one time, write only
Хороший код не содержит  логических ям.
Хороший код оптимизирован не в вакууме, а в нужных местах. В остальных местах он читаем.
Хороший код, это когда он претерпевает минимальные изменения
-- для отладки
-- для тестирования
-- при внесении очевидных хотелок и доработок


А не это всё
-- ой, а нам всё придется переписать
-- ой, а промежуточные результаты мы никак показать не можем
и хрен вы без отладки (или даже с ней) легко найдете ошибки в логике.

Опять таки, каждый пишет свой "хороший" код.
Я уверен, что мой "хороший" код выкинут на помойку "не глядя" где-нибудь в "Магнит", ибо стандарты.