2009-11-18 7 views
0

j'ai nommer des problèmes avec deux de mes fonctionsrequête dénomination correcte

  • j'ai une fonction is_void qui retourne vrai si l'argument est « vide » (dans un sens). Comment appellerais-tu une fonction opposée? isnt_void? is_set? is_not_void?

  • J'ai une paire de fonctions, la première installe un gestionnaire pour attraper les erreurs dans le code suivant et la seconde supprime ce gestionnaire. install_error_handler/remove_error_handler semble trop long et moche, je préférerais une paire de verbes courts (comme regarder/unwatch).

Toutes les idées sont grandement appréciées.

Merci pour les réponses à ce jour

MIS À JOUR: je besoin d'une fonction pour «n'est pas vide » parce qu'il va être utilisé comme someArray.map(is_not_void)

le second ne peut pas être simplement « registre » ou "installer", car il est utilisé sans arguments.

Répondre

1

En général, essayez de (1) minimiser le nombre de fonctions d'interface et (2) fournir des noms précis et cohérents.

Dans le cas de nommer le cas not is_void(), le premier principe nous dit de ne pas avoir la fonction exister puisque l'utilisateur peut toujours annuler le retour booléen. En d'autres termes, is_void() est une fonction de vérification des contraintes, il appartient à l'appelant de décider d'annuler explicitement la contrainte si nécessaire.

Le cas install_... et remove_... est le cas où le deuxième principe s'applique. Le problème avec les verbes courts est qu'ils sont très ambigus mais il n'est pas toujours possible de supprimer l'ambiguïté par le nommage. Ce qui est le plus important, c'est qu'ils soient aussi descriptifs que possible et que vous appliquiez une méthode cohérente. Si vous utilisez watch_... et unwatch_..., utilisez-les régulièrement. Ne pas avoir watch_errors aux côtés de observe_warnings. L'incohérence entraînera les utilisateurs à rechercher les raisons de la différence de dénomination.

Personnellement, je préfère install_..._handler et uninstall_..._handler ou add_observer avec une condition de filtre sur watch_condition et unwatch_condition simplement parce que unwatch ne ressemble pas à un vrai mot à mes yeux.

3

Je ne suis pas entièrement sûr pourquoi vous avez besoin d'une fonction différente pour # 1; Si ce n'est pas vide, alors is_void retournera false.

Pour le n ° 2, si vous transmettez un gestionnaire d'erreurs dans la méthode; Installer/Désinstaller devrait être suffisant.

+0

Cool, je ne suis toujours pas complètement vendu sur # 1; Ne pourriez-vous pas faire quelque chose comme ceci: someArray.map (! is_void()) Comme pour 2; Je pense que vous êtes coincé avec install/remove_error_handler –

1

Pour répondre à la première partie de votre question: en règle générale, j'évite les négatifs dans les noms de fonctions. Quelque chose comme:

IsNotVoid(String s) 

peut sembler assez inoffensif, mais toujours, vous allez faire quelque chose comme

if (! IsNotVoid(s) && ! IsNotVoid(t)) 
{ 
} 

... qui va faire le prochain programmeur penser trop dur pour ne pas être capable de discerner immédiatement votre intention.

1

Les fonctions de test sont une bonne idée. Cependant, je vous déconseille d'utiliser une dénomination négative, car cela invite une logique double (ou plus) négative if (not is_not_void(a)). Un simple opérateur non devrait suffire: if (not is_void(a)).

1

De votre mise à jour, je suppose que vous voulez dire que vous avez besoin d'un pointeur vers la méthode. J'essaie toujours d'utiliser des noms aussi clairs que possible, donc je me demande d'abord quelle est la signification de is_void. De votre texte, je proposerais is_empty, is_not_set ou is_nothing au lieu de is_void les opposés pourraient être is_not_empty, is_set ou is_something, le dernier semble un peu drôle mais serait probablement proche de la signification dans votre code.

Je ne pense pas que vous ayez à vous prémunir contre une dénomination trop verbeuse, vous devez faire attention aux noms trop concis car cela est souvent une source d'ambiguïté.

En ce qui concerne les install_error_handler et uninstall_error_handler, si ces noms décrivent correctement le but, je les garderais. Si non, essayez de décrire ce que leur signification est en termes de votre code (garde, protéger, verrouiller ...)

Questions connexes