Je pense qu'ils essaient de s'assurer que chaque fichier se termine par un caractère de nouvelle ligne. Cela diffère de se terminer par une ligne vide, c'est-à-dire une nouvelle ligne vide.
Édit : Comme l'a succinctement clarifié @Easy Angel dans les commentaires : nouvelle ligne finale = "\n" et ligne vide = "\n\n"
Je pense que soit :
-
votre éditeur exige que chaque fichier se termine par un caractère de nouvelle ligne, mais cela est mal interprété comme exigeant que chaque fichier se termine par une ligne vide (c'est-à-dire une ligne vide se terminant par une nouvelle ligne), ou bien
-
ils essaient de s'assurer que chaque fichier se termine par un caractère de nouvelle ligne en exigeant en réalité que chaque fichier se termine par une ligne vide (c'est-à-dire une ligne vide se terminant par une nouvelle ligne), garantissant ainsi que les fichiers se terminent par au moins une nouvelle ligne (et éventuellement par une nouvelle ligne redondante supplémentaire - exagération ?).
Sauf si l'éditeur montre réellement les symboles de nouvelles lignes, il n'est pas toujours clair dans certains éditeurs qu'un fichier :
- NE SE TERMINE PAS par une nouvelle ligne du tout,
- SE TERMINE par une seule nouvelle ligne finale, ou
- SE TERMINE par une ligne vide, c'est-à-dire 2 nouvelles lignes finales
Je pense que la plupart des éditeurs de code source modernes insèrent une nouvelle ligne finale. Cependant, lorsque j'utilisais des éditeurs plus anciens et plus généraux, j'essayais toujours de m'assurer que mes fichiers de code source (et les fichiers texte en général) se terminaient toujours par une nouvelle ligne finale (ce qui pouvait parfois se traduire par une ligne vide/nouvelle ligne vide selon l'éditeur que j'utilisais) car :
-
lorsqu'on utilise cat
pour afficher le fichier en ligne de commande, si le fichier n'avait pas de nouvelle ligne finale, la sortie suivante (comme l'invite de commande de l'interpréteur de commandes ou un délimiteur visuel qu'un script peut afficher entre les fichiers) se retrouvait juste après le dernier caractère non-nouvelle ligne plutôt que de commencer sur une nouvelle ligne. En général, la nouvelle ligne finale rendait les fichiers plus conviviaux pour les utilisateurs et les scripts.
-
Je crois que certains éditeurs (je ne me souviens pas des détails) inséraient automatiquement une nouvelle ligne finale si le fichier texte n'en avait pas. Cela donnait l'impression que le fichier avait été modifié. Cela devenait confus si vous aviez plusieurs fichiers ouverts dans différentes fenêtres et que vous vouliez les fermer tous - l'éditeur vous demande de sauvegarder mais vous êtes incertain si vous avez apporté de "vrais changements" au fichier ou s'il s'agit simplement de la nouvelle ligne insérée automatiquement.
-
Certains outils comme diff
et certains compilateurs se plaindront d'une absence de nouvelle ligne finale. Il s'agit de bruit supplémentaire que les utilisateurs et les outils peuvent être amenés à gérer.
Édit :
Concernant les éditeurs qui ajoutent des nouvelles lignes et le fait de ne pas pouvoir voir s'il y a une nouvelle ligne ou une nouvelle ligne vide à la fin du fichier, j'ai testé Vim, Eclipse et Emacs (sur mon système Windows avec Cygwin) : j'ai ouvert un nouveau fichier, tapé 'h' 'e' 'l' 'l' 'o' et enregistré sans appuyer sur [ENTRÉE]. J'ai examiné chaque fichier avec od -c -t x1
.
- Vim a ajouté une nouvelle ligne finale.
- Emacs a ajouté une nouvelle ligne finale.
- Eclipse N'A PAS ajouté de nouvelle ligne finale.
Mais
- Vim NE M'A PAS permis de descendre jusqu'à une ligne vide sous "hello".
- Emacs m'a permis de descendre jusqu'à une ligne vide sous "hello".
- Eclipse NE M'A PAS permis de descendre jusqu'à une ligne vide sous "hello".
Interprétez comme bon vous semble.
Ma pratique personnelle est d'essayer de m'assurer que les fichiers texte se terminent par une nouvelle ligne finale. Je pense simplement que c'est la moins surprenante pour les utilisateurs et les outils. Je ne traiterais pas les fichiers source différemment des fichiers texte à cet égard.
Google renvoie à ceci :
qui, à la date de cet édit, montre des résultats qui parlent d'avertissements sur une nouvelle ligne finale manquante provenant de compilateurs C, svn (en raison de diff), diff, etc. J'ai l'impression qu'il y a une attente générale que les fichiers texte (y compris les fichiers source) se terminent par une nouvelle ligne finale et que cela est moins surprenant (et moins bruyant) lorsqu'ils sont présents.
Enfin cela est intéressant :
Assainir les fichiers sans nouvelle ligne finale
Les fichiers texte doivent avoir toutes leurs lignes terminées par des caractères de nouvelle ligne (c'est-à-dire, \n). C'est ce que précise POSIX, qui dit qu'un fichier texte est
Un fichier contenant des caractères organisés en zéro ou plusieurs lignes.
Une ligne, à son tour, est définie comme
* Une séquence de zéro ou plusieurs caractères qui ne sont pas des sauf un caractère de terminaison.
CELA DIT, tout cela ne relève que de ma pratique personnelle. Je suis heureux de partager mon avis avec quiconque le demande, mais je ne veux pas l'imposer à quiconque. Je ne pense pas que cela vaille la peine de le rendre obligatoire, comme je le dis ici :
Alors que je suis favorable à la cohérence, je suis également contre la gestion micrométrique de chaque aspect du style. Avoir une longue liste de conventions de codage, en particulier lorsque certaines semblent arbitraires, est ce qui décourage les gens de les suivre. Je pense que les directives de codage devraient être rationalisées vers les pratiques les plus utiles qui améliorent les -ilités. Dans quelle mesure la lisibilité, la maintenabilité, les performances, etc. s'améliorent-elles en rendant cette pratique obligatoire ?
1 votes
Je essaie de les supprimer quand je les vois même si eclipse les insère. Je ne pense pas qu'il y ait une réponse correcte, juste un style de codage.
7 votes
Je ne trouve pas de raison convaincante d'être contrarié par eux, non plus. Est-ce vraiment la plus grande préoccupation que vous avez concernant ce projet? Félicitations - vous vous en sortez ridiculement bien. Cela a tout pour être un bon argument de la cabane à vélo.
2 votes
@duffymo: Je ne vois également aucune raison convaincante de ne pas insérer le commentaire "Ceci marque la fin du fichier. Après cette ligne, le fichier SE TERMINE!" à la fin de chaque fichier source. Mais c'est juste inutile... il n'y a aucune raison pour cela. (Et je trouve également incorrect d'obliger tous les développeurs de l'équipe à le faire)
4 votes
Je suis très surpris que cela soit considéré comme suffisamment important pour s'inquiéter. Je pensais que le code correct et lisible étaient les seules choses pour lesquelles Checkstyle devrait être utilisé.
0 votes
Je suis d'accord - un commentaire pour dire que le fichier se termine est ridicule. Mais des espaces supplémentaires, une ligne de plus ? Ce n'est pas dans la même ligue d'agacement, donc ton analogie ne résonne pas avec moi. Désolé, Easy Angel, je pense que tu devrais enlever le "Easy" de ton nom. Tu devrais aller voir ce qu'est un argument de cabane à vélo. Tu sembles compliqué. Je ne suis pas sûr que je voudrais que tu sois dans mon équipe.
0 votes
@duffymo: désolé, je ne voulais pas être impoli dans le commentaire précédent, je voulais juste montrer la nature du problème (probablement pas très précis). J'ai en fait accepté cela et je le fais aussi. Je me demandais juste pourquoi. Je ne pense pas qu'il y ait quelque chose de mal à cela. Tant que je ne connais pas la raison, ce long commentaire et ce simple saut de ligne sont conceptuellement similaires pour moi. Je n'aime pas obliger les gens à faire quelque chose sans explication. Préférez-vous des membres de l'équipe qui font simplement ce que vous leur dites de faire sans poser de questions? On m'a dit de le faire sans explication
0 votes
Non, je ne veux pas travailler avec des moutons. Mais je déteste aussi me disputer pour chaque foutue chose qui se présente. Choisissez vos combats - suivez ceux qui ont vraiment de l'importance.
0 votes
@duffymo : au fait merci pour la référence à l'argument du vélo-shed! Pouvez-vous me conseiller quelque chose pour y faire face? J'ai également eu une autre contrariété (cette fois j'ai réussi :), et il serait très intéressant pour moi de connaître votre opinion. Nous avons généré automatiquement des commentaires pour tous les méthodes de set/get comme "Définit le champ {@link firstName}" et "Obtient le champ {@link firstName}" respectivement. J'étais contre ça. Pensez-vous que cela valait la peine d'en discuter? Et la même question à propos des "commentaires par défaut" : pour chaque classe, nous écrivons une série de commentaires comme "// constantes", "// méthodes set/get", "// constructeurs", etc...
0 votes
Je ne suis pas favorable aux commentaires par défaut. Les commentaires devraient ajouter de nouvelles informations qui aideront à comprendre ce que fait le code et pourquoi, plutôt que répéter quelque chose d'évident à partir du code lui-même. Si vos codeurs ont besoin de ce genre de commentaires, vous devez en engager de meilleurs. La seule justification que je puisse trouver serait un vérificateur automatique de métriques qui signalerait un manque de commentaires. Cela ressemble à quelque chose qu'un groupe d'architecture imposerait - le genre de personnes qui pensent savoir mieux mais ne codent plus réellement.
0 votes
@duffymo: Merci. Donc si je comprends bien, vous pensez également que ces problèmes de commentaires valent la peine d'être discutés (s'il vous plaît, corrigez-moi si je me trompe). Je suis d'accord avec vous sur la question de la nouvelle ligne - c'est un débat sans fin. Je pense que je devrais moins y penser (j'ai presque oublié après avoir coché la case correspondante dans l'IDE, mais j'étais toujours curieux à ce sujet)
0 votes
Je dirais que l'argument des commentaires inutiles est plus digne que le problème d'espaces blancs supplémentaires.
0 votes
En rapport avec "pourquoi ajouter un saut de ligne": stackoverflow.com/q/5813311/328817