Une suggestion du "code propre" de Bob Martin m'a fait me gratter la tête. "Si une fois une fonction en appelle une autre, elles devraient être verticalement proches et l'appelant devrait être au-dessus de l'appelé"
Jusqu'à présent, j'ai été plus ou moins fidèle aux directives .Net, qui regroupent les membres de la classe par type (propriétés, ctors, fonctions) et visibilité (public / prot. / Private). L'astuce semble être un problème au début .. mais cela "pourrait bien fonctionner". Personnellement, j'ai rencontré des cas où j'ai aimé cette mise en page - plus facile à explorer lorsque vous êtes dans la bonne chaîne d'appels.
L'idée derrière l'astuce semble bonne, mais d'autres scénarios comme «laissez-moi regarder l'interface publique de cette classe» pourraient empirer. Peut-être que l'oncle Bob mise sur les petites classes et le support IDE pour les types de visualisation ...
Quelqu'un a-t-il essayé cela pendant une longue période?
Mise à jour: il semble qu'un extrait de code soit en règle
class SomeType()
{
/// fields, ctors, et. all
public void Method1() { // calls HelperMethod1 and HelperMethod2 }
private void HelperMethod1 { // calls HelperMethod3 }
private void HelperMethod3 {}
private void HelperMethod2 {}
public void Method2 () { // and so on... }
}
la source
Réponses:
Je vais peut-être sortir sur une branche ici, mais je me demande si l'outil que vous utilisez a un impact là-dessus. Je fais référence à l'éditeur de texte par rapport à la décision IDE que les développeurs doivent prendre.
Dans un IDE, vous avez beaucoup plus de fonctionnalités pour afficher les fichiers source. En règle générale, vous pouvez obtenir une liste des méthodes triées par ordre alphabétique, par visibilité, ou même renvoyer le type dans une barre latérale. Vous pouvez également passer à une méthode si vous en avez l'usage. Vous pouvez également générer des arborescences d'appels pour les méthodes et effectuer un zoom avant. Vous disposez également généralement d'une puissante commande find qui peut prendre en charge les expressions régulières. Dans cette situation, l'ordre des méthodes que vous créez n'a pas vraiment d'importance car vous avez des vues autres que le code source disponible.
Dans un éditeur de texte, vous n'avez généralement pas ces fonctionnalités - le plus proche que vous aurez est probablement une recherche / remplacement fort. Ici, vous allez vouloir prêter plus d'attention à la structure de votre fichier car il pourrait être plus difficile de naviguer. Vous voulez minimiser le temps passé à faire défiler le fichier pour trouver ce que vous recherchez, et un ordre cohérent et logique de méthodes peut vous aider.
la source
Le fait est que les choses appelées sont moins intéressantes que les choses appelées. Plus une méthode appelle d'autres méthodes, plus il est probable que cette méthode fasse partie de l'API externe de l'objet (par opposition à être un détail d'implémentation). Cela signifie que l'API externe de la classe - les méthodes publiques, si votre langue prend en charge ce concept - "voudra" naturellement être en haut du fichier, ce qui facilitera la recherche de ces méthodes. Inversement, les fonctions d'assistance et autres "voudront" être au bas du fichier.
(J'explique le concept, pas pour évaluer son efficacité.)
la source
Si par période prolongée, vous entendez plus de quelques jours? Puis non.
Il y a quelques années, j'ai commencé à faire ça sur un nouveau code, et je me suis lentement rendu fou, jusqu'à ce que je m'arrête.
Ma préférence personnelle pour l'organisation des cours est
Mais ce n'est pas religieux, les propriétés et les méthodes peuvent se mélanger. La visibilité n'entre pas en jeu (je ne regroupe pas par public / protégé / privé)
Nous avons un gars ici au bureau qui maintient une structure stricte sur tout dans un fichier de classe, tout étant regroupé en groupes principaux et sous-groupes, tous joliment imbriqués dans des régions. . . Je dois admettre que je pense que les régions sont l'œuvre de Satan, elles me poussent à contourner le virage.
Chaque fois que j'ouvre une de ses classes, je meurs un peu à l'intérieur :(
la source