TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #4478 2.97K
Как рефакторить метод с необязательными параметрами

Здесь обсуждается проблема, связанную с методами, имеющими необязательные параметры, которые могут вызывать неожиданные побочные эффекты. В качестве примера приводится класс PageRepository с методами find и findOrFail, у которых параметр $prerender имеет разные значения по умолчанию. Это может привести к ненамеренной предварительной отрисовке страницы, что является дорогостоящей операцией.

Пример проблемы:
Класс PageRepository содержит два метода:

find($pageId, $prerender = false), который по умолчанию не выполняет предварительную отрисовку.
findOrFail($pageId, $prerender = true), который по умолчанию выполняет предварительную отрисовку.

Возможные решения:

🟢Установить одинаковые значения по умолчанию для параметра $prerender.

🟢Явно указывать значение параметра.

🟢Разделить метод с флагом параметра на два отдельных метода. Это потребует от разработчика явного выбора функциональности, предотвращая ненамеренные побочные эффекты.
Lukapeharda How to Refactor a Method With Optional Params - Luka Peharda - PHP and JS developer While refactoring and optimising legacy code I've ran into a method signature inconsistency which caused performance issues and was being done without developer intention.
  • 👍 2
  • ❤ 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
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 →