web-dev-qa-db-fra.com

Pourquoi est-il recommandé d'avoir une ligne vide à la fin du fichier?

Certains outils de style de code recommandent ceci et je me souviens avoir vu des outils de ligne de commande unix avertir qu'ils manquaient une ligne vide.

Quel est le raisonnement pour avoir une ligne vide supplémentaire?

173
Petteri Hietavirta

De nombreux outils anciens se comportent mal si la dernière ligne de données d'un fichier texte ne se termine pas par une combinaison nouvelle ligne ou retour chariot/nouvelle ligne. Ils ignorent cette ligne car elle se termine par ^ Z (eof).

141
Ralph M. Rickenbach

Mis à part le fait que la position du curseur est meilleure lorsque vous passez à la fin d'un fichier dans un éditeur de texte.

Avoir une nouvelle ligne à la fin du fichier permet de vérifier simplement que le fichier n'a pas été tronqué.

35
rsp

Si vous essayez de concaténer deux fichiers texte, vous serez plus heureux si le premier se termine par un caractère de nouvelle ligne.

33
user1809090

Un argument peut également être fait pour des différences plus propres si vous ajoutez au fichier en suivant le même raisonnement que Pourquoi Python autorise-t-il une fin de virgule dans la liste?

14
Mathias Bak

La ligne vide à la fin du fichier apparaît pour que la lecture standard du flux d'entrée sache quand mettre fin à la lecture et renvoie généralement EOF pour indiquer que vous avez atteint la fin. La majorité des langues peuvent gérer le marqueur EOF. C’est la raison pour laquelle à partir de l’époque, sous DOS, le marqueur EOF était la touche F6 ou Ctrl-Z, pour les systèmes * nix, il s’agissait de Ctrl-D.

La plupart des lecteurs, sinon tous, liront en réalité jusqu'au marqueur EOF, de sorte que la fonction de lecture de l'entrée de la bibliothèque d'exécution saura quand arrêter la lecture. Lorsque vous ouvrez le flux pour le mode Ajout, il efface le marqueur EOF et écrit au-delà, jusqu'à ce qu'une fermeture soit explicitement appelée dans laquelle il insérera le marqueur EOF à cet endroit.

Les outils les plus anciens attendaient une ligne vide suivie du marqueur EOF. De nos jours, les outils peuvent gérer la ligne vide et l’ignorer.

14
t0mm13b

De même, lorsque vous modifiez le fichier et que vous ajoutez du code à la fin du fichier, diff (au moins git diff en configuration standard) indiquera que vous avez modifié la dernière ligne, alors que la seule chose que vous avez réellement faite, a ajouté un symbole de nouvelle ligne. Les rapports CVS deviennent donc moins pratiques.

8
prijutme4ty

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 à la ligne. Si leur grammaire est ainsi définie, la dernière ligne valide du fichier doit également être terminée par un retour à la ligne.

4
Damien_The_Unbeliever

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 caractère nouvelle ligne '\ n'

Sans cela, le fichier n'est pas vraiment identifié comme un fichier texte. 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

0
Victor Fernandes