Je fais une calculatrice de console en tant que projet de test. La caractéristique principale de ma réalisation est que je l'ai fait des chiffres et des classes d'opérateurs hérités de l'interface iTerm:Est-ce que mon code viole le principe de responsabilité unique?
public interface ITerm
{
Object Value { get; }
}
Maintenant, je suis héritant dans les interfaces IOperand et IOperator et l'utilisation de ces Intefaces dans les calculs supplémentaires via la notation inverse pologne .
Et maintenant, on m'a dit que l'utilisation de cette propriété de type Object à la fois pour conserver les nombres et les opérateurs est une violation du principe de responsabilité unique.
private ITerm CalculatePostfixExpression(IEnumerable<ITerm> input)
{
var tempResult = new Stack<ITerm>();
foreach (var term in input)
{
if (term is IOperand)
{
tempResult.Push(term as IOperand);
}
if (term is IOperator)
{
tempResult.Push(ProceedOperation(term as IOperator, tempResult));
}
}
return tempResult.Peek();
}
Voici comment je gère le calcul. Il y a donc deux questions: 1. Y a-t-il des défauts dans mon idée de stocker à la fois les opérandes et les opérateurs dans la variable Objet? 2. Existe-t-il des moyens d'améliorer mon code? J'envisage d'utiliser le modèle de visiteur dans la méthode CalculatePostfixExpression maintenant.
Vous devriez poster ici: http: // CodeReview .stackexchange.com/ –
merci de me guider, devrais-je supprimer ma question après avoir posté sur codereview? –