PHP CodeIgniter

¿Por qué eliminé masivamente mis clases de utilidad (y tú también deberías hacerlo)?

Lo sé, estás pensando: "Pero mi clase ManejadorDeCadenas es útil." Yo también lo pensaba. Durante tres años, lo pensé.

Luego, lo medí realmente.

De los 47 métodos en nuestro amado ManejadorDeCadenas.php, solo 6 se usaban más de una vez. ¿El resto? Fantasmas. Escritos para un ticket que se entregó hace dos años, nunca más tocados, pero mantenidos diligentemente a través de cada actualización.

La auditoría

Ejecuté un análisis de código muerto y los resultados fueron brutales:

  • ManejadorDeCadenas — 47 métodos, 6 realmente usados
  • ManejadorDeArreglos — 31 métodos, 4 usados
  • ManejadorDeFechas — 22 métodos, 2 usados (y ambos eran envoltorios alrededor de métodos de una biblioteca de fechas)

Eso son 100 métodos acumulando polvo. Cada uno, un pequeño impuesto para cada desarrollador que abre ese archivo preguntándose "¿ya existe un método para esto?"

Qué hice en su lugar

Eliminé todos ellos. Sí, todos ellos. Luego:

  1. Incrusté los 12 métodos sobrevivientes donde fueron llamados
  2. Reemplacé los envoltorios de la biblioteca de fechas con llamadas directas a la biblioteca
  3. Creé traits con ámbito para los dos comportamientos genuinamente reutilizables

La base de código se redujo en 800 líneas. Las revisiones de PR se hicieron más rápidas porque nadie tenía que verificar si ya existía un ayudante. Los nuevos desarrolladores dejaron de preguntar "¿dónde coloco las funciones de utilidad?"

Por ejemplo, antes teníamos esto:

class ManejadorDeCadenas {
    public static function sanitizarCadena(string $cadena): string {
        $cadenaSanitizada = trim($cadena);
        $cadenaSanitizada = htmlspecialchars($cadenaSanitizada, ENT_QUOTES, 'UTF-8');
        return $cadenaSanitizada;
    }
}

// Uso
$input = ManejadorDeCadenas::sanitizarCadena($_POST['usuario']);

Ahora, simplemente:

$input = htmlspecialchars(trim($_POST['usuario']), ENT_QUOTES, 'UTF-8');

Eliminar la indirección innecesaria hace que el código sea más legible y fácil de entender.

La conclusión

Cada abstracción tiene un costo de mantenimiento. Si una función solo se usa una vez, no es una utilidad reutilizable, es una indirección. Elimínala. Tu yo futuro te lo agradecerá.


Generated with Gitvlg.com

¿Por qué eliminé masivamente mis clases de utilidad (y tú también deberías hacerlo)?
Maximiliano Frías

Maximiliano Frías

Author

Share: