Community

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

← Go back
Mission 2. 연습문제 풀이
#pragmatic
2년 전
458

연습 문제 1

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

class Split1 {

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

def readNextLine() # 다음 줄로 이동

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

}

class Split2 {

constructor(line) # 한 줄을 쪼개기

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

}

✅ 풀이 과정

  • 각 클래스가 가지는 기능을 생각해본다

  • Split 1

    • 파일을 읽기위해 파일을 연다

    • 라인을 읽는다

    • 현재 줄의 n 번째 필드를 반환한다

  • Split 2

    • 라인을 읽어서 쪼갠다

    • 현재 줄의 n번째 필드를 반환한다

  • Split 2의 경우 단순히 라인을 읽어서 반환하는 일을 수행하고 split 1의 경우는 라인을 읽기 위해 사전에 파일을 읽는 추가 작업까지 수행하므로 단순히 읽는 작업만 수행하는 split 2가 더 직교적이다

💡책에 있는 해답

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