J'importe des produits et j'ai donc une classe d'importation de produits. Il a environ 4000 lignes donc je veux le casser. J'ai commencé à le casser mais j'ai de la difficulté à décider ce qui devrait être une classe et ce qui ne devrait pas l'être. Je pense que toutes mes méthodes utilisent trois des mêmes variables d'instance, donc si je séparais les méthodes, je passerais dans ces variables d'instance à chaque classe séparée dans son constructeur. L'une des façons dont j'ai commencé à briser cette situation était d'examiner des groupes de méthodes qui traitaient du même type de données sur les produits. Par exemple, certaines méthodes fonctionnaient avec des descriptions de produits et certaines fonctionnaient avec des catégories de produits. J'ai donc commencé à les séparer en classes distinctes, mais quelqu'un m'a dit que si ces différentes classes utilisaient les mêmes trois instances, elles devraient probablement être combinées en une seule classe. . Alors, comment je fais ça? Je ne comprends pas vraiment la conception de classe et je ne faisais que les séparer parce qu'il était difficile de trouver du code dans la grande classe.Refactorisation d'une grande classe
Si la question est perdue, quels conseils donneriez-vous à une nouvelle classe? Est ce que j'ai proposé ci-dessus une bonne solution et devrais-je ré-factoriser une classe où toutes les méthodes utilisent les mêmes trois variables d'instance. Cette application est une application asp.net qui prend les données produit de la base de données d'un système A et, en fonction d'une pléthore de paramètres et de configuration, l'utilisateur peut choisir, enregistre les données du produit dans la base de données du système B. Par exemple ....
public class ProductImporter
{
ProductA productA;
ProductB productB;
ImportSettings settings;
public void GetProductADescription()
{
//look at the settings and add productB description to productA
productA.Desc = productB.Desc;
//....
}
//.... tons of methods that all deal with product moving one product to the other
public void AddProduct()
{
//go through all the settings
productA.Save();
}
}
Je ne vois pas le point de question; vous pouvez faire une certaine conception d'opp et réécrire votre code ou, faire la conception d'opp avec un code de séparation. – Svisstack
Peut-être que ces trois variables d'instance devraient être une classe qui leur est propre (quelque chose comme current_state) qui est transmise et manipulée par les autres classes? Difficile à dire quand vous ne décrivez pas leur but, mais la possibilité ne semble pas trop farfelue quand même. –