Ci sono un paio di stili in competizione per gli argomenti delle funzioni di formattazione. Tutte hanno un senso, ma hanno differenze riguardo l'uso dello spazio verticale e orizzontale, la possibilità di commentare e quanto chiaramente le differenze indicheranno il cambiamento.
Gli stili possono essere prima divisi per il posto in cui posizionano il primo argomento di funzione: Sulla stessa riga o sulla seconda riga:
// same line
foo(bar,
baz)
// separate line
foo(
bar,
baz
)
Posizionare l'argomento sulla stessa riga è più compatto, ma posizionare tutto su una linea a sé conduce a diff migliori: se vediamo che la riga foo(bar,
è stata cambiata, non sappiamo immediatamente se la funzione o la argomento è stato cambiato.
La seconda scelta è come allineare gli argomenti sulle linee consecutive. Possiamo usare un rientro fisso o allinearli con le parentesi della chiamata di funzione:
// fixed indent
foobar(
baz,
qux
)
// align with parens
foobar(baz,
qux)
L'uso di un rientro fisso mantiene il rientro totale degli argomenti più piccolo, lasciando più spazio orizzontale da utilizzare. Potresti ad es. usa questo spazio per un commento di linea per spiegare cosa significa ogni argomento. L'allineamento degli argomenti nella parentesi di apertura sembra migliore, specialmente quando non si posiziona il primo argomento su una riga a parte. La riga rimanente per ogni argomento è piuttosto breve, il che accade anche per scoraggiare il nidificazione profonda. Che questa sia una buona cosa è un altro dibattito.
Tuttavia, se decidi di inserire i tuoi argomenti, è importante che siano allineati verticalmente. Quindi questo stile ha poco senso:
foobar(baz,
qux)
Quindi, possiamo scegliere dove posizionare la parentesi chiusa. Possiamo metterlo subito dopo l'ultimo argomento (che è bello e compatto), o metterlo su una linea a parte, dove possiamo allinearlo con il nome della funzione, la parentesi di apertura, o da qualche parte in mezzo.
// same line
foobar(baz,
qux)
// align with function name
foobar(
baz,
qux,
)
// align with opening paren
foobar(
baz,
qux,
)
// somewhere in between
foobar
(
baz,
qux
)
L'utilizzo di una linea a parte ha il vantaggio che l'aggiunta di una riga per un altro argomento contrassegna solo quella linea modificata in una diff; altrimenti la riga precedente sarebbe anche cambiata perché devi rimuovere la parentesi. Se metti la parentesi chiusa su una riga propria e la tua lingua supporta questo (PHP lo fa), allora dovresti anche mettere una virgola dopo l'ultimo argomento, per questo stesso motivo.
Se si allinea il paren di chiusura con il nome della funzione, si crea una strong relazione visiva tra la funzione e il paren di chiusura, ma allinearlo con il paren di apertura demark chiaramente il blocco di argomenti. Qui si applicano esattamente gli stessi argomenti dello stile di rinforzo, in cui alcuni ecosistemi preferiscono "parentesi egiziane", mentre altri preferiscono posizionare ogni controvento su una linea a sé stante.
Quindi, c'è una buona argomentazione per quasi tutti gli stili. La parte importante è fare una scelta ben informata e attenervisi. Preferisco gli stili che migliorano la difformità e consentono una nidificazione profonda:
foobar(
baz,
qux,
)