Il dover scorrere orizzontalmente rende il codice meno leggibile?

11

Bene, lo fa? È considerato una cattiva pratica?

IMO, è meno leggibile. Odio dover scorrere a destra, quindi di nuovo a sinistra, a destra, a sinistra e così via. Rende la codifica più dolorosa e talvolta mi confonde.

Ad esempio, ogni volta che sto codificando una lunga stringa, farò quanto segue ...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."
    
posta Mr. Ant 25.03.2011 - 20:41
fonte

9 risposte

19

Sì, in effetti lo fa, sia nel senso letterale che nel senso generale.

Mi piace fare le differenze di codice side-by-side, e le linee troppo larghe lo rendono più difficile:

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

Linguaggi come Scala con stringhe a virgolette triple ti permettono di costruire una stringa da molte linee senza le spese di runtime, le quotazioni antiestetiche e i segni più (come nel tuo esempio) di unire parti di una stringa.

    
risposta data 25.03.2011 - 21:02
fonte
11

Sì, penso che 80 caratteri per riga siano ragionevoli e comunemente usati.

    
risposta data 25.03.2011 - 21:06
fonte
5

È una domanda davvero importante per me! Ho lavorato 7 mesi su un laptop da 13 "con colleghi che avevano monitor da 24" desktop, e mi sono ritrovato a passare molto tempo ad accorciare le linee per finire con qualcosa di leggibile.

80 colonne è un po 'piccola in molti casi (eccetto se stai lavorando su un terminale con vi l'unica opzione;)), ma più di ~ 150 è troppo (vedi sotto).

Questo è per la pura domanda di "leggibilità".

Ora, per la parte 'buona pratica', trovo molto spesso che linee così lunghe siano difettose, cioè che abbia una parte che dovrebbe essere estratta in una variabile temporanea, o che sia duplicata, ad esempio (ObjectiveC, snippet comune in programmazione iPhone):

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

Si noti che questo può diventare ancora più cattivo quando si lavora con vettori o matrici tridimensionali.

Esempio riscritto:

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

Ora si adatta a uno schermo più piccolo, è più facile eseguire il debug usando un IDE o un po 'di scrittura sullo standard output, e potrebbe anche essere più veloce, a seconda del costo del metodo / invocazione proprietà. Questo è un po 'forzato, ovviamente, molti esempi del mondo reale sono molto più complessi ...

    
risposta data 25.03.2011 - 21:41
fonte
4

Non sempre.

Solo per aggiungere una vista alternativa, quando leggo il codice posso spesso ottenere il succo di ciò che sta facendo la linea di codice senza dover leggere l'intera riga. Se riesco a leggere il nome del metodo ma i parametri del metodo fuoriescono dallo schermo, di solito non mi preoccupo perché dal nome del metodo posso solo capire quale sia l'intento di quella linea di codice. Se alcune righe di codice fuoriescono dallo schermo, penso che il trade off di dover occasionalmente (una parola importante) scorrere orizzontalmente valga la pena per il codice più compatto. A volte trovo che il codice di istruzioni a righe multiple distrae perché devo mentalmente mettere insieme quale codice va con quale affermazione.

Spesso le linee di codice che si rovesciano orizzontalmente hanno i loro bit importanti a sinistra (visibile) e i bit meno importanti a destra (fuori dallo schermo), quindi per me questo migliora la leggibilità visto che posso scansionare il codice verso il basso per lo più vedendo i bit importanti su ciascuna linea anziché l'alternativa di avere i bit meno importanti del codice da una linea troppo lunga che occupa lo spazio visivo della mano sinistra visivamente importante sulle seguenti righe.

Detto questo, di certo non vorrei scorrere orizzontalmente molto spesso, ma trovo questo meno un problema in questi giorni di monitoraggio a schermo panoramico.

    
risposta data 25.03.2011 - 22:23
fonte
1

Sì, lo è.

Tra l'altro un suggerimento. Se stai utilizzando una lingua con stringhe multi-linea (praticamente tutti i linguaggi di scripting ce l'hanno) e includi SQL lungo, aiuta davvero la leggibilità a inserire l'SQL in una stringa multi-riga utilizzando regole di formattazione coerenti per SQL. Vedi link per lo stile di formattazione che utilizzo.

    
risposta data 25.03.2011 - 21:31
fonte
0

Certamente lo è. C'è una ragione per cui giornali e riviste usano colonne. La leggibilità è un fattore significativo. Quando leggiamo i nostri occhi scansioniamo con movimenti relativamente piccoli. L'effetto è di permettere ai nostri occhi di analizzare rapidamente ciò che stiamo leggendo.

Anche quando visibili su colonne a schermo largo costringono i nostri occhi a scansionare avanti e indietro rapidamente. Durante la scansione non comprendiamo veramente nulla. Ciò rallenterà significativamente la lettura e la comprensione. L'effetto è simile alle vecchie stampanti meccaniche. Questi spesso richiedevano l'inserimento di più caratteri null dopo il ritorno a capo per consentire il riposizionamento del carrello o della testina di stampa per la riga successiva.

Inoltre, il layout verticale viene di solito fatto in un modo per chiarire il raggruppamento dei contenuti sulla linea. Questo di solito dovrebbe applicarsi solo alle condizioni logiche composte. Le formule lunghe possono essere strutturate meglio come una serie di affermazioni. (L'ottimizzatore risolverà qualsiasi overhead aggiuntivo e alcuni ottimizzatori si arrenderanno o si comportano male con formule complesse.)

Gli identificatori con più punti che richiedono linee grandi indicano tecniche di codifica che dovrebbero essere corrette.

    
risposta data 25.03.2011 - 21:56
fonte
0

Le ruote del mouse rendono facile lo scorrimento verticale veloce ... lo scorrimento orizzontale è troppo costoso in confronto.

    
risposta data 25.03.2011 - 22:40
fonte
0

Avoid horizontal scrolling.

~ Linee guida per l'interazione con l'esperienza dell'utente Windows Pg 112

Sì.

Gli inglesi leggono da sinistra a destra e risultano in Scorrimento costante = Non produttivo

Per questo motivo ho sempre abilitare il wrap delle parole con glifi lineari nel mio IDE.

    
risposta data 25.03.2011 - 22:56
fonte
0

No, non lo è.

Ho un editor. Non ha solo il ritorno a capo, ha il rientro a capo di riga , che (se lo schermo dice 100 caratteri in larghezza) causerebbe

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.

per apparire come

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.

o con qualsiasi livello di indentazione impostato come predefinito per la lingua corrente.

Le linee più larghe del mio schermo non rendono mai il codice meno leggibile rispetto al codice indentato con linewrap.

modifica: ooooh, sapevo che questa risposta sarebbe stata impopolare:)

    
risposta data 24.04.2012 - 02:27
fonte

Leggi altre domande sui tag