En tant que programmeur Java (Pedantic) Java, j'aimerais savoir, est-ce une bonne pratique de déplacer un bloc de code commun que toutes les sous-classes utilisent à un fort> séparé fort> (
4 Réponses :
Cela me semble raisonnable - bien que vous souhaitiez que a code> abstrait. Envisagez également d'utiliser la composition à la place - pourrait
B code> et
C code> contenir em> un
A code> au lieu de la sous-classement? P>
Composition sur l'héritage! Bien plus facile à tester, +1
On dirait que cela peut fonctionner assez bien dans mon cas. Je vais essayer ça!
Je proposerais de déplacer toutes ces méthodes pour séparer les classes statiques si elles ne dépendent pas de champs de classe. Faites-les utiliser des méthodes. P>
Tout d'abord, vous ne devriez pas utiliser s'étend à cet effet car trop d'extension est toujours une mauvaise idée. P>
Deuxièmement, vous avez complètement raison de ne pas répéter votre code, mais le regrouper par une partie répétée du code n'est pas bon choix. Un moyen préférable de regrouper les choses comme un sens dans le monde réel, par niveau d'abstraction. p>
Enfin, lorsque vous avez des doutes: séparément ou non, étendue ou composition, protégée finale ou uniquement protégée, essayez d'écrire un test de l'unité à cette classe et les réponses seront très rapides. P>
Si vous êtes un débutant Java, vous pensez à ces sortes de choses, alors c'est un bon moment pour lire le chapitre "Classes and Interfaces" dans un livre intitulé "Java efficace". Les informations qu'il y aura plus complète et plus nuancée que les réponses que vous obtenez ici. P>
Voici une façon de penser à mélanger le final code>,
protégé code> et
statique code> Mots-clés: p>
statique code> car il casse le paradigme OO. LI>
statique code>. Li>
final code> doit être utilisé plus souvent, et c'est une bonne idée de l'utiliser avec
protégé code>. Voir l'article 17 dans "Java efficace". Li>
protégé code> et
statique code> ne sont pas utilisés ensemble ensemble. Vous seriez à mélanger une construction OO avec une construction qui enfreint le comportement OO normal, la combinaison est donc impair. Li>
ul>
Statique n'est pas si mauvais ... Bloch recommande son utilisation pour faire des usines, par exemple. Et bien sûr, nous ne voulons pas vouloir que math.floor () nécessite une instance de mathématiques! Cela peut être utile, mais utilisé avec précaution, bien sûr.
Je suis d'accord, mais un puriste a déjà essayé de me convaincre du contraire: que les méthodes
Les statistiques sont toujours potentiellement dangereuses avec des tests ou une multithreading. Bien sûr, il existe de nombreuses raisons valables d'utiliser des statistiques.