Est-ce que quelqu'un conception api ou code de la bibliothèque de cette façon?
-
22-09-2019 - |
Question
Je lisais quelques choses sur la façon de concevoir une bibliothèque ou API bien, et trébuché à travers une grande conférence à Google Tech pourparlers de Joshua Bloch. Maintenant, même si je suis loin d'être un développeur API professionnel, je pense que la programmation d'un groupe de classes / fonctions est similaire, bien que beaucoup version réduite de la même chose - la séparation nette des actions, la facilité et l'utilisation agréable, encourageant code propre , etc.
Je traversais un peu largement utilisé le code Java open source et ai eu cette idée (rien de nouveau, mais juste de le mettre en place lucidement ...)
Prenons un exemple code pseudo (ou peut-être un dialecte de BASIC):
1. new label
2. set name 'hello world'
3. set color 'blue'
4. show 'topmost'
5. on click hide
inspiré par le code Java Je veux être en mesure de faire quelque chose comme ceci:
1. Label l = new Label()
2. .setName('Hello World')
3. .setColor('blue')
4. .show(zindex.top);
5. l.onClick = l.hide() ;
Ma question est la suivante:
Est-ce que quelqu'un d'autre API de conception à partir de pseudo-code comme ceci?
Est-ce une bonne idée pour un petit quelque chose? Dites jusqu'à 10 classes chacun avec peut-être 10 méthodes, chaque méthode pas plus que 5-6 code de lignes à l'intérieur. C'est évidemment juste un ensemble approximatif de nombres pour montrer la taille des classes à concevoir - nulle part près d'une API complète et non pas seulement un projet passe-temps - un ensemble professionnel qui fait quelque chose de petit, mais le fait bien .
Quelqu'un at-il trouvé de sérieux inconvénients à cette approche?
Je pense que le un avantage réel est qu'il vous oblige à écrire votre premier cas d'utilisation .
L'autre chose est que le noms et les verbes restent simples , qui permet à votre produit final d'esquiver les MultiPhraseAbstractParadigmDesignPatternImplementor syndrome :-D
La solution
Ceci est un modèle de conception assez commun appelé un couramment. Il est courant dans les langages fonctionnels et gagne en popularité ailleurs. Je l'ai vu dans le schéma.
Il est un langage très pratique et facile à lire, mais rappelez-vous qu'il y aura souvent des moments où vous ne souhaitez réellement initialiser plus d'une variable dans un seul appel de fonction. Par exemple, quand il y a état interne qui doit être réglée en fonction d'une combinaison de données, ou lors de la configuration et écrasez les valeurs par défaut est coûteuse. Ainsi, comme avec tous les « modèles », utiliser judicieusement et avec préméditation.
Autres conseils
Jquery fait exactement cela.
Oui, cela est la façon dont jQuery est conçu, il finit toujours par se retourner afin que vous puissiez les méthodes de la chaîne comme celle-ci.
J'ai tendance à commencer par les classes vides et méthodes. Son vraiment une question de haut en bas par rapport design bas vers le haut.
Je préfère vraiment un énorme croquis de tableau blanc bien.