12
votes

N'ayant qu'une seule classe dans un paquet une odeur de code?

Est-ce une mauvaise pratique d'avoir un paquet avec une seule classe dedans? Serait-il plus logique de déplacer la classe unique sur un package util qui contiendrait d'autres classes utiles aléatoires?


0 commentaires

7 Réponses :


6
votes

non

Le paquet est utilisé pour mettre des classes similaires ensemble,
Dans votre système s'il n'y a pas de classe similaire, vous pouvez évidemment le mettre.


0 commentaires

18
votes

Est-ce une mauvaise pratique d'avoir un paquet avec une seule classe dedans?

Pas nécessairement. Cela pourrait être un signe de quelqu'un qui est obsédé par la classification des choses. D'autre part, il pourrait simplement être une conséquence logique d'un système de classification général sensible appliqué dans un cas inhabituel.

Un exemple de ce dernier pourrait être où vous avez une API générale et de multiples implémentations de cette API, où chacune des implémentations est constituée de plusieurs classes. Mais une de ces implémentations (permet de l'appeler la mise en œuvre nulle) consiste en une seule classe.

Le test réel est de savoir si la structure de l'emballage sert son (s) but (s):

  • est-ce que cela facilite la recherche de classes de bibliothèque?

  • Les paquets organisent les classes d'application le long des lignes de la structure du module logique de l'application?

  • La structure vous permettra de utiliser efficacement la visibilité "Paquet Private"?

    Cela aurait-il plus de sens pour déplacer la classe unique en un package UTIL qui contiendrait d'autres classes utiles aléatoires?

    Pas nécessairement. Si la classe est juste une autre classe de feuilles «de manière aléatoire», il y a un bon cas pour le déplacer. D'autre part, s'il a une fonction spécifique et n'est pas destiné à être utilisé de manière générale, il peut être préférable de le laisser là où il se trouve.

    Il est préférable de ne pas être trop obsédé par la création de hiérarchies d'emballages élégants ou de les rejoindre quand ils se révèlent être aussi élégants (ou utiles) que vous pensiez d'abord. Il existe généralement des choses plus importantes à faire, comme la mise en œuvre de la fonctionnalité, des tests d'écriture, de la documentation d'écriture et ainsi de suite.


2 commentaires

Un bon exemple de ceci est des plugins. Vous pouvez avoir un package appelé com.pricingsoftware.dataProviders et sous-évaluations de PriceProvidera, PriceProviderb et SO-ON. Certaines implémentations auraient beaucoup de cours, mais d'autres pourraient bien avoir une seule classe, en fonction du format du fil.


Un autre exemple est les pilotes de périphérique.



2
votes

Il existe différents statistiques pour les classes utiles statiques. J'utilise celui-ci:

  • Si votre classe UTIL est générique (Utils de chaîne, Utils DB, etc.), je l'ai mis dans un package "UTIL", utilisé dans toute l'application.
  • Si la classe UTIL est spécifique à un domaine, je l'appelle "DomainHelper" par convention et le mettez dans le package de domaine, au même niveau que les classes de domaine.

0 commentaires

6
votes

Est-ce une mauvaise pratique d'avoir un paquet avec une seule classe dedans?

Pas nécessairement. Les packages utilisent pour regrouper des entités logiquement liées. Cela ne vous empêche pas d'avoir une seule entité dans un paquet.

Il serait plus logique de déplacer la classe unique dans un package util contenant d'autres classes utiles aléatoires?

Pas pour moi, pour deux raisons:

  1. util a une signification spécifique. Déplacement d'une entité arbitraire à UTIL Pour des raisons de solitude serait un cas limite d'abus utile.
  2. C'est une organisation prématurée. Avec Java, le support IDE est assez riche pour se réorganiser facilement et efficacement en quelques clics. Attendez un moment pour voir comment votre projet évolue puis appelle ensuite un appel.

0 commentaires

0
votes

Ce n'est pas «mauvais» d'avoir une seule classe dans un package, créez un nouveau paquet pour regrouper plus d'une classe associée et si vous vous attendez à des classes plus connectées à votre classe logique individuelle actuelle à l'avenir pour éviter de refactoriser. Déplacement de toutes les classes de type utilitaire aléatoire sur un seul paquet est une pratique courante observée dans de nombreux endroits. Il est vraiment une question de choix.


0 commentaires

0
votes

Je suppose que cela dépend. Il est assez rare de disposer d'un colis avec une classe, car en plus des réponses énumérées ci-dessus, les packages servent également à la création d'un système en couches. Un package avec une seule classe de celui-ci indique que la décomposition du système n'a pas surfacé certains objets dans le système. Donc, oui, je vais examiner de plus près ce forfait et question de quoi le but est.

Il vaut mieux ne pas coller précisément des trucs aléatoires dans un emballage UTIL à cause de la raison mentionnée ci-dessus. Vous devriez vous demander si vous penseriez à regarder dans l'utilisation de votre classe à l'avenir avant de la mettre là-bas. Lorsque l'utilisation pousse grosse, il commence à trouver difficile la recherche de l'utilitaire recherchée.


0 commentaires

1
votes

oui , c'est une odeur de code définitive.

Cela ne signifie pas que c'est nécessairement faux, mais il devrait y avoir une très bonne raison pour une classe isolée dans un paquet.

La plupart des instances d'un paquet avec une seule classe que j'ai vue ont été erronées.

Les packages doivent mettre en œuvre des fonctionnalités. Il est rare qu'une fonctionnalité soit implémentée en utilisant uniquement une seule classe.


0 commentaires