Quelle devrait être la longueur de la fonction (être lignes de code dans une fonction)? [dupliquer]

StackOverflow https://stackoverflow.com/questions/2976834

  •  24-10-2019
  •  | 
  •  

Question

Possible en double: Combien de lignes de code devrait une fonction / procédure / méthode ont

Je voudrais savoir combien de lignes de code devrait être fonction ont? Combien de lignes est trop.

Je lis ce un moment, autour de 10 ou 20 lignes, mais c'était parce que l'écran serait accueillir que tant de lignes. Maintenant que la taille de l'écran deviennent plus grandes, ce ne serait pas vrai.

Supposons que la qu'aucune partie de la fonction est utilisée nulle part ailleurs à savoir le mépris de principe DRY.

J'aimerais entendre ce que les autres ont à dire à ce sujet.

Merci.

Remarque : Quand est une fonction trop longtemps , n'a pas pu le trouver quand je posté.

Était-ce utile?

La solution

Ce genre de question est bien répondu dans code complet . Steve McConnel a écrit une page entière pour répondre à cette question. Sa conclusion:

Des décennies de preuve disent que les routines d'une longueur telle (> 100 lignes) ne sont plus d'erreurs que plus courte routines. Que des questions telles que la La cohésion de routine, le nombre de décisions des points, le nombre de commentaires nécessaires pour expliquer la routine, et d'autres considérations liées à la complexité, dicter la longueur de la routine plutôt que d'imposer une longueur restriction en soi. Cela dit, si vous veulent écrire des routines plus de à environ 200 lignes, faites attention.

Autres conseils

Les lignes ne sont pas pertinentes, mais la complexité est.

A la fonction doit faire une tâche, et il devrait être évident. Il ne devrait pas vous prendre plus de quelques instants pour comprendre exactement comment et ce que la fonction.

Il devrait en avoir autant que nécessaire.

Je ne vois aucun point à restreindre une ligne de comptage à la taille de l'écran de fonction (ok pour être juste, je ne démarre pas la programmation qu'après écrans pourraient accueilleraient plus de 10-20 lignes - peut-être cela avait du sens dans certains environnements). Il suffit d'écrire la fonction comme il est logique de. Quand il est si grand que des morceaux de code commencent à répéter, factoriser ces pièces à d'autres fonctions / classes / composants.

Il est une règle assez arbitraire de pouce. Certains, comme 20 lignes, d'autres comme la règle de non-défilement. En fin de compte, assurez-vous qu'il est lisible et facile à comprendre un coup d'oeil. Relisez votre principes SOLIDES et assurez-vous que la méthode a seulement 1 responsabilité , etc.

Tant que nécessaire, aussi courte que possible.

Je prends 5-10 lignes en règle générale, mais s'il y a une certaine logique qui ne peut pas être (re) pris en compte facilement dans de multiples fonctions i écris plus si nécessaire. D'autre part, j'ai souvent des fonctions qui sont juste une ligne ou deux longues.

Si vous ne le faites pas immedatly comprendre ce qu'est une partie de code ne, écrire une nouvelle fonction pour elle.

Je ne pense pas qu'il importe combien de lignes il a ... aussi longtemps qu'il est efficace.

Tout code qui peut être réutilisé partout dans votre base de code doit être déplacé à une autre fonction / méthode dans la même classe ou une classe partagée et a appelé.

Je l'ai entendu la taille de l'écran métrique avant aussi, mais évidemment pas destiné à être une limite dure ou à l'échelle avec la taille du moniteur. Il est juste pour but de transmettre le principe de SEC et que le maintien des fonctions aussi faible que possible est l'une des meilleures façons de code d'écriture qui peut l'échelle (la taille du projet).

Le document de style de codage du noyau Linux dit:

Fonctions doit être court et doux, et faire juste une chose. Ils devraient tenir sur un ou deux de texte-écrans (La taille de l'écran ISO / ANSI est 80x24, comme nous le savons tous), et faire une chose et faire bien.

Maintenant, je me rends compte que c'est dans le contexte du code du noyau, mais je pense que certains des points, il fait re: la longueur de la fonction sont généralement valides. Trouvez une copie . La section sur les fonctions est le chapitre 4.

Dans l'ensemble, la durée de fonction ne doit pas être limitée par une règle de artificielle; facteur choses s'il est logique, et parce qu'il fait des choses plus faciles à lire, mais la règle sur les 1-2 écrans ne sont pas écrites dans la pierre.

est juste une opinion d'un oo-perspective:

Je préfère garder mes méthodes en unités logiques de travail et ne pas vraiment se soucier de mesures comme ligne de contrôle. cela rend également très facile de nommer correctement vos méthodes, et les empêche de se ballonnement.

un exemple fonctionnel très trivial serait au lieu d'avoir une fonction qui calcule la séquence de Fibonacci en ligne dans une boucle i ajoute une fonction successeur (int a, int b), qui est appelée par la fonction de Fibonacci ().

un exemple plus complexe oo mode serait un client http qui effectue une requête GET. Je brisaient que jusqu'à en quelque chose comme ceci:

Connection getConnection(String host, int port)
Request createRequest(String[] params)
void sendRequest(Request r)
String getResponse(Connection c,Request r)

Fonctions doit être exactement assez petit pour faire leur travail, mais pas plus petit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top