Je préfère la version sans accolades dans la mesure du possible.
L'explication suivante est longue. S'il vous plaît supporter avec moi. Je vais donner une raison convaincante pour que je préfère ce style. Je vais aussi expliquer pourquoi je pense que le contre-argument habituel ne tient pas.
Les lignes (presque) vides sont un gaspillage
La raison en est que l'accolade de fermeture nécessite une ligne de code supplémentaire - ainsi que l'accolade d'ouverture, en fonction du style. 1
Est-ce un gros problème? Superficiellement, non. Après tout, la plupart des gens insèrent également des lignes vides dans leur code pour séparer des blocs logiquement légèrement indépendants, ce qui améliore considérablement la lisibilité.
Cependant, je déteste gaspiller de l'espace vertical. Les moniteurs modernes ont en fait un grand espace horizontal. Mais l’ espace vertical reste très limité (sauf si vous utilisez un moniteur placé à la verticale, ce qui n’est pas si rare). Cet espace vertical limité est un problème: il est généralement admis que les méthodes individuelles doivent être aussi courtes que possible et que les accolades correspondantes (ou d’autres délimiteurs de bloc) ne doivent pas être plus d’une hauteur d’écran, ce qui vous permet de voir le bloc entier sans défilement.
C'est un problème fondamental : une fois que vous ne pouvez plus voir le bloc entier sur votre écran, il devient compliqué à saisir.
En conséquence, je déteste les lignes vides redondantes. Là où des lignes vides sont essentielles pour délimiter des blocs indépendants (il suffit de regarder l'apparence visuelle de ce texte), les lignes vides consécutives sont un très mauvais style dans mon livre (et, selon mon expérience, elles sont généralement le signe de programmeurs débutants).
De même, les lignes qui tiennent simplement une attelle et qui pourraient être économisées devraient l'être. Un bloc à une instruction qui est délimité par des accolades perd une à deux lignes. Avec seulement 50 lignes par hauteur d’écran, cela est perceptible.
Omettre les accolades ne fait peut-être pas de mal
Un seul argument contre les omissions d'accolades consiste à dire que quelqu'un ajoutera ultérieurement une autre instruction au bloc en question et oubliera d'ajouter les accolades, ce qui modifiera par inadvertance la sémantique du code.
Ce serait effectivement un gros problème.
Mais d'après mon expérience, ça ne l'est pas. Je suis un programmeur bâclé; et pourtant, au cours de ma décennie d'expérience en programmation, je peux honnêtement affirmer que je n'ai jamais oublié d'ajouter les accolades lors de l'ajout d'une instruction supplémentaire à un bloc singleton.
Je trouve même invraisemblable que cela soit une erreur commune: les blocs sont un élément fondamental de la programmation. La résolution et la portée des blocs sont un processus mental automatique et enraciné pour les programmeurs. Le cerveau le fait simplement (sinon, raisonner sur la programmation serait beaucoup plus difficile). Aucun effort mental supplémentaire n'est nécessaire pour vous rappeler de mettre les accolades: le programmeur se souvient également d' indenter correctement la déclaration nouvellement ajoutée, après tout; de sorte que le programmeur a déjà traité mentalement qu’un bloc est impliqué.
Maintenant, je ne dis pas qu'omettre des accolades ne cause pas d'erreurs. Ce que je dis, c'est que nous n'avons aucune preuve d'une manière ou d'une autre. Nous ne savons tout simplement pas si cela cause un préjudice.
Donc, tant que personne ne pourra me montrer des données fiables, rassemblées à partir d’expériences scientifiques, démontrant que c’est effectivement un problème, cette théorie reste une « histoire juste pour ainsi dire »: une hypothèse très convaincante qui n’a jamais été mise à l’épreuve, et que ne doit pas être utilisé comme argument.
1 Ce problème est parfois résolu en mettant tout - y compris les accolades - sur la même ligne:
if (condition)
{ do_something(); }
Cependant, je crois qu'il est prudent de dire que la plupart des gens méprisent cela. De plus, il aurait les mêmes problèmes que la variante sans accolades, donc c'est le pire des deux mondes.