Apr 1, 2021, TIL (Today I Learned) - Static 변수의 문제점

Inwoo Hwang·2021년 8월 26일
0
post-thumbnail

학습 내용


설계를 간과하지 말자

코드에 집착하기 보다는 설계를 어떻게 할지 깊게 생각하고 꼭 리뷰어에게 설계한 UML에 대한 조언을 구하자!!

문제점 / 고민한 점 / 해결한 점


Static 변수의 문제점

class Data {
    static var medianNotation: [String] = []
    static var postfixNotation: [String] = []
}

기존에는 타입프로퍼티를 활용하여 계산값을 담아서 사용하였습니다.

그런데 이렇게 사용하면 테스트 여러개를 병렬로 수행할 수 없을 것 같다는 생각이 들었습니다.

또한 테스트를 하는 여러 프로그램에서 동시에 같은 주소를 가진 데이터를 참조하므로 데이터의 초기화가 일어나지않는 것 뿐 아니라 지속적으로 충돌이 일어나는 문제를 겪게됩니다.

이렇게 참조의 늪에 빠질 수 있기 때문에 타입프로퍼티 타입을 지양해야겠다 생각하였습니다.

그래서 아래와 같이 코드를 변경 해 봤습니다.

class Data {
    var medianNotation: [String] = []
    var postfixNotation: [String] = []
}

이렇게 생성한 데이터를 인스턴스로 만들어서 사용하였습니다.

데이터 활용 방법

class InputDataValidator {
  var data = Data()
}

Data class를 참조하는 변수 data를 선언 하였습니다.

class Calculator {
  func convertToPostfixNotation(_ input: InputDataValidator) {
        if Operators.list.contains(input.data.medianNotation.last!) {
            input.data.medianNotation.removeLast()
        }
        for element in input.data.medianNotation {
            distinguishOperatorFromOperand(element, input)
        }
        appendRemainingOperators(input)
    }
}

그런 다음 InputDataValidator클래스 타입을 계산기 클래스 메서드의 매개변수로 받아서 연산을 진행하였습니다.

이제 참조의 늪에 빠질 걱정 없이 연산을 할 수 있게 되었습니다 🤩

profile
james, the enthusiastic developer

0개의 댓글