Eclipse Java Formatter. Nuova linea prima delle parentesi graffe, ma non dopo
Domanda
Abbiamo qui al lavoro una convention di codifica molto strana e non sono riuscito a configurare il formatter Java in Eclipse, nel modo giusto di fare quello che voglio. La convenzione dice:
- Prima di un tutore riccio "{" dovrebbe esserci sempre una nuova linea
AGGIORNAMENTO] Non esiste una regola nella nostra convenzione che dice, se dopo un "{" dovrebbe essere una pausa di linea o meno. Gli esempi in realtà usano una pausa di linea (e quasi ogni convenzione che ho visto finora dice o implica che dopo un "{" e un "}" dovrebbero essere sempre una pausa di linea). Quindi il campione 1 e 2 sono entrambi "sintatticamente corretti". [/AGGIORNARE
Dato che questo soffia il codice, il nostro team ha deciso di scrivere codice come questo (no, questa non era la mia scelta!):
public void methode(final boolean b)
{ if (b)
{ do.something();
}
else
{ do.somethingElse();
}
}
Ma nel formatter sono riuscito solo a ottenere questo:
public void methode(final boolean b)
{
if (b)
{
do.something();
}
else
{
do.somethingElse();
}
}
o questo:
public void methode(final boolean b) {
if (b) {
do.something();
}
else {
do.somethingElse();
}
}
C'è un modo per dire al formatter di rompere le linee prima di un "{" ma non dopo? So che il primo stile è terribile e sarei lieto di usare uno degli ultimi due, ma questa è una decisione aziendale.
Soluzione
Quindi, qui un'informazione su questo argomento. Ho fatto qualche ricerca in più. Lo stile del tutore così abominato (campione 1) ha un nome: Lo stile del turistico Horstman o qui Horstman. C'è un piccolo gruppo di persone che lo difendono, in quanto combina i vantaggi dello stile K&R e Allman (Sample 2). Man mano che le parentesi graffe sono allineate e non ci sono "rifiuti" di spazio.
Ma questo non è l'unico vero. Questo stile infelice per i VC. Se è necessario aggiungere una linea tra il tutore di apertura e la prima affermazione, è necessario prima per rompere la linea e mettere lì la tua nuova linea. Nel diff o unione vedrai quindi "una riga è stata aggiunta", ma "una riga è stata scambiata da due righe". Ma la vecchia affermazione è stata cambiata da te.
Quindi un altro argomento, non per usare questo stile.
Altri suggerimenti
Potresti disattivare le parti pertinenti del formatter di codice e utilizzare invece i modelli. Ad esempio durante la digitazione
private_
E colpire Ctrl+Space invocherebbe il modello privato_method. Potresti quindi modificare il modello privato per essere qualcosa del genere -
private ${return_type} ${name}(${})
{ ${cursor}
}
Dovresti fare cose simili alle altre dichiarazioni a blocchi e dovresti modificare il tuo stile di codifica per iniziare a usare i modelli più spesso, ma ritengo che potrebbe funzionare.