php-arguments-detector

Découverte de paquets
Publié par Mathieu De Gracia

Le package php-arguments-detector permet de garder le contrôle sur la complexité de vos méthodes en s'assurant qu’elles ne possèdent pas trop d’arguments.

Dans son livre “Coder Proprement”, Robert C. Martin propose la maxime suivante : “The ideal number of arguments for a function is zero.”.

Une méthode avec plusieurs arguments sera probablement problématique et difficile à comprendre : que fait cette méthode, à quoi correspondent ces arguments, pourquoi dans ce sens, sont-ils optionnels ?

Inévitablement, les arguments augmentent les cas d’utilisation d’une méthode, la rendant à la fois complexe et plus difficile à tester de manière exhaustive.

Ainsi, pour ce quelques raisons, il sera profitable de garder un œil sur les arguments de vos méthodes et quand cela est possible de priviligier les méthodes niladique (sans argument).

Usage

Le package nécessite au minimum une version 7.3 de PHP, ce choix de ne pas utiliser PHP 8 fut volontaire afin de proposer le package au plus grand nombre.

Une fois installé dans vos dépendances :

composer require degraciamathieu/php-arguments-detector --dev

Il suffira de lancer la commande inspect depuis le bin phpargsdetector pour analyser votre application :

vendor/bin/phpargsdetector inspect app/

Le package propose plusieurs options pour affiner la détection.

Par exemple, si vous souhaitez afficher les 5 méthodes avec le plus d’arguments en excluant les constructeurs :

vendor/bin/phpargsdetector inspect app/ --limit=5 --without-constructor
+--------------------------------------------------+-------------------+-----------+--------+
| Files                                            | Methods           | Arguments | Weight |
+--------------------------------------------------+-------------------+-----------+--------+
| app/Actions/Youtube/LinkYoutubeCreator.php       | execute           | 5         | 45     |
| app/Actions/Twitch/LinkTwitchCreator.php         | execute           | 4         | 36     |
| app/Http/Middleware/RedirectIfAuthenticated.php  | handle            | 3         | 27     |
| app/Actions/Statistics/FillCreatorStatistics.php | fill              | 2         | 20     |
| app/Actions/Youtube/LinkYoutubeCreator.php       | retrieveChannelId | 2         | 14     |
+--------------------------------------------------+-------------------+-----------+--------+

Toutes les options disponibles sont accessibles sur le readme du package.