CreateDocument(string templatePath)
{
Document doc = OpenDocument(templatePath);
Picture pic = GetLogo();
AddLogo(doc, pic, templatePath);
}
AddLogo(Document doc, Picture logo, string templatePath)
{
Picture placeholder = doc.FindLogoPlaceholder();
if (placeholder.Size != logo.Size)
{
throw new ApplicationException(
String.Format("Invalid template {0}, logo size: {1}, required: {2}",
templatePath, placeholder.Size, logo.Size
));
}
}
Considérons le code ci-dessus comme un exemple que je viens de faire.Inclure les paramètres uniquement dans le but de signaler les exceptions dans les fonctions internes
Notez que la seule raison templatePath
est passée dans la méthode AddLogo
est de faciliter la génération d'exception.
J'ai quelque chose dans mon code aujourd'hui où je devais faire ceci, et il me semble que c'est une odeur de code vraiment désagréable. Mais je ne connais pas très bien les schémas de gestion des exceptions et je ne vois pas vraiment de meilleur moyen de le faire. Je me demande ce que vous en pensez et s'il y a un meilleur modèle pour faire face à des situations comme celle-ci.
Est-ce que 'Document' exposer une propriété du chemin qu'il a ouvert dans le' OpenDocument' appeler? Si tel est le cas, cela annulerait le besoin de passer des paramètres aux fins d'exceptions, ce qui, je conviens, est tombé de l'arbre moche et a frappé toutes les branches en descendant. –