amarao (amarao_san) wrote,
amarao
amarao_san

Categories:

О рефакторинге

Разница между рефакторингом кода и его написанием - как между долгим рисунком и наброском. По сути долгий рисунок - это тот же набросок, в котором исправляют на более точное, прорабатывают детали.

Если делать сложный рисунок только наброском, то он быстро превратится в мешанину из чёрных линий в которых никто ничего уже не может увидеть. Надо стирать и проводить заново. Точнее, аккуратно. Может окзаться, что точно и аккуратно - это не там и не так, и тогда надо заново повторить весь процесс.

Долгий рисунок - это практически только устранение ошибок и ничего кроме.

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


Пожалуй, рисование даёт для программирования больше, чем я думал...

Более того, из того же рисования: когда исправляешь ошибки (криво нарисованное) нельзя зависать слишком долго над одним местом. Поправил самое вопиющее и грубое и всё, хватит. Дальше надо идти и смотреть целиком - где самое ужасное. Если пытаться довести до свершенства конкретно взятый кусочек, то хоть он станет приятным глазу, но может оказаться, что он не того размера, не там, не под тем углом или не учитывает ракурс. Лучше набросать "как было бы лучше" по минимуму (лишь бы виднелось) и после этого тут же переходить в другое место с ужасами. Есть вероятность, что когда снова вернёшься к первому кусочку, то он, казалось бы, был сделан правильно, но из-за того, что всё окружающее поменялось, опять не к месту и не такой. И куда проще переписать маленький кусочек (быстро набросанный), чем снова делать невероятно сложную работу.
Subscribe

  • апгрейдовое

    А вот шифрованный home я переносил вообще ленивым образом - тупо сделал dd для раздела и поправил путь к устройству для кастомного pam_exec-скрипта.…

  • VM VS baremetal

    Наконец-таки у меня появились цифры для обсуждения этого вопроса в отрыве от IO. Известно, что IO на виртуалках всегда медленее, чем на bare-metal, и…

  • (no subject)

    206761 – escape codes in network interface names causes chaos bugzilla.kernel.org echo -e '\x1B[2J'|xargs -I I sudo ip link add I type dummy…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments