С TDD, контекстом и хуками

Прошло больше года с тех пор, как я написал



Несколько человек спросили меня, что я считаю архитектурой SOLID, и я ответил, что отвечу на этот вопрос, когда доберусь до этого. За последнюю неделю или около того я провел рефакторинг, который был достаточно простым, чтобы написать тематическое исследование, но достаточно сложным, чтобы продемонстрировать проблемы, о которых я говорил. Неожиданно он также показывает, как перехваты и даже Context могут помочь в сопровождении при правильном использовании.

Прежде чем начать, хочу сказать, что это не критика моих новых коллег. Фактически, в этой кодовой базе есть все удобства, как в поношенных джинсах. Однако код следует шаблонам, которые архитектура React облегчает, если не поощряет, и это приводит к тому, что код становится менее поддерживаемым, чем мог бы быть.

Билет

Билет был простым, хотя и немного расплывчатым. По сути, там говорилось о добавлении уже существующего виджета поиска в представление, в котором его нет. Большая часть команды была в отпуске, поэтому я как бы самостоятельно разбирал код и понимал все намерения владельца проекта.

Первое, что я сделал, это пошел и нашел места, где этот виджет уже использовался. Его использовали в двух местах. Не сразу были понятны все нюансы его поведения, но было ясно, что

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

К концу рефакторинга я в конце концов понял, что поведение похоже на эти упрощенные диаграммы: