28 votes

Quand devrions-nous créer une nouvelle méthode?

J'essaie de savoir si il existe un consensus sur quand on doit créer une nouvelle méthode dans notre code. Par exemple, devrions-nous seulement de créer une nouvelle méthode/fonction si nous allons être en utilisant de nouveau le code (donc nous avons bien évidemment de couper vers le bas sur les lignes) ou il est commun de le faire juste pour éviter l'encombrement de code ainsi. J'ai été à la programmation pour un long moment maintenant, mais j'ai vraiment passé dans et décida plutôt de façon aléatoire.

Existe-il des modèles de conception ou des livres qui traitent de cela? Une question connexe serait si nous ne devrions définir les paramètres d'un objet à l'aide de méthodes getter et setter. Cela permettrait de créer beaucoup plus de code, évidemment, mais rendrait les choses plus faciles à gérer? Un consensus sur qui?

28voto

Graviton Points 28358

Je pense qu'il n'existe pas de lignes directrices de conception pour cela. Mais quelques-uns des principes de conception de faire parler de la méthode de création.

DRY ( don't repeat yourself) est un principe de base quand vient à la méthode de création. Vous groupe, la logique est similaire à une méthode unique de sorte que vous n'avez pas les dupliquer partout dans votre code, et donc à faire de l'entretien un cauchemar.

Principe de Responsabilité unique est une autre. Il dit que votre classe, ou de la méthode doit se faire seulement une chose. C'est pour faire de la méthode de petite taille.

21voto

Itay Moav -Malimovka Points 17977

Je considère que la programmation est un art. J'ai méthodes split quand il se sent le droit de les diviser, ou d'en écrire un nouveau.

Cela dit, il y a quelques règles (ce qui ne veut pas annuler mon instinct).

  1. Si vous avez besoin de faire défiler l'écran, la lecture de la méthode, vous avez besoin de le diviser
  2. SI vous avez deja vue (le code que vous écrivez semble familier), vous êtes probablement à se répéter, ce qui signifie que vous devriez nous une fonction existante, de méthode et de ne pas en écrire un nouveau.

  3. Pas plus de deux constructions profonde

    pour les(...) pour les(...) pour les(...) MAUVAIS

  4. Pas plus d'une boucle dans une rangée (l'un après l'autre).

  5. Si vous avez besoin de retourner plus d'un type de données (null/false version n'est pas), alors vous avez besoin de partager quelque chose.
  6. Si vous êtes perdu lors de la lecture de votre méthode de split-il
  7. Une méthode/fonction doit être responsable d'une tâche.
  8. Le plus évident - lors de l'écriture de nouvelles fonctionnalités :-)

12voto

lorenzog Points 1558

Un point intéressant, quoique sans rapport avec la programmation orientée objet, est effectué dans linux du style de codage guide:

Chapitre 4: Fonctions

Les fonctions doivent être court et doux, et faire juste une chose. Ils doivent s'installer sur un ou deux écrans de texte (la norme ISO/ANSI taille de l'écran est 80x24, comme nous le savons tous), et de faire une chose et le faire bien.

La longueur maximale d'une fonction est inversement proportionnelle à la complexité et le niveau de retrait de cette fonction. Donc, si vous avez un conceptuellement fonction simple qui est juste une longue (mais simple) cas - déclaration, où vous avez à faire beaucoup de petites choses pour beaucoup de cas différents, c'est OK d'avoir un plus fonctionner.

Toutefois, si vous avez une fonction complexe, et que vous suspectez qu'un moins - que-les surdoués de la première année de lycée, l'étudiant pourrait même ne pas comprendre ce que la fonction est tout au sujet, vous devez respecter les limites maximales de tous les de plus près. Utilisation des fonctions d'assistance avec des noms descriptifs (vous pouvez demander au compilateur en ligne, si vous pensez que c'est la performance est critique, et il faudra probablement faire un meilleur travail que vous avez fait).

Une autre mesure de la fonction est le nombre de variables locales. Ils ne devraient pas dépasser 5 à 10, ou vous faites quelque chose de mal. Re-penser la fonction, et le découper en petits morceaux. Un cerveau humain peut généralement garder facilement la trace d'environ 7 choses différentes, rien de plus et ça devient confus. Vous savez que vous êtes brillante, mais peut-être que vous souhaitez comprendre ce que vous avez fait 2 semaines à partir de maintenant.

8voto

Gordon Points 156415

Si vos méthodes sont très longues, il est logique de re-facteur-les en petits morceaux, même si ces morceaux ne sont pas utilisées n'importe où ailleurs. Cela permettra d'accroître la maintenabilité et la testabilité. Aussi, avec cette approche, vous permettez à d'autres développeurs d'étendre votre code plus facilement dans le cas où ils veulent changer certaines responsabilités d'une méthode, par exemple par le surcharger.

Comme pour les getters et les setters, quelque peu en fonction de la langue que vous utilisez. Dans certaines langues, ce qui peut être très longue. Personnellement, je n'fournir des getters et setters pour les propriétés publiques et/ou si la modification d'une propriété implique la logique au-delà de simplement paramètre/l'obtention de la propriété.

3voto

wowest Points 1016

Vous voudrez peut-être extraire une méthode si:

  • il y a un bloc de commentaire pour un morceau
  • vous pouvez nommer l'intention d'un morceau

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