Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Mission: 연습문제 풀이!
by ssg
#pragmatic
2년 전
733

💡 연습문제 1. 파일에서 데이터를 읽는 클래스를 만들어야 한다. 한번에 한 줄씩 읽어 들이고, 각 줄은 여러 개의 필드로 쪼개야 한다. 의사 코드로 표현한 다음 두 클래스 중 어떤 것이 더 직교적인가?

class Split1 {

constructor(fileName) #읽기 위해 파일을 열기

def readNextLine() #다음 줄로 이동

def getField(n) #현재 줄의 n번째 필드를 반환

}

class Split2 {

constructor(line) #한 줄을 쪼개기

def getField(n) #현재 줄의 n번째 필드를 반환

}

✅ 풀이 과정

직교성이란? 언어 기능이 서로 간섭하지 않고 자유롭게 조합될 수 있는 특성입니다.

컴포넌트들이 독립적이면 어느 하나를 바꿀때 나머지 것들도 걱정하지 않아도 됩니다.

해당 컴포넌트의 외부 인터페이스를 바꾸지 않는 한, 전체 시스템으로 퍼져나가는 문제를 일으키지는 않으리라고 안심할 수 있습니다.

직교적인 시스템의 두가지 큰 장점이 있는데 생산성 향상과 리스크 감소입니다.

class Split1은 처음부터 읽기 위해서 파일을 열고 있습니다. 파일을 실행하기 위해서는 파일경로와 같은 '외부의 정보'에 대해서 필요합니다. 외부의 정보가 변경될 경우 다른 요소에 영향을 줄 수 있다고 생각합니다.그리고 class Split1의 내부 일들이 의존성과 결합도가 높기 때문에 한쪽에 문제가 생기면 전부다 멈춰버리는 현상이 일어납니다.

class Split2은 처음부터 몇 번째 줄인지 상관없이 자기 자신 일인 쪼개기에 집중합니다.

그래서 다른곳에 쪼개기를 하면 Split2를 사용할 수 있습니다.

외부에 영향을 받지 않고 다른 메서드에 피해를 덜 주는 class Split2가 더 직교적이라고 생각합니다.

✅ 참고 링크

직교성

https://aroundck.tistory.com/5569

파이썬 class constructor

https://min-zero.tistory.com/entry/Python-%EA%B8%B0%EB%B3%B8-%EA%B3%B5%EB%B6%80%EC%A0%95%EB%A6%AC-8-2-%EC%83%9D%EC%84%B1%EC%9E%90constructor

파이썬 def

https://blockdmask.tistory.com/440

💡 책에 있는 해답

우리 생각에는 Split2 클래스가 더 직교성이 좋다. 이 클래스는 자기가 해야 할 일인 줄 쪼개기에만 집중하고, 어디서 그 줄이 오는지와 같은 세부 사항은 무시한다. 그러면 코드가 개발하기 더 쉬워질 뿐만 아니라 더 유연해진다. Split2는 파일에서 읽어온 문자열을 쪼갤 수도 있고, 다른 루틴이 만든 문자열을 쪼갤 수도 있고, 환경 변수로 넘어온 문자열을 쪼갤 수도 있다.