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
Maîtriser vos données avec un DTO !
Analyse du paquet data-transfer-object de Spatie qui permet, à travers une entité, de rendre notre code plus consistant.
Gérer ses permissions avec laravel-permission
Présentation du paquet spatie/laravel-permission, une boîte à outils gérant les rôles et les permissions !
Connexion rapide en env de développement
Cet outil pratique de développement vous permet de vous identifier rapidement à un compte.