J'ai une classe de grande taille (une quarantaine de méthodes) qui fait partie d'un package que je vais soumettre en tant que cours. Actuellement, les méthodes sont assez mélangées en termes d'utilité publique / privée, etc. et je veux les ordonner de manière raisonnable. Existe-t-il une manière standard de procéder? Par exemple, normalement les champs sont listés avant les méthodes, les constructeurs sont listés avant les autres méthodes, et les getters / setters en dernier; qu'en est-il des méthodes restantes?
java
methods
conventions
Fredley
la source
la source
Réponses:
Certaines conventions répertorient d'abord toutes les méthodes publiques, puis toutes les méthodes privées - cela signifie qu'il est facile de séparer l'API de l'implémentation, même lorsqu'il n'y a pas d'interface impliquée, si vous voyez ce que je veux dire.
Une autre idée consiste à regrouper les méthodes associées - cela facilite la détection des coutures où vous pouvez diviser votre grande classe existante en plusieurs plus petites et plus ciblées.
la source
Variables de classe (statiques): d'abord les variables de classe publiques, puis les variables protégées et enfin privées.
Variables d'instance: d'abord publique, puis protégée, puis privée.
Constructeurs
Méthodes: ces méthodes doivent être regroupées par fonctionnalité plutôt que par étendue ou accessibilité. Par exemple, une méthode de classe privée peut se trouver entre deux méthodes d'instance publique. Le but est de faciliter la lecture et la compréhension du code.
Source: http://www.oracle.com/technetwork/java/codeconventions-141855.html
la source
Le lien plus précis vers «Conventions de code»: «Déclarations de classe et d'interface»
la source
Je ne sais pas s'il existe une norme universellement acceptée, mais mes propres préférences le sont;
toString
,equals
ethashcode
ensuitela source
new Thing()
ne doit aboutir qu'à l'instanciation d'une nouvelle chose. Cela ne devrait pas entraîner l'ouverture de connexions à la base de données, l'écriture de fichiers, etc.40 méthodes dans une seule classe, c'est un peu beaucoup.
Serait-il judicieux de déplacer une partie des fonctionnalités dans d'autres classes - correctement nommées? Ensuite, il est beaucoup plus facile de comprendre.
Lorsque vous en avez moins, il est beaucoup plus facile de les répertorier dans un ordre de lecture naturel. Un paradigme fréquent est de lister les choses avant ou après que vous en ayez besoin, dans l'ordre où vous en avez besoin.
Cela signifie généralement que cela
main()
va en haut ou en bas.la source
onPause()
,onResume()
etc., ainsi que tous mesOnClickListener
champs, qui, bien qu'ils sont des champs, ne regardez pas ou qui se comportent comme eux il est donc judicieux de listez-les séparément.Ma "convention": statique avant instance, public avant privé, constructeur avant méthodes, mais méthode principale en bas (si présente).
la source
De plus, eclipse offre la possibilité de trier les membres de la classe pour vous, si vous les avez mélangés pour une raison quelconque:
Ouvrez votre fichier de cours, allez dans "Source" dans le menu principal et sélectionnez "Trier les membres".
tiré d'ici: Méthodes de tri dans Eclipse
la source
Utilisez-vous Eclipse? Si tel est le cas, je m'en tiendrai à l'ordre de tri des membres par défaut, car celui-ci sera probablement le plus familier à celui qui lit votre code (bien que ce ne soit pas mon ordre de tri préféré).
la source