2010-09-16 6 views
26

Je suis confronté à une ligne particulière de 153 caractères. Maintenant, j'ai tendance à casser les choses après 120 caractères (bien sûr, cela dépend fortement de l'endroit où je suis et des conventions locales.) Mais pour être honnête, partout où je casse la ligne, ça donne l'air mauvais. Donc, je cherche des idées sur ce que je devrais faire pour cela.Habillage de ligne de code - comment gérer les longues lignes

est ici la ligne:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Je suis ouvert aux idées sur la façon/où briser la ligne (et pourquoi), ainsi que des moyens de raccourcir la ligne elle-même.

Nous ne sommes pas un magasin Java, et il n'y a pas de conventions locales pour ce genre de choses, ou évidemment je les suivrais simplement.

Merci!

Répondre

32

En général, je Sauts de lignes avant opérateurs et tiret, les lignes suivantes:

Map<long parameterization> 
    = new HashMap<ditto>(); 

String longString = "some long text" 
        + " some more long text"; 

Pour moi, le premier opérateur indique clairement que « cette ligne se poursuivait d'autre chose, il ne reste pas seul. " D'autres personnes, bien sûr, ont des préférences différentes.

+1

Et comme un commentaire connexe: ne serait-il pas agréable si Java avait typedef? – Anon

+1

Oui, oui, il le ferait. Je me contenterais même de & macros – corsiKa

+4

Je suis d'accord avec la pause avant les opérateurs, sauf avec l'opérateur d'affectation, je trouve plus difficile à lire lorsque votre '=' est sur la deuxième ligne. Et bientôt Java aura l'opérateur Diamond :) –

6

à mon humble avis c'est la meilleure façon d'écrire votre ligne:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

De cette façon, l'empreinte a augmenté sans accolades peut vous aider à voir que le code était juste splited parce que la ligne était trop longue. Et au lieu de 4 espaces, 8 le rendra plus clair.

+0

Une ligne peut commencer par un opérateur, mais ne doit jamais finir avec elle, dans ce cas '' =. Vérifiez la mise en forme automatique dans votre IDE. NetBeans changerait ce code à coup sûr (testé). – Hermes

+4

Les paramètres par défaut d'un IDE ne sont pas pertinents pour les préférences personnelles ou les recommandations d'un développeur. Je comprends que certaines personnes préfèrent utiliser le '=' au début de la ligne, mais dans le cas de la déclaration des attributs de classe (ou des attributs en général d'ailleurs), je considère que le code est déjà assez clair (l'indentation de la deuxième ligne devrait le rendre encore plus clair). –

+2

Juste pour être clair, il n'y a pas de vrai et de faux ici, c'est purement esthétique et des opinions personnelles. –

4

Utilise les méthodes d'usine statique de Guava pour Maps et ne comporte que 105 caractères.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap(); 
+3

+1 Très bonne idée. Si vous ne voulez pas la dépendance supplémentaire, il est très facile d'écrire une telle usine statique par vous-même. – helpermethod

+41

Je ne pense pas que l'utilisation d'une bibliothèque pour obtenir des lignes plus courtes est une bonne idée. – Carlos

+1

Je ne recommanderais pas de l'inclure à cette fin, mais de nombreux projets l'utilisent déjà. Et comme l'a souligné Helper Method, il s'agit d'un revêtement unique qui sauve quelques coups de clé. – whiskeysierra

6

Voici comment je le fais, et Google le fait à ma façon.

  • Pause avant le symbole pour non-affectation opérateurs.
  • Pause après le symbole pour = et pour ,.

Dans votre cas, puisque vous utilisez 120 caractères, vous pouvez le casser après l'opérateur d'affectation entraînant

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

En Java, et pour ce cas particulier, je donne deux onglets (ou huit espaces) après la pause, selon que des tabulations ou des espaces sont utilisés pour l'indentation.

Ceci est bien sûr une préférence personnelle et si votre projet a sa propre convention pour l'enroulement de ligne, alors c'est ce que vous devriez suivre si vous le souhaitez ou non.

0

Je pense que déplacer le dernier opérateur au début de la ligne suivante est une bonne pratique. De cette façon, vous savez tout de suite le but de la deuxième ligne, même si elle ne commence pas avec un opérateur. Je recommande également 2 espaces d'indentation (2 onglets) pour un onglet cassé précédemment, pour le différencier de l'indentation normale.Cela est immédiatement visible en continuant la ligne précédente. Par conséquent, je suggère ceci:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper 
      = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 
Questions connexes