저는 콘솔 계산기를 테스트 프로젝트로 만들고 있습니다. 내가 IOperand 및 IOperator 인터페이스에서 상속 및 역 폴란드 표기법을 통해 추가 계산에서 이러한 intefaces을 사용하고, 지금내 코드가 Single Responsibility Principle을 위반합니까?
public interface ITerm
{
Object Value { get; }
}
: 그것의 내 실현의 주요 기능은 내가하여 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();
}
이것은 계산 방법입니다. 따라서 두 가지 질문이 있습니다. 1. Object 변수에 피연산자와 연산자를 모두 저장하는 것에 대한 몇 가지 결함이 있습니까? 2. 코드를 개선하는 몇 가지 방법이 있습니까? 지금 CalculatePostfixExpression 메서드에서 방문자 패턴을 사용하는 것을 고려하고 있습니다.
당신은 여기에 게시해야합니다 : HTTP :
난 당신이 GitHub의에서 찾을 수있는 자신이 몇 주 전에 (폴란드어 계산기 콘솔 응용 프로그램을 역)와 유사한 콘솔 테스트 프로젝트를 만들었습니다 // 코드 검토 .stackexchange.com/ –
나를 안내해 주셔서 감사합니다, 거기에 내 질문을 삭제해야합니까 codereview에 게시 후? –