L'auteur décrit avec humour et frustration l'incroyable complexité des boutons radio dans un projet utilisant Shadcn, un framework UI basé sur Radix. Initialement simple avec une balise HTML native, le bouton radio devient un composant React complexe de 45 lignes, intégrant des dépendances externes pour un simple cercle. L'article explore les couches de complexité ajoutées par Shadcn et Radix, questionnant la nécessité de cette sur-ingénierie pour un élément basique. Il se termine avec ce bout de code qui permet de faire la même chose... en plus simple
input[type="radio"] {
/* Disable the browser's default radio button styles */
appearance: none;
margin: 0;
/* Recreate the circle container */
border: 1px solid black;
background: white;
border-radius: 50%;
/* Center our dot in the container */
display: inline-grid;
place-content: center;
/* Use a pseudo-element to display our "dot" */
&::before {
content: "";
width: 0.75rem;
height: 0.75rem;
border-radius: 50%;
}
/* And display it when the radio button is checked */
&:checked::before {
background: black;
}
}L'auteur analyse deux projets open source : DevDash (un de ses projets) et Kubernetes. Son analyse concerne essentiellement la complexité et son évolution. Il utilise git et awk.
L'auteur propose de mesurer le nombre de lignes de changement (ajout / suppression) par fichier pour les classer. Ceux qui changent beaucoup sont susceptibles d'être les plus complexes.
Il expose plusieurs autres points très intéressants.
L'auteur recommande d'utiliser d'abord les métriques les plus simples :
- nombre de lignes de code (LOC)
- la forme du code (indentation)
- le couplage structurel (couplage de contenu - le module A modifie le contenu du module B - et couplage commun - les modules modifient des variables globales)
- le couplage logique
Les autres métriques (dont la complexité cyclomatique) peuvent être utiles si elles sont beaucoup trop grandes.
Tout est dans le titre
Tout est dans le titre (gratuit en PDF)
Même avec des données peu abondantes (tout est relatif quand même, l'auteur parle de moins de 100 000 éléments), la complexité des algorithmes de recherche compte