React
Composants fonctionnels uniquement
Utilisez toujours des composants fonctionnels TSX avec des exports nommés.Propriétés
Créez un type nommé{ComponentName}Props. Utilisez la déstructuration. N’utilisez pas React.FC.
Pas de propagation de props à partir d’une seule variable
Gestion de l’état
Atomes Jotai pour l’état global
- Préférez les atomes au prop drilling
- N’utilisez pas
useRefpour l’état — utilisezuseStateou des atomes - Utilisez les familles d’atomes et les sélecteurs pour les listes
Évitez les re-renders inutiles
- Extrayez
useEffectet la récupération de données dans des composants sidecar frères - Préférez les gestionnaires d’événements (
handleClick,handleChange) àuseEffect - N’utilisez pas
React.memo()— corrigez plutôt la cause première - Limitez l’utilisation de
useCallbackouuseMemo
TypeScript
typeplutôt queinterface— plus flexible, plus facile à composer- Littéraux de chaîne plutôt que enums — sauf pour les enums générés par GraphQL codegen et les API internes des bibliothèques
- Pas de
any— TypeScript strict appliqué - Pas d’importations de types — utilisez des importations classiques (imposées par Oxlint
typescript/consistent-type-imports) - Utilisez Zod pour la validation à l’exécution des objets non typés
JavaScript
Nommage
- Variables: camelCase, explicites (
emailet nonvalue,fieldMetadataet nonfm) - Constantes: SCREAMING_SNAKE_CASE
- Types/Classes: PascalCase
- Fichiers/répertoires: kebab-case (
.component.tsx,.service.ts,.entity.ts) - Gestionnaires d’événements:
handleClick(pasonClickpour la fonction gestionnaire) - Props de composant: préfixez avec le nom du composant (
ButtonProps) - Composants stylés: préfixez avec
Styled(StyledTitle)
Stylisation
Utilisez les composants stylés Linaria. Utilisez les valeurs du thème — évitez lespx, rem ou couleurs en dur.
Imports
Utilisez des alias au lieu de chemins relatifs:Structure des dossiers
- Les modules peuvent importer depuis d’autres modules, mais
ui/doit rester sans dépendances - Utilisez des sous-dossiers
internal/pour le code privé au module - Composants de moins de 300 lignes, services de moins de 500 lignes