Je lis actuellement le code propre de Robert Martin . Je pense que c'est génial, et quand j'écris du code OO, je prends ses leçons à cœur. En particulier, je pense que son conseil d'utiliser de petites fonctions avec des noms significatifs rend mon code beaucoup plus fluide. Il est mieux résumé par cette citation:
[Nous] voulons pouvoir lire le programme comme s'il s'agissait d'un ensemble de paragraphes TO, chacun décrivant le niveau d'abstraction actuel et référençant les paragraphes TO suivants au niveau suivant.
( Code propre , page 37: un "paragraphe TO" est un paragraphe qui commence par une phrase exprimée à l'infinitif. "Pour faire X, nous effectuons les étapes Y et Z." "Pour faire Y, nous ..." etc. ) Par exemple:
À RenderPageWithSetupsAndTeardowns, nous vérifions si la page est une page de test et si oui, nous incluons les configurations et les démontages. Dans les deux cas, nous rendons la page en HTML
J'écris également du code fonctionnel pour mon travail. Les exemples de Martin dans le livre se lisent certainement comme s'il s'agissait d'un ensemble de paragraphes, et ils sont très clairs - mais je ne suis pas sûr que «se lit comme un ensemble de paragraphes» soit une qualité souhaitable pour que le code fonctionnel ait .
Prenons un exemple de la bibliothèque standard de Haskell :
maximumBy :: (a -> a -> Ordering) -> [a] -> a
maximumBy _ [] = error "List.maximumBy: empty list"
maximumBy cmp xs = foldl1 maxBy xs
where
maxBy x y = case cmp x y of
GT -> x
_ -> y
C'est à peu près aussi loin que possible de l'avis de Martin, mais c'est Haskell concis et idiomatique. Contrairement aux exemples Java de son livre, je ne peux imaginer aucun moyen de refactoriser cela en quelque chose qui a le genre de cadence qu'il demande. Je soupçonne que Haskell écrit selon la norme de Clean Code serait considéré comme long et non naturel.
Ai-je tort de considérer (au moins une partie) du code propre en contradiction avec les meilleures pratiques de programmation fonctionnelle? Existe-t-il un moyen sensé de réinterpréter ce qu'il dit dans un paradigme différent?
xs
c'est une sorte de mauvais nom, mais c'est aussi courant dans les langages fonctionnels que i
pour les variables de boucle.