Connectez les bretelles
Un jeu pour aider à visualiser les effets du style de placement des accolades en Java
L'objectif est d'être objectif
Il y a plusieurs années, j'ai proposé une approche créative pour aider à établir et à convenir d'un style de codage avec une nouvelle équipe sur laquelle je travaillais. Nous étions au début du codage d'un nouveau projet utilisant le langage de programmation Java. J'ai demandé que nous décidions et nous mettions d'accord sur des directives de style de code cohérentes en équipe, dès le départ. Je savais que je devais trouver un argument objectif et créatif pour aborder l'un des débats controversés sur le style de code en Java - où placer les accolades.
Choisir la créativité plutôt que le conflit
Nager à contre-courant du « mais tout le monde le fait comme ça » est difficile. C'est encore plus difficile lorsqu'une société de recherche très respectée appose son sceau d'approbation sur un style de codage Java particulier.
Pour m'aider à présenter un argument objectif pour un style particulier de placement d'accolades, j'ai créé un jeu que j'ai appelé "Connect the Braces". J'ai pris le code de deux exemples de classes que j'ai créés et je les ai collés dans un jeu Powerpoint et j'ai littéralement dessiné des lignes au-dessus du code pour relier les accolades de début et de fin. Le jeu a été inspiré de l'un de mes jeux d'enfance préférés - "Connect the Dots".
La grande chose à propos de "Connect the Dots" est que les règles sont simples et presque tout le monde a joué au jeu à l'école. "Connect the Braces" est également très simple. Connectez simplement les accolades de début et de fin de chaque portée de code en traçant une ligne entre elles. Facile.
J'ai présenté le jeu à l'équipe, et après que j'ai eu fini, personne n'a répondu "mais tout le monde fait comme ça". Cela a confirmé qu'au moins une équipe a bien répondu à un argument créatif sur le style de placement des attelles.
Automatiser le jeu
J'ai parlé à mon ami Vladimir Zakharov (Vlad) de ce jeu et de la façon dont il a efficacement désamorcé ce que j'avais auparavant vécu comme un débat incendiaire. J'ai demandé à Vlad s'il pouvait écrire du code Java pour visualiser le jeu que je lui décrivais. Vlad est meilleur en programmation visuelle que moi, donc je savais qu'il compléterait le code plus rapidement que moi.
Vlad a fait quelque chose d'encore mieux que de simplement connecter les accolades dans un fichier source. Il a également coloré des blocs de code en surbrillance verte. Cela a l'avantage supplémentaire de mettre en évidence visuellement les espaces blancs.
Les images de la section suivante ont été générées à l'aide de la version automatisée de Vlad de "Connect the Braces" sur le code réel de Eclipse Collections Kata .
Avertissement! Jeu sur!
Les images suivantes sont graphiques. Certains développeurs peuvent les trouver dérangeants. Le code source réel a été utilisé dans la création des visuels suivants. Toutes les images qui ne peuvent pas être invisibles après le défilement au-delà de ce texte relèvent de la seule responsabilité de la personne qui fait défiler, et non de l'auteur. Tous les fruits ou animaux de compagnie qui ont été blessés au cours des deux tours "Connect the Braces" étaient le résultat de choix de style de code, et non de l'auteur. Choisis sagement. Tu étais prévenu!
Premier tour : Énumération des fruits
Deuxième tour : Énumération PetType
Choisir la clarté plutôt que l'encombrement
Je sais que je viens probablement de patauger dans une rivière déchaînée remplie de piranhas affamés tout en portant un maillot de bain en steak. Je ne cherche pas à convaincre tout le monde qu'un style particulier de placement d'attelle est le « seul vrai style ». Il y a définitivement un style que je préfère quand j'écris du code, et je dois le défendre sur chaque projet sur lequel je travaille. Je trouve que lorsque je présente mon argument en utilisant ce jeu, nous pouvons avoir une discussion saine sur l'importance de l'esthétique, de l'espace blanc et du suivi visuel pour la numérisation et la lisibilité du code.
Je choisis la clarté plutôt que l'encombrement. Signal sur bruit. Je choisis le style à droite.
Pour citer mon ami Vlad :
Quand je lis du code, je veux généralement voir soit le "quoi", par exemple, quelles sont les responsabilités de cette classe, quel est le contrat de cette méthode, quelle est la condition pour déclencher cette branche - ou le "comment", par exemple, comment cette méthode fait-elle ce qu'elle fait, que se passe-t-il si je suis cette branche, etc. La séparation visuelle du quoi et du comment m'aide à scanner le code et à concentrer mon attention sur ce qui compte à ce moment-là.
Le style de formatage des accolades verticales a pour effet naturel de séparer proprement le « quoi » du « comment » en introduisant un espace entre la signature (définitions de classe et de méthode) et l'implémentation (variables et code). Les accolades de début et de fin sont toujours au même emplacement horizontal, avec une variabilité basée systématiquement sur la profondeur des étendues imbriquées (par exemple, des instructions de contrôle comme if, for et while). Vous vous attendez à voir la base d'une forme pyramidale avec les accolades, vous pouvez donc ignorer en toute sécurité où ils se trouvent, car vous savez où ils se trouvent. Ce style est facile à implémenter le formatage automatique dans votre IDE et à appliquer dans une construction CheckStyle.
Je nage à contre-courant en utilisant ce style de formatage d'accolades en Java depuis plus de 20 ans. Aux développeurs qui doivent lire ou travailler dans les bases de code qui sont formatées en utilisant le style de placement des accolades verticales à cause de moi, j'ai quelque chose à dire.
Je vous en prie!
Une exception à la règle
Je choisis un style de placement d'accolades différent lors de la création de diapositives Powerpoint ou de texte pour un livre avec du code Java. Dans ces deux supports imprimés uniquement, je choisis presque toujours le style qui privilégie le moins de lignes de code. Casser le code sur plusieurs pages n'est pas souhaitable. Il s'agit d'un compromis qui est fait en raison des limites de l'espace vertical disponible. Cette limite imposée n'existe pas dans le code que vous lisez dans votre IDE ou dans une source de lecture de navigateur à partir d'un VCS comme GitHub ou GitLab où le défilement vertical fonctionne très bien.
Sept habitudes de codage inefficaces de nombreux programmeurs
Quelques mois après avoir créé le jeu "Connect the Braces", je suis tombé sur une conférence étonnante de Kevlin Henney qui présente un excellent argument en faveur d'un style de placement d'accolade particulier, parmi de nombreux autres points intéressants qu'il soulève dans son discours sur le style de codage.
Donc, ce que je viens de vous dire, au cas où vous vous poseriez la question, oui, il existe un moyen de déterminer la bonne façon d'aligner vos broches… objectivement.
Pas de spoilers. Je recommande vivement de regarder cette conférence. Attention, cette discussion peut être une perturbation constructive de votre style de codage actuel.
Un appel à l'action sur le style de code Java
Nous laissons des milliards de lignes de code source Java dans les systèmes de contrôle de version à maintenir par nous-mêmes et les futures générations de développeurs. Le style de code a un impact direct et subtil sur la clarté et la lisibilité. Tout le monde ne lit pas le code à la même vitesse. Il peut y avoir des problèmes d'accessibilité dont vous devriez discuter et considérer en équipe. Tout le monde devrait être capable d'analyser le code éventuellement en le lisant, quel que soit le style de code. Si nous pouvons passer moins de cycles à séparer le quoi du comment et à trouver le code que nous recherchons, ce serait une bonne chose.
Voici mes règles pour construire un style de codage acceptable dans une équipe.
- Discutez avec votre équipe des directives de style de code.
- Appliquez des directives de style de code cohérentes dans votre projet à l'aide de règles de formatage automatique encodées et personnalisées dans votre IDE préféré.
- Exécutez une construction continue automatisée qui se cassera en cas de commits de style de code incohérents (par exemple, CheckStyle).
- Publiez vos directives de style de code dans le VCS de votre projet.
- Ayez le courage et prenez le temps de faire évoluer vos directives de style de code lorsque vous découvrez ou apprenez quelque chose de nouveau.
N'hésitez pas à utiliser le jeu Connect the Braces pour faciliter des discussions rationnelles et objectives sur le style de code, en particulier en ce qui concerne les discussions sur le style de placement des accolades en Java. Si vous aimez ce style et souhaitez voir les paramètres de style de code que nous avons utilisés dans IntelliJ IDEA pour les collections Eclipse au cours des sept dernières années, ils sont enregistrés dans GitHub ici .
Prendre plaisir!
Je suis le créateur et un Committer du projet Eclipse Collections OSS qui est géré par la Fondation Eclipse . Eclipse Collections est ouvert aux contributions .
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































