1 votes

Les expressions conditionnelles doivent-elles être placées à l'intérieur ou à l'extérieur des classes ?

Il semble que je veuille souvent exécuter certaines méthodes d'une classe lorsque je l'appelle et que le choix de la fonction dépende d'une certaine condition. Cela m'amène à écrire des classes comme dans le cas 1 car cela me permet d'inclure rapidement leur fonctionnalité. L'alternative serait le cas 2 qui peut prendre beaucoup de temps s'il y a beaucoup de code et qui signifie également que du code est écrit deux fois lorsque je place la classe dans différentes pages.

Cela dit, le cas n° 1 me semble très mauvais pour une raison que je n'arrive pas à mettre en évidence. Je n'ai pas vraiment vu de classes écrites comme cela, je suppose.

Y a-t-il un problème à écrire des classes comme dans le cas 1 ou le cas 2 est-il supérieur ? Existe-t-il une meilleure méthode ? Quels sont les avantages et les inconvénients de chacun ?

Cas 1

class Foo {
    public function __construct($bar) {
        if($bar = 'action1') $this->method1();
        else if($bar = 'action2') $this->method2();
        else $this->method1();
        }

    public function method1() { }
    public function method2() { }
    }

$bar = 'action1'
$foo = new Foo($bar);

Cas 2

class Foo {
    public function __construct() { }
    public function method1() { }
    public function method2() { }
    }

$foo = new Foo;
$bar = 'action1';
if($bar == 'action1') $foo->method1();
else if($bar == 'action2') $foo->method2();
else $foo->method1();

0voto

Ignacio Vazquez-Abrams Points 312628

Si l'initialisation de l'objet exige l'une des méthodes à appeler, alors appelez-en une. Sinon, la deuxième forme est acceptable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X