web-dev-qa-db-fra.com

Existe-t-il des conventions de Java?)?

J'ai une classe de grande taille (une quarantaine de méthodes) qui fait partie d'un paquet que je soumettrai comme cours. À l’heure actuelle, les méthodes utilisées sont plutôt confuses en termes d’utilité publique/privée, etc., et je souhaite les ordonner de manière judicieuse. Y a-t-il un moyen standard de faire cela? Par exemple. normalement, les champs sont listés avant les méthodes, le ou les constructeurs sont listés avant les autres méthodes, et les getters/setters en dernier; Qu'en est-il des méthodes restantes?

145
fredley

Certaines conventions énumèrent 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 afin de faciliter la détection des jointures où vous pouvez scinder votre classe existante en plusieurs classes plus petites et plus ciblées.

120
Jon Skeet
  1. Variables de classe (statiques): d'abord les variables de classe publiques, puis les valeurs protégées, puis les variables privées.

  2. Variables d'instance: d'abord public, puis protégé, puis privé.

  3. Constructeurs

  4. 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 être située entre deux méthodes d'instance publique. L'objectif est de faciliter la lecture et la compréhension du code.

Source: http://www.Oracle.com/technetwork/Java/codeconventions-141855.html

106
Michael

Le lien plus précis avec les "Conventions de code": "Déclarations de classe et d’interface"

36
Timofey Gorshkov

Je ne sais pas s'il existe une norme universellement acceptée, mais ce sont mes propres préférences.

  • les constructeurs d'abord
  • méthodes statiques next, s'il y a une méthode principale, toujours avant les autres méthodes statiques
  • méthodes non statiques ensuite, généralement en fonction de l’importance de la méthode, suivies des méthodes qu’elle appelle. Cela signifie que les méthodes publiques qui appellent d'autres méthodes de classe apparaissent vers le haut et les méthodes privées qui n'appellent aucune autre méthode finissent généralement vers le bas.
  • méthodes standard comme toString, equals et hashcode suivant
  • les getters et les setters ont une place spéciale réservée en bas de la classe
14
Qwerky

40 méthodes dans une seule classe, c'est un peu trop.

Serait-il judicieux de déplacer certaines fonctionnalités dans d'autres classes, nommées de manière appropriée. Il est alors 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 consiste à lister les éléments soit avant ou après vous en avez besoin, dans l'ordre de votre choix.

Cela signifie généralement que main() va en haut ou en bas.

11

Ma "convention": static avant instance, public avant privé, constructeur avant méthodes, mais méthode principale en bas (si présent).

11
eljenso

En outre, Eclipse offre la possibilité de trier les membres de la classe pour vous, si pour une raison quelconque, vous les mélangez:

Ouvrez votre fichier de classe, allez à "Source" dans le menu principal et sélectionnez "Trier les membres".

tiré d'ici: Méthodes de tri dans Eclipse

2
Stephan Richter

Utilisez-vous Eclipse? Si tel est le cas, je conserverais l'ordre de tri par défaut des membres, car il est probablement plus familier à quiconque lit votre code (bien qu'il ne s'agisse pas de mon ordre de tri préféré).

1
finnw