私はテスト用プロジェクトとしてコンソール電卓を作っています。私のコードはSingle Responsibility Principleに違反していますか?
public interface ITerm
{
Object Value { get; }
}
今、私はIOperandとIOperatorインタフェースでそれを継承し、逆ポーランド記法を経由してさらに計算でこれらのintefacesを使用しています:それは私の実現の主な特徴は、私がITERMインタフェースから継承された数字と演算子クラスを作ったということです。
これで、このObject-typeプロパティを使用して番号と演算子を保持することは、Single Responsibility Principleに違反していると言われました。
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();
}
これは計算の処理方法です。したがって、2つの質問があります。 1.オブジェクト変数にオペランドと演算子の両方を格納することについての私の考えにいくつかの欠陥がありますか? 2.コードを改善するいくつかの方法がありますか?私は今CalculatePostfixExpressionメソッドで訪問者パターンを使用することを検討しています。
あなたがここにそれを投稿する必要があります。http://コードレビュー.stackexchange.com/ –
私を案内してくれてありがとう、私はそこに私の質問を削除する必要がありますcodereviewに投稿した後に? –