Quand un nom de fonction trop longtemps?
J'essaie d'être plutôt descriptive avec mes noms de fonction, lorsque cela est possible. Cela entraîne parfois dans les noms de fonction dans les vingt à trente plage de caractères tels que "GetActionFromTypeName" ou "GetSelectedActionType". À quel point les fonctions d'obtenir trop de temps à gérer (pas trop longtemps pour le compilateur)?
- Un nom de fonction devient trop long lorsque vous utilisez un éditeur sans la complétion de code.
- Mes noms de fonction sont de la même longueur quand j'utilise vim ...
- Eh bien, vim utilisateurs ont également tendance à être en mesure d'écrire très vite. OK, les programmeurs ont en général tendance vers une meilleure qualifications de dactylographie... mais avec la complétion de code fonctionne encore mieux.
- qui a dit que vim n'a pas de complétion de code?
- Quel est le point de cette question? Le nom de la fonction est trop long lorsque le programmeur sent que c'est trop long. Aucun de nous ne peut vous dire si vous, le programmeur de travail sur le code, pensent que le nom est trop long.
- Il est correct de demander de "fun" questions de droit? C'est l'un de ceux, de plus il est bon de réfléchir avec d'autres personnes.
- Vim est fabuleux, un peu magique, de nouvelles omnicomplete? ^X, ^O... je me sens déjà comme un utilisateur d'Emacs!
- Ce sujet de l'affaire dans laquelle les longs noms de fonction sont destinés à créer une hiérarchie? Par exemple: int module1_submodule2_get_version()?
- Je privilégie toujours la clarté de code sur des noms courts. pour moi son typique de cette fonction peut être nommé comme "prefetchCompaniesByTopID()" ou "comme getScriptBaseLocation()" (note getScriptLocation signifie quelque chose de diffrent, au moins dans mon esprit)
Vous devez vous connecter pour publier un commentaire.
Si il y a une plus courte, mais encore descriptifs, le nom de la fonction, le nom de la fonction est trop long.
Lorsque vous ne pouvez pas les lire à haute voix, sans prendre une bouffée d'air dans le milieu =D
Un nom de fonction est trop long quand il commence à trop décrire ce qu'il fait, ou quand elle nuit à la lisibilité du code.
Quand il ne fait pas de tout qu'il dit qu'il fait. 😉
TheFunctionNameBecomesTooLongWhenitbecomestoohardtoreaditandunderstandit, d'autre part
it_dependends_on_nameing_convention_how_hard_function_reading_is_sometimes_long_names_are_readable.
De Le Code Complet (1ère Édition, page 188)
"Gorla, Benander et Benander constaté que l'effort nécessaire pour déboguer un programme COBOL a été réduit au minimum lorsque les variables les noms moyenne de 10 à 16 caractères (1990). Programmes avec des noms moyenne de 8 à 20 caractères étaient presque aussi facile à déboguer."
Ce qui constitue la seule empirique discussion d'une indication raisonnable pour le nom de variable de la longueur que j'ai jamais vu. Tout le reste est de l'opinion et de confort.
Lorsque vous commencez à penser à elle 🙂
Je ne pense pas qu'un nom de méthode peut être trop long, tant qu'elle est descriptive. Si un nom de méthode va plus de 40 caractères, je vais voir si je peux transmettre le même sens en peu de mots. Si pas, je vais vivre avec le nom long dans un souci de clarté.
Si le nom de la fonction est "trop long", alors il est probable que la fonction elle-même est également trop longue et a une trop grande responsabilité. Beaucoup de sages programmeurs dire qu'une fonction doit faire une chose et une chose seulement. Une fonction dont le nom doit être long à décrire avec précision ce qu'il fait est susceptible d'être un bon candidat pour le refactoring en plusieurs plus petits et plus simples les fonctions privées que, par conséquent, ont des noms plus courts.
Il peut être un peu hors sujet, mais comme vous l'avez demandé spécifiquement pour un fonction nom de directive (par opposition à-dire de la méthode), j'ai pensé que je voudrais citation de Linus Torvalds sur le nommage (bien qu'il soit plus fait référence à des variables, mais encore les principes tenir).
Court, descriptif, les noms vont bien avec un short, des fonctions spécifiques... qui vont bien avec la réutilisation de code.
Je dirais que quand vous vous trouvez à trouver des abréviations pour les noms lorsque se référant à eux. Je trouve également trop quand les gens commencent à décrire pré-/post/parameter - les conditions dans les noms ou donnant des indications sur la mise en œuvre. (comme
getVersionInformationFormTheDatabase()
oudoSomethingWithoutCheckingFooFirst()
)Aussi longtemps que les fonctions réellement ce que leur nom suggère qu'ils font et vous n'allez pas pour un code de golf de l'entrée, je pense que c'est une bonne chose.
À mon avis, un nom de fonction doit être exactement aussi longtemps que nécessaire pour décrire ce que son but est. Si vous pensez que le nom de la fonction est trop longue, alors que peut être une indication de ce qu'il essaie de faire trop de choses, et devrait être remaniée.
Lorsqu'il contient des informations qui est évident à partir du contexte (par exemple, incrementInteger(int x), long longID), inutile (par exemple, ObsoleteIncrementer, RobertsCarFactory), incompréhensible (par exemple, TheFunctionThatRobertWorkedOnLastweekbutdidntfinish), numérique (par exemple, id1, id2, id3) ou autrement, ne pas aider à la compréhension ou contient un code d'odeur. Notez que, même si une partie des noms ci-dessus doivent être élagués, vous pourriez avoir besoin pour remplir des informations utiles pour les garder unique et de les rendre compréhensibles, comme dans person_id pour id1, employer_id pour id2 etc..
À mon humble avis, il est beaucoup plus important pour les fonctions pour être descriptif. IDEs, beaucoup d'aide en évitant les problèmes de mispelling ou quelque chose comme ça. Je pense que c'est ok d'utiliser des abréviations parfois, aussi longtemps qu'ils sont cohérents dans le code (pas d'abréviations différentes pour la même chose, ni même abréviation pour deux choses différentes.
Je pense que c'est particulièrement important pour les publics les noms, ils ne devraient pas être trop long, mais combien de temps trop long est très subjectif. Toujours mieux qu'un long descriptif nom qu'un trop court nom.
Pour les méthodes privées, même des noms très longs sont vraiment pas de problème à mon avis.
Je pense que vous devriez vous inquiétez plus au sujet de quand un nom de fonction est trop court, ou pas suffisamment descriptif. Tant que votre fonction fait ce que son nom l'indique (et tout son nom l'indique), c'est le bien-nommé. J'écris souvent des fonctions avec des noms longs comme getPropertyNameArrayFromObject (même si j'ai tendance à souligner plutôt que camelize), ce qui pourrait être appelé getObjPropArr ou autre chose, mais ne pas être descriptif. J'ai tendance à rester loin de les abréviations parce qu'ils deviennent ambigus quand vous allez travailler sur autre chose et de revenir au code.
D'autre part, d'envisager de nombreuses construit dans les fonctions de PHP comme stricmp qui devrait vraiment être nommé quelque chose le long des lignes de caseInsensitiveStringComparison.
Et il y a des cas où j'ai volontairement écrire très court noms de fonction qui ne sont pas descriptives à tous. Parfois, je voulez juste une petite fonction JavaScript pour agir comme un raccourci. Par exemple, en général, je alias $(id) du document.getElementById(id) parce que je suis malade de taper ça.
Ah, une question sans réponse!
J'ai tendance à trouver si je ne peux pas l'encapsuler dans quelques mots, puis il y a quelque chose avec la conception (paracribbing de Code Complet).
Alors que je suis heureux avec
FindArticlesWithoutTitles
, je serais probablement dégoûté parFindArticlesWithoutTitlesThenApplyDefaultStyles
. C'est tout simplement faux; le nom est trop technique et pas décrire c'est une fonction réelle (titres sans articles ont souvent besoin de styles pour être fixé, alors ce seraitFixArticleStyles
) ou il devrait y avoir deux fonctions:FindArticlesWithoutTitles/ApplyDefaultStyles
.Aussi: la fréquence a beaucoup à faire avec elle. Si elle est utilisée souvent, je veux qu'il soit court, pour réduire l'éblouissement du code; long répétitif noms de code est moche à lire et une douleur à type de. Si je suis toujours à trouver
FindArticlesWithoutTitles
je pourrais juste raccourcir àFindNoTitles
selon le contexte approprié ou peut-être même justeFindArticles
si je n'ai pas d'autre article pour trouver des fonctions.Le nom de la fonction est trop long quand il serait vous faire économiser de travail à utiliser un plus court.
La raison que nous avons l'habitude d'aller pour la fonction descriptive des noms est parce qu'il nous sauve de travail. (en la rendant plus facile à comprendre et à maintenir le code). Donc, il s'ensuit logiquement que vous ne devez pas donner vos noms de fonctions qui sont si longs qu'il vous en coûte un délai supplémentaire de rendre le code plus difficile à lire, par exemple)
Fonction et les noms de méthode de démarrage trop long lorsque le développeur oublie le caractère descriptif de l'argumentation (en supposant argument significatif et les noms de variables). Par exemple:
est transparent dans ce qu'il fait, même si vous n'en sais pas Perl et n'ont jamais entendu parler de HTML::Template.
J'ai vu trop souvent à la tentation de nom de
output
méthode de quelque chose commeRenderHTMLViewFromTemplateObject
. Si toutes les bibliothèques utilisées sont telles conventions de nommage, il devient tout simplement impossible pour moi de suivre ce qui se passe.En essayant d'éviter la subjectivité:
Quand les noms d'obtenir à environ 1/3 de ce que votre typique de la longueur de la ligne est, alors vous êtes en l'étirant. À 1/2 de la longueur de la ligne, vous êtes allés trop loin. Une seule instruction par ligne devient assez dur quand les noms de prendre toute la ligne.
Au-delà de cela, la plupart des IDEs de soutien de la fin (ce qui évite au programmeur de se taper la plupart des noms entièrement), de sorte que la plus importante chose à faire, à mon avis, est de s'assurer que le nom est aussi unique que possible dès que possible.
Noms de méthode peut être très très long en fonction de la langue (Maximale Du Nom De La Méthode De La Longueur). À un certain moment vous allez utiliser cette fonction ou de la méthode et en tapant une phrase d'un des noms de fonction ne semble pas nécessaire.
Garder votre code plus facile à maintenir, utiliser les commentaires à la place.
Si un compilateur a quelques limitations sur les noms de variables, c'est souvent de 64 ou 128 caractères ou quelque part entre les deux. Dans le passé, 32 personnages ont également été populaire. Si ils ont une limite, souvent, ils suffit de prendre les n premiers caractères et ignorer le reste.
Règle générale est que le nom de la fonction fournit une très brève description de ce qu'il fait. La plupart de ces descriptions devraient facilement s'adapter à un maximum de 32 caractères. (Utiliser CamelCase pour séparer les mots.) Puisque la plupart des IDE est maintenant fournir la Complétion de Code, de faire des erreurs avec les noms de fonctions ne ont tendance à être rares. Mais faire vous-même plus facile en vous assurant que la plupart des fonctions diffèrent les uns des autres avec les 8 premiers caractères. Quelque chose comme DateCalculationAddMonth, DateCalculationAddWeek, DateCalculationAddYear et DateCalculationAddDay doit être évitée. Utilisation AddMonthDateCalculation, AddWeekDateCalculation, AddYearDateCalculation et AddDayDateCalculation. (Btw, ce sont stupides des exemples, mais j'espère que vous comprenez ma dérive.)
En fait, il pourrait être préférable d'ajouter un (groupe de) vos fonctions à une classe distincte. Avec au-dessus de silly exemple, vous pouvez simplement créer une classe DateCalculation et ajouter quatre (statique/classe) fonctions (AddMonth, AddWeek, AddYear et AddDay) de cette classe. En gros, ce serait plus utile lorsque vous avez beaucoup de fonctions similaires qui seraient tous ont des noms très longs si vous n'avez pas les regrouper dans des classes séparées.
De l'OMI, il est trop long quand on a une conjonction en elle. "Quand", "Et", "Ensuite", ... quelque chose comme ça. À la suite de la seule Responsabilité de la Règle devrait permettre noms de fonction qui sont assez long pour être descriptif et assez court pour ne pas être ridiculement ennuyeux.
Parfois le 30 caractères maximum dans de nombreux contextes dans Oracle SQL et PL/SQL se sentait comme un terrible restriction, mais à la réflexion, il nous a causé beaucoup de temps à réfléchir à la façon de nommer les choses pour qu'elles soient rapidement comprise par quelqu'un qui lit le code plus tard.
Si nous ne pouvons pas décrire adéquatement le but de une table, une vue, une fonction, une procédure, l'emballage, etc. à l'aide de 30 caractères sans l'utilisation excessive d'abréviation, il avait juste besoin d'un peu plus de réflexion, et peut-être ajouter une couche d'abstraction permettant de regrouper les choses ensemble.
Vous poser une question plus intéressante: Pourquoi faisons-nous les noms de fonction de temps? C'est dans le but de décrire ce que la fonction n'. Eh bien, je soumet cette hypothèse:
Pour illustrer ce point, si vous avez vu une fonction comme ceci...
...que pensez-vous qu'il fait? Le type d'information vous indique tout ce que vous devez savoir. Limitation des effets secondaires et des exceptions, il y a une seule chose que cette fonction pouvait faire.
Bien sûr, vous êtes probablement à travailler dans une langue qui permet la libre effets secondaires, de sorte que la fonction peut, dire, écrire dans un fichier. Mais si c'est le alors que son type est un mensonge. Travailler dans une langue qui déclare effets de types permet d'utiliser très laconique noms sans aucune perte de son caractère descriptif.