Formateur Java Eclipse.Nouvelle ligne avant les accolades, mais pas après
Question
nous avons ici au travail une convention de codage très étrange, et je n'ai pas réussi à configurer le Java Formatter dans Eclipse correctement pour faire ce que je veux. La convention dit:
- Avant une accolade "{", il devrait toujours y avoir une nouvelle ligne
[MISE À JOUR] Il n'y a pas de règle dans notre convention indiquant si après un "{" doit être un saut de ligne ou non. Les exemples utilisent en fait un saut de ligne (et presque TOUTE convention que j'ai vue jusqu'à présent dit ou implique qu'après un "{" et un "}" devrait toujours être un saut de ligne). Ainsi, les échantillons 1 et 2 sont tous deux «syntaxiquement corrects». [/ UPDATE]
Comme cela fait exploser le code, notre équipe a décidé d'écrire du code comme celui-ci (non, ce n'était pas mon choix!):
public void methode(final boolean b)
{ if (b)
{ do.something();
}
else
{ do.somethingElse();
}
}
Mais dans le formateur, j'ai seulement réussi à obtenir ceci:
public void methode(final boolean b)
{
if (b)
{
do.something();
}
else
{
do.somethingElse();
}
}
ou ceci:
public void methode(final boolean b) {
if (b) {
do.something();
}
else {
do.somethingElse();
}
}
Existe-t-il un moyen de dire au formateur de couper les lignes avant un "{" mais pas après? Je sais que le premier style est horrible et je serais ravi d'utiliser l'un des deux derniers, mais c'est une décision de l'entreprise.
La solution
Alors, voici une information sur ce sujet. J'ai fait quelques recherches supplémentaires. Le style d'accolade ici si abominable (exemple 1) a un nom: The Horstman Brace Style ou ici Horstman . Il y a un petit groupe de personnes qui le défend, car il combine les avantages du style K&R et du style Allman (échantillon 2). Comme les accolades sont alignées, il n'y a pas de «gaspillage» d'espace.
Mais ce n'est pas le seul vrai. Ce style misérable pour le VCS. Si vous devez ajouter une ligne entre l'accolade ouvrante et la première instruction, vous devez d'abord couper la ligne et y placer votre nouvelle ligne. Dans le diff ou la fusion, vous verrez alors non "une ligne a été ajoutée", mais "une ligne a été échangée par deux lignes". Mais l'ancienne déclaration a été modifiée par vous.
Donc un autre argument, ne pas utiliser ce style.
Autres conseils
Pourriez-vous désactiver les parties pertinentes du formateur de code et utiliser les modèles à la place.Par exemple lors de la saisie
private_
et appuyer sur ctrl + espace invoquerait le modèle private_method.Vous pouvez alors modifier le modèle privé pour qu'il soit quelque chose comme ça -
private ${return_type} ${name}(${})
{ ${cursor}
}
Vous devrez faire des choses similaires aux autres instructions de bloc et vous devrez modifier votre style de codage pour commencer à utiliser les modèles plus souvent, mais je pense que cela pourrait fonctionner.