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 :
1composer require degraciamathieu/php-arguments-detector --dev
Il suffira de lancer la commande inspect
depuis le bin phpargsdetector
pour analyser votre application :
1vendor/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 :
1vendor/bin/phpargsdetector inspect app/ --limit=5 --without-constructor
1+--------------------------------------------------+-------------------+-----------+--------+2| Files | Methods | Arguments | Weight |3+--------------------------------------------------+-------------------+-----------+--------+4| app/Actions/Youtube/LinkYoutubeCreator.php | execute | 5 | 45 |5| app/Actions/Twitch/LinkTwitchCreator.php | execute | 4 | 36 |6| app/Http/Middleware/RedirectIfAuthenticated.php | handle | 3 | 27 |7| app/Actions/Statistics/FillCreatorStatistics.php | fill | 2 | 20 |8| app/Actions/Youtube/LinkYoutubeCreator.php | retrieveChannelId | 2 | 14 |9+--------------------------------------------------+-------------------+-----------+--------+
Toutes les options disponibles sont accessibles sur le readme du package.
A lire
Autres articles de la même catégorie
PAN : L'Analytics PHP qui respecte la vie privée
L'outil simple et respectueux de la vie privée pour un suivi d'analytics minimaliste et efficace !
Laravel Jutsu
PHPStan: Un outil qui vous veut du bien
Découverte d’un outil qui analyse finement notre code afin d’y détecter des bugs !
William Suppo
Optimiser votre SEO avec les données Structurées
Les données structurées facilitent l'analyse et l'indexation de votre contenu par les automates SEO des moteurs de recherche
Antoine Benevaut