Le fait de faire défiler horizontalement rend-il le code moins lisible?

12

Et bien? Est-ce considéré comme une mauvaise pratique?

OMI, c'est moins lisible. Je déteste devoir faire défiler vers la droite, puis vers la gauche, la droite, la gauche, etc. Cela rend le codage plus douloureux et m'embrouille parfois.

Par exemple, chaque fois que je coderai une longue chaîne, je ferai ce qui suit ...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."
Mr. Ant
la source
15
Oui. (et n'oubliez pas de mettre en retrait les lignes renversées)
Javier
2
Je dirais que oui. D'après ce que j'ai vu, il semble que ce soit une pratique assez courante chez les programmeurs expérimentés d'éliminer le défilement horizontal de la manière que vous avez décrite. Dans une certaine mesure, bien qu'il y ait un peu de préférence personnelle à ce sujet ...
Kenneth
1
Je peux parcourir le code verticalement et à l'intérieur des lignes à grande vitesse avec quelques touches, le défilement horizontal est ennuyeux en comparaison.
Les colonnes surdimensionnées rendent tout ce qui est moins lisible. Cela a été déterminé plusieurs fois.
David Thornley
2
Je suis d'accord. Le seul problème est d'amener tout le monde à s'entendre sur la largeur de votre éditeur. Sur le code extra large, je règle généralement simplement le bouclage si j'en ai une tonne à lire.
Karl Bielefeldt

Réponses:

19

Oui, en effet, au sens littéral comme au sens général.

J'aime faire des différences de code côte à côte, et les lignes trop larges rendent cela plus difficile:

http://i.stack.imgur.com/fWVuz.jpg

Des langages comme Scala avec des chaînes entre guillemets triples vous permettent de construire une chaîne à partir de plusieurs lignes sans les frais d'exécution, les guillemets disgracieux et les signes plus (comme dans votre exemple) de réunir des parties d'une chaîne.

Dave Briccetti
la source
11

Oui, je pense que 80 caractères par ligne sont raisonnables et couramment utilisés.

M.Sameer
la source
6

C'est une question vraiment importante pour moi! J'ai travaillé 7 mois sur un ordinateur portable 13 "avec des collègues ayant des moniteurs de bureau 24", et je me suis retrouvé à passer beaucoup de temps à raccourcir les lignes pour aboutir à quelque chose de lisible.

80 colonnes est un peu petit dans de nombreux cas (sauf si vous travaillez sur un terminal avec vi la seule option;)), mais plus de ~ 150, c'est trop (voir ci-dessous).

C'est pour la pure question de «lisibilité».

Maintenant, pour la partie `` bonne pratique '', je trouve très souvent que de telles lignes longues sont défectueuses, c'est-à-dire qu'elles ont une partie qui devrait être extraite dans une variable temporaire, ou qui est dupliquée, par exemple (ObjectiveC, extrait de code commun dans la programmation iPhone) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

Veuillez noter que cela peut devenir encore plus désagréable lorsque vous travaillez avec des vecteurs ou matrices tridimensionnels.

Exemple réécrit:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

Cela s'adapte maintenant sur un écran plus petit, plus facile à déboguer à l'aide d'un IDE ou d'une écriture sur la sortie standard, et pourrait même être plus rapide, selon le coût de l'appel de méthode / propriété. C'est un peu forcé bien sûr, la plupart des exemples du monde réel sont beaucoup plus complexes ...

jv42
la source
4

Pas toujours.

Juste pour ajouter une vue alternative, lorsque je lis du code, je peux souvent obtenir l'essentiel de ce que fait la ligne de code sans avoir à lire la ligne entière. Si je peux lire le nom de la méthode mais que les paramètres de la méthode débordent de l'écran, je ne suis normalement pas dérangé car je peux dire à partir du seul nom de la méthode quelle est l'intention de cette ligne de code. Si quelques lignes de code débordent de l'écran, je pense que le compromis de devoir parfois (mot important là-bas) défiler horizontalement en vaut la peine pour le code plus compact. Je trouve parfois le code multi-ligne à instruction unique distrayant car je dois reconstituer mentalement quel code va avec quelle instruction.

Souvent, les lignes de code qui débordent horizontalement ont leurs bits importants à gauche (visible) et les bits moins importants à droite (hors écran), donc pour moi cela améliore la lisibilité car je peux balayer le code vers le bas en voyant principalement le bits importants sur chaque ligne, par opposition à l'alternative d'avoir les bits de code moins importants d'une ligne trop longue occupant l'espace gauche visuellement important sur la ou les lignes suivantes.

Cela dit, je ne voudrais certainement pas faire défiler horizontalement très souvent, mais je trouve cela moins problématique en ces jours de moniteur à écran large.

Chris Knight
la source
2
Je ne savais pas que certains bits de programme sont plus importants que d'autres. Je vais essayer d'améliorer ma productivité de cette façon: en codant uniquement les bits importants.
mouviciel
1
@mouviciel, ce n'est pas que le côté gauche du code est plus important, mais que sémantiquement le côté gauche du code a plus d'importance pour comprendre ce que fait la ligne de code que le droit. Lorsque vous scannez du code, vous lisez souvent juste le début de la ligne pour comprendre ce qu'il fait avant de passer à la suivante.
Chris Knight
1
Pour moi, les arguments passés à une méthode ont autant d'importance que le nom de la méthode. Laisser ces informations conduit à deviner ce que le code fait plus que le comprendre.
mouviciel
1

Oui.

Soit dit en passant un pourboire. Si vous utilisez un langage avec des chaînes multi-lignes (pratiquement tous les langages de script en ont) et que vous incluez du SQL long, cela aide vraiment la lisibilité de placer le SQL dans une chaîne multi-lignes en utilisant des règles de formatage cohérentes pour le SQL. Voir http://bentilly.blogspot.com/2011/02/sql-formatting-style.html pour le style de formatage que j'utilise.

btilly
la source
1

Non, non.

J'ai un éditeur. Non seulement il a un retour à la ligne, mais il a une indentation de retour à la ligne , ce qui (si l'écran a une largeur de 100 caractères) entraînerait

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

apparaître comme

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

ou avec le niveau d'indentation défini par défaut pour la langue actuelle.

Des lignes plus larges que mon écran ne rendent jamais le code moins lisible que le code indenté par un retour automatique à la ligne.

edit: ooooh, je savais que cette réponse serait impopulaire :)

amara
la source
2
Bien pour vous. Mais que feriez-vous si vous deviez passer à un éditeur qui ne disposait pas de cette fonctionnalité?
1
@dunsmoreb: Pourquoi voudriez-vous passer à un éditeur qui est tellement obsolète qu'il ne prend même pas en charge le retour à la ligne (sauf si vous travaillez sur du code source écrit il y a trente ans et travaillez sur une plate-forme héritée où vous n'avez pas le choix d'un correct éditeur)?
Arseni Mourzenko
MainMa, je fais référence à votre fonction d'indentation de retour à la ligne.
@dunsmoreb: pour être honnête, même juste le retour à la ligne est assez bon si les longues lignes sont rares
amara
7
Ce n'est pas parce que votre éditeur peut envelopper une ligne qu'il va envelopper l'endroit le plus logique pour la lisibilité.
Craige
0

C'est certainement le cas. Il y a une raison pour laquelle les journaux et les magazines utilisent des colonnes. La lisibilité est un facteur important. En lisant nos yeux, balayez vers le bas avec relativement peu de mouvement latéral. L'effet est de permettre à nos yeux de scanner rapidement ce que nous lisons.

Même lorsqu'ils sont visibles à l'écran, des colonnes larges obligent nos yeux à faire des allers-retours rapides. Pendant le balayage, nous ne comprenons vraiment rien. Cela ralentira considérablement la lecture et la compréhension. L'effet est similaire aux anciennes imprimantes mécaniques. Celles-ci nécessitaient souvent l'insertion de plusieurs caractères nuls après un retour chariot pour laisser le temps au chariot ou à la tête d'impression de se repositionner pour la ligne suivante.

De plus, la disposition verticale est généralement effectuée de manière à clarifier le regroupement du contenu sur la ligne. Cela ne devrait généralement s'appliquer qu'aux conditions logiques composées. Les formules longues peuvent être mieux structurées comme une série d'énoncés. (L'optimiseur corrige toute surcharge supplémentaire et certains optimiseurs abandonnent ou fonctionnent mal sur des formules complexes.)

Les identifiants avec plusieurs points nécessitant de grandes lignes indiquent des techniques de codage qui doivent être rectifiées.

BillThor
la source
0

Les souris-roues facilitent le défilement vertical rapide ... le défilement horizontal est trop cher en comparaison.

Raffael
la source