1

계산기 응용 프로그램을 만들고 코드 유지 관리를 향상시키고 더 나은 단위 테스트를 수행 할 수 있도록 비즈니스 로직을 UI에서 분리하려고합니다.UI에서 비즈니스 로직을 분리하는 방법

사용자가 응용 프로그램에서 다양한 버튼을 클릭 할 때 발생하는 일을 관리하는 CalculatorUI 클래스를 만들었습니다.

또한 수학을 수행하는 Calculator 클래스를 만들었으며 사용자 요구 사항을 기반으로 계산 결과에 대해 몇 가지 유효성 검사를 수행했습니다. CalculatorUI는 Calculator 클래스의 인스턴스를 만들고 Calculator 클래스의 함수를 호출하여 사용자 클릭에 응답합니다. 내 질문은, 계산기 클래스에서 텍스트 상자를 지우고 잘못된 결과를 사용자가 알 수 있도록 메시지 상자를 표시하는 코드를 작성하는 방법은 무엇입니까?

저는 프로그래밍에 익숙하지 않으며 제 동료 중 한 명 (수석 프로그래머)에 따르면 UI를 비즈니스 로직 및 데이터베이스와 별도로 유지하는 것이 좋습니다.

'txtDisplay'와 'resultValue'가 현재 컨텍스트에 존재하지 않는다는 오류가 발생합니다 ... 또한 bool 변수는 어떻게 사용해야합니까?

class Calculator 
{ 
    public double Addition(double value1, double value2) 
    { 
     double result = 0; 

     result = value1 + value2; 
     return result; 
    } 

    public double Subtraction(double value1, double value2) 
    { 
     double result = 0; 

     result = value1 - value2; 
     return result; 
    } 

    public double Multiplication(double value1, double value2) 
    { 
     double result = 0; 

     result = value1 * value2; 

     return result; 
    } 

    public double Division(double value1, double value2) 
    { 
     double result = 0; 

     result = value1/value2; 

     return result; 
    } 

    public bool CalculationValidation(double result) 
    { 
     bool isValid; 
     bool isFalse; 
     // determine if the initial result is within the specified range 
     if ((result < -4000000000) || (result > 4000000000)) 
     { 
      MessageBox.Show("The result is too large or small to be displayed."); 
      txtDisplay.text = "0"; 
      resultValue = 0; 
      return; 
     } 

     // round the result if necessary 
     string test = result.ToString(); 
     if (test.Contains(".")) 
     { 
      test = (Math.Round(double.Parse(test), 10 - test.Split('.')[0].Count())).ToString(); 
     } 
     else if (test.Length > 10) 
     { 
      test = (Math.Round(double.Parse(test), 10).ToString()); 
     } 

     txtDisplay.Text = test; 
    } 
} 

답변

0

당신은 계산기 클래스에서 예외를 발생, 다음 UI에서 그것을 잡아 리셋을하고 메시지를 보여줄 수 :

다음은 계산기 클래스 내 코드입니다. 메시지를 표시하고 디스플레이를 0으로 설정하는 것은 UI 로직입니다. 이 경우에는 분리하는 것이 좋습니다.

이렇게하면 UI가 비즈니스 논리 (Calculator 클래스)에 종속되지만 Calculator 클래스는 UI에 대해 알지 못합니다. 목표는 모든 종속성이 도메인 객체에 대해 안쪽을 향해야한다는 것입니다.

더 복잡한 도메인을 구분하려면 Facade, Command 및 Observer 패턴을 살펴 보시기 바랍니다.

관련 문제