Skip to content

Código duplicado (parte 3)

Código duplicado en varias clases sin la misma herencia

Como era de esperarse, el código también podrá aparecer duplicado en diferentes clases pero que no tienen la misma herencia:

php
class B {
    function method_1() {
        self::property = strip_tags(self::$property);
        self::property = htmlentities(self::property);
        return self::methodA() . self::$property;
    }    
}

class C {
    function method_2() {
        self::property = strip_tags(self::$property);
        self::property = htmlentities(self::property);
        return self::$property . self::methodB() . self::methodC();
    }
}

En estos casos, la solución es extraer el código duplicado, crear una nueva clase y con el código extraído, crear un método para esta nueva clase que podrá ser heredada por las anteriores o simplemente, instanciada.

php
class A {
    static function method_3($parameter) {
        return htmlentities(strip_tags($parameter));
    }
}

class B {
    function method_1() {
        return self::methodA() . A::method_3(self::$property);
    }
}

class C {
    function method_2() {
        return A::method_3(self::$property)
            . self::methodB()
            . self::methodC();
    }
}

Finalmente nuestro objetivo debería ser contar con una plataforma de desarrollo simple y eficaz, que nos permita reutilizar el código invocado desde cualquier módulo, evitando tener que repensar problemas típicos (cotidianos) y concentrarnos solo en los problemas nuevos.