138 votes

Meilleure pratique : classement de public/protégé/privé dans la définition de la classe ?

Je commence un nouveau projet à partir de zéro et je veux qu'il soit propre / qu'il ait de bonnes normes de codage. Dans quel ordre les développeurs chevronnés d'ici aiment-ils présenter les choses à l'intérieur d'une classe ?

A : 1) méthodes publiques 2) méthodes privées 3) vars publics 4) vars privés

B : 1) vars publics 2) vars privés 3) méthodes publiques 4) méthodes privées

C : 1) vars publiques 2) méthodes publiques 3) méthodes privées 4) vars privées

J'aime généralement placer les variables statiques publiques en haut de la liste, mais alors une méthode statique publique serait-elle listée avant votre constructeur, ou le constructeur devrait-il toujours être listé en premier ? Ce genre de choses...

Je sais que c'est délicat, mais je me demandais quelles étaient les meilleures pratiques en la matière.

PS : non, je n'utilise pas Cc#. Je sais. Je suis un luddite.

4voto

ScottS Points 5247

Je m'en souciais beaucoup auparavant. Au cours des dernières années, l'utilisation d'IDE modernes a permis d'assouplir considérablement mes exigences, puisque pratiquement tout n'est qu'à une ou deux frappes de clavier. Maintenant, je commence par les statiques, les variables membres, puis les constructeurs, après quoi je ne m'en préoccupe plus beaucoup.

En C#, je laisse Resharper organiser les choses automatiquement.

2voto

AlanKley Points 1257

Je suis généralement d'accord avec l'ordre public, protégé, privé, ainsi qu'avec l'ordre données statiques, données membres, fonctions membres.

Bien que je regroupe parfois des membres similaires (getters et setters), je préfère généralement répertorier les membres d'un groupe par ordre ALPHABÉTIQUE afin de pouvoir les localiser plus facilement.

J'aime aussi aligner les données/fonctions verticalement. Je tabule ou j'espace suffisamment vers la droite pour que tous les noms soient alignés dans la même colonne.

1voto

user134793 Points 1

Chacun son métier, et comme le dit Elzo, les IDE modernes ont facilité la recherche des membres et de leurs modificateurs grâce à des icônes colorées dans les menus déroulants et autres.

Je pense qu'il est plus important pour le programmeur de savoir dans quel but la classe a été conçue et comment on peut s'attendre à ce qu'elle se comporte.

Ainsi, s'il s'agit d'un Singleton, je place la sémantique (classe statique getInstance()) en premier.

S'il s'agit d'une fabrique concrète, je place la fonction getNew() et les fonctions register / initialize en premier.

... et ainsi de suite. Quand je dis premier, je veux dire peu après les c'tors et les d'tor - puisqu'ils sont la manière par défaut d'instancier une classe.

Les fonctions qui suivent sont alors en :

  1. l'ordre logique des appels (par exemple, initialize(), preProcess(), process(), postProcess()), ou
  2. (comme les accesseurs, les utilitaires, les manipulateurs, etc,)

selon que la classe est principalement destinée à être un magasin de données avec quelques fonctions, ou un fournisseur de fonctions avec quelques membres de données.

0voto

boz Points 149

Quelle langue ? Si vous utilisez C#, prenez ReSharper et laissez-le s'en charger pour vous.

0voto

Elzo Valugi Points 10906

Certains éditeurs, comme Eclipse et ses descendants, vous permettent de réorganiser dans la vue d'ensemble les vars et les méthodes, par ordre alphabétique ou comme dans une page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X