C'est pas robuste !

Toujours en train de casser Clearbricks, comme promis, et il y a bien un truc qui m’agace c’est l’usage de type de retour variés dans une seule et même fonction (ou méthode).

Exemple pris dans la classe record, classe qu’on utilise copieusement dans tout Dotclear :

    /**
     * Returns the current index position (0 is first) or move to <var>$row</var> if
     * specified.
     *
     * @param int    $row            Row number to move
     *
     * @return int|boolean
     */
    public function index(?int $row = null)
    {
        if ($row === null) {
            return $this->__index === null ? 0 : $this->__index;
        }

        if ($row < 0 || $row + 1 > $this->__info['rows']) {
            return false;
        }

        if ($this->__info['con']->db_result_seek($this->__result, (int) $row)) {
            $this->__index = $row;
            $this->setRow();
            $this->__info['con']->db_result_seek($this->__result, (int) $row);

            return true;
        }

        return false;
    }

Cette méthode peut renvoyer un entier ou un booléen (vrai ou faux), c’est ensuite à l’appelant de s’occuper de faire la distinction entre les types de retour fournis.

Autant je conçois que ça peut simplifier le code autant je trouve que ça complexifie la maintenance, surtout avec du code ancien.

C’est un des gros défauts de PHP, je trouve, et même si version après version on se dirige vers un typage fort, on y est pas encore !

PS : Je sais, cette méthode fait plusieurs choses et elle ne devrait pas, à mon humble avis, mais je ne vais pas tout ré-écrire :-p

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15459

Haut de page