J'ai l'habitude de délimiter les instructions par un point-virgule de Java, donc naturellement je le fais aussi en code Scala. Je pense également que le code est plus facile à lire, car il est évident où une instruction se termine et une autre commence. Mais souvent, lorsque je poste un morceau de code Scala sur SO, le code est modifié juste pour supprimer les points-virgules.
- Dois-je utiliser des points-virgules ou non? Existe-t-il des directives ou un style de codage "officiels"?
- Y a-t-il des cas où des points-virgules sont requis, sinon le code est ambigu?
coding-style
scala
Petr Pudlák
la source
la source
Réponses:
Il n'y a pas de manière officiellement "correcte" de le faire, mais la plupart des pratiquants omettent les points-virgules partout où ils le peuvent (c'est pourquoi tant de gens suppriment les points-virgules par réflexe).
Le langage essaie très fort de vous faire oublier la nécessité de mettre fin aux instructions. Malheureusement, cela ne réussit pas tout à fait , il existe donc diverses situations complexes dans lesquelles des points-virgules, ou un jeu supplémentaire de parenthèses, ou des "conseils" similaires sont nécessaires pour éviter une sémantique indésirable. De telles situations sont presque assez rares pour que normalement vous n'ayez pas à y penser. Les opinions divergent quant à savoir si cela signifie que vous devez ponctuer défensivement (c'est ce que je pense) ou ne jamais ponctuer jusqu'à ce que vous rencontriez des problèmes (c'est ce que pense la majorité des utilisateurs). En fin de compte, il s'agit de savoir si vous vous identifiez comme un renégat ou un citoyen modèle.
la source
Dans quelle mesure voulez-vous comprendre les langues que vous utilisez? Voulez-vous jouer à ses points forts ou non? La syntaxe de Scala encourage un code clair et concis; les quelques cas limites où tirer parti de cela pose des problèmes pour l'analyseur Scala sont instructifs (c'est-à-dire que vous en apprendrez plus sur Scala en les rencontrant et en apprenant à les éviter) et en étant progressivement corrigés (par exemple, la notation des suffixes ). L'utilisation défensive du point-virgule peut signifier que vous n'aurez jamais à vous renseigner sur ces problèmes, mais voyez-vous vraiment cela comme une bonne chose? Les correctifs de ces problèmes ont généralement d'autres implications, mais vous manquerez ces possibilités.
Une autre considération est que, comme le reconnaît Kilian, la plupart des développeurs Scala omettent les points-virgules par défaut. Comment prévoyez-vous de travailler avec le code d'autres personnes si vous évitez d'utiliser Scala idiomatique vous-même? Vous allez trouver cela beaucoup plus difficile que nécessaire.
Je ne saurais trop insister sur le fait que ces fonctionnalités de l'analyseur Scala ont été choisies pour encourager un code propre, réutilisable et fonctionnel (au sens fp). Prenons l'exemple de la syntaxe de l'opérateur infixe; il encourage les développeurs à fournir aux classes des méthodes simples et à usage unique qui se composent bien ensemble. La bibliothèque de collections de Scala montre à quel point cela peut fonctionner. Les développeurs Java de formation classique qui embrassent cela auront tendance à développer de meilleures habitudes et de nouvelles façons de penser leur code. Ceux qui s'en tiennent à tous ces points et crochets familiers vont manquer. Je soutiens que cela est également vrai pour ceux qui sont trop timides pour abandonner le point-virgule.
la source