TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1310 1.39K
День 1064. #Карьера
Чему Можно Научиться из Книг «Программист-прагматик» и «Идеальный программист». Часть 5
Часть 1
Часть 2
Часть 3
Часть 4

7. Важность рефакторинга
Вот определение рефакторинга, которое дал Мартин Фаулер:
Дисциплинированный метод реструктуризации существующей части кода, изменения его внутренней структуры без изменения его внешнего поведения.

Иногда вы найдёте код, который кажется неправильным, и его следует исправить или улучшить. И вы должны помнить, что лучший момент для этого - сейчас, когда вы его нашли. Это неизбежно: код программы должен расти, развиваться и улучшаться. Для этого вам нужно будет переосмыслить некоторые решения и изменить код. Поэтому убедитесь, что он покрыт тестами, чтобы гарантировать, что внешнее поведение не изменится.

В отличие от строительства, написание программ ближе к садоводству, оно ближе к живой природе, чем к бетонным конструкциям. Вы постоянно следите за состоянием сада и при необходимости вносите изменения.
— Программист-прагматик

Вот список подходящих ситуаций для рефакторинга:
- Убрать дублирование кода.
- Сделать некоторые части кода более ортогональными (независимыми друг от друга).
- Обновить устаревший код и/или документацию.
- Повысить производительность.

Вот советы Мартина Фаулера, как провести рефакторинг, не принеся больше вреда, чем пользы:
1. Не пытайтесь провести рефакторинг и добавить функциональность одновременно.
2. Прежде чем приступить к рефакторингу, убедитесь, что у вас есть хорошие тесты. Выполняйте тесты как можно чаще.
3. Делайте короткие, продуманные шаги: переместите поле из одного класса в другой, разделите метод, переименуйте переменную. Частый рефакторинг включает в себя внесение множества локализованных изменений, которые приводят к более масштабным изменениям.

Главное помнить, что рефакторинг - не конкретная задача, а привычка. И, как и в большинстве случаев в жизни, это легче делать, пока проблемы небольшие, как постоянное действие при написании кода. Чем меньше вы проводите рефакторинга сейчас, тем больше времени у вас займёт исправление проблемы в будущем.

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

8. Основные различия между книгами
Хотя эти книги посвящены схожим предметам, содержание и способ повествования в них не совпадают.
- В книге «Идеальный программист» больше говорится о ежедневной жизни разработчика. Уделяется внимание типичным ситуациям, которые возникают в работе, таким как отношения с отделом продаж или бизнесом, работа в команде или отказы клиентам. Разработчик в книге «Программист-прагматик» рассматривается не как работник. Скорее, даётся обзор области и предлагаются советы для любой ситуации.
- «Идеальный программист» рассматривает разработчика ПО как к профессионального программиста, в то время как «Программист-прагматик» вводит этот совершенно неожиданный термин.
- «Идеальный программист» носит более субъективный характер, поскольку в ней больше личного опыта автора. «Программист-прагматик» кажется более объективной, сосредотачиваясь в основном на советах.
- «Программист-прагматик» содержит больше примеров кода на разных языках программирования, чем «Идеальный программист», что помогает вам понять обсуждаемые концепции.

Источник: https://www.freecodecamp.org/news/lessons-learned-from-the-pragmatic-programmer-and-the-clean-coder/
  • 👍 3
More from @netdeveloperdiary
  1. Oct 17, 2026День 2817. #ЧтоНовенького #VS Прекращаем Сборку После Первой Ошибки Мэдс Кристенсен продол…
  2. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  3. Oct 15, 2026Post #3374
  4. Oct 14, 2026Post #3373
  5. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  6. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →