Certains outils de style de code le recommandent et je me souviens avoir vu des outils de ligne de commande unix avertir d'une ligne vide manquante.
Quel est le raisonnement pour avoir une ligne vide supplémentaire?
language-agnostic
coding-style
eof
Petteri Hietavirta
la source
la source
\n\n
) ou une nouvelle ligne\n
?cat
le fichier sur un shell et vous saurez pourquoi. Si votre fichier fait apparaître l'invite de mon shell dans un autre endroit que celui qu'il devrait être (au début de la ligne), je vous détesterai probablement. ;)Réponses:
De nombreux outils plus anciens se comportent mal si la dernière ligne de données d'un fichier texte ne se termine pas par une nouvelle ligne ou une combinaison retour chariot / nouvelle ligne. Ils ignorent cette ligne car elle se termine par ^ Z (eof) à la place.
la source
\n
) à la fin du fichier. Plusieurs éditeurs de texte, comme Vim, et plusieurs compilateurs (notamment C ++ et Python) émettront des avertissements. (Dans le cas de C ++, la norme l'exige explicitement.)\n\n
.Si vous essayez de concaténer deux fichiers texte ensemble, vous serez beaucoup plus heureux si le premier se termine par un caractère de nouvelle ligne.
la source
Outre le fait qu'il s'agit d'une position de curseur plus agréable lorsque vous passez à la fin d'un fichier dans un éditeur de texte.
La présence d'une nouvelle ligne à la fin du fichier permet de vérifier simplement que le fichier n'a pas été tronqué.
la source
Un argument peut également être fait pour les différences de nettoyage si vous ajoutez au fichier en suivant le même raisonnement que Pourquoi les virgules de fin sont-elles autorisées dans une liste?
Ce qui suit est copié (et coupé un peu) à partir de la ressource liée:
En changeant:
à:
implique seulement un changement d'une ligne dans le diff:
Cela bat le diff multiligne plus déroutant lorsque la virgule de fin a été omise:
la source
La ligne vide à la fin du fichier apparaît pour que la lecture standard du flux d'entrée sache quand terminer la lecture, renvoie généralement EOF pour indiquer que vous avez atteint la fin. La majorité des langues peuvent gérer le marqueur EOF. Il est là pour cette raison d'autrefois, sous DOS, le marqueur EOF était la touche F6 ou Ctrl-Z, pour les systèmes * nix, c'était Ctrl-D.
La plupart, sinon la totalité, liront jusqu'au marqueur EOF afin que la fonction de lecture à partir de l'entrée de la bibliothèque d'exécution sache quand arrêter la lecture. Lorsque vous ouvrez le flux pour le mode Ajout, il effacera le marqueur EOF et l'écrira jusqu'à ce qu'une fermeture soit explicitement appelée dans laquelle il insérera le marqueur EOF à ce point.
Les outils plus anciens s'attendaient à une ligne vide suivie d'un marqueur EOF. De nos jours, les outils peuvent gérer la ligne vide et l'ignorer.
la source
\r\n
au lieu de\n
, les appels DOS utilisent un mélange de ASCIIZ et ASCII $. Pire encore, plus tard sous Windows, insérez généralement une marque d'ordre d'octet Unicode (BOM) au début de la plupart des fichiers texte. Belle "unicité".De plus, lorsque vous modifiez un fichier et ajoutez du code à la fin du fichier - diff (au moins git diff dans la configuration standard) montrera que vous avez changé la dernière ligne, tandis que la seule chose que vous avez réellement fait - a ajouté un symbole de nouvelle ligne. Les rapports cvs deviennent donc moins pratiques.
la source
Certaines langues définissent leur fichier d'entrée en termes de lignes d'entrée, où chaque ligne d'entrée est une série de caractères terminée par un retour chariot. Si leur grammaire est ainsi définie, la dernière ligne valide du fichier doit également se terminer par un retour chariot.
la source
C'est à cause de la définition de ce qu'est un fichier texte. Lorsque vous créez un nouveau fichier texte dans n'importe quel environnement Unix, le contenu de ce fichier est le nouveau caractère de ligne '\ n'
Sans cela, le fichier n'est pas vraiment identifié comme un fichier texte. Maintenant, une fois que nous avons ajouté du code à ce fichier texte, il s'agit de ne pas supprimer cette nouvelle ligne initiale qui définit un fichier texte lui-même .
la source