Community

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

← Go back
Assignment 9 - Mission 2
#pragmatic
2년 전
396

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

class Split1 {

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

def readNextLine() # 다음 줄로 이동

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

}

class Split2 {

constructor(line) # 한 줄을 쪼개기

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

}

✅ 풀이 과정

- 직교성 orthogonality 이란?

  • 독립성 추구

  • 결합도 줄이기

  • 관련없는 것들은 서로 영향이 없게 하기,

  • 자족적, 단일적 컴포넌트 간에 상호의존도를 줄이기

  • 특정 기능의 요구 사항을 대폭 변경했을 시, 영향을 받는 모듈은 하나여야 한다.

  • 하나의 기능이 바뀌어도 다른 하나에 어떤 영향도 주지 않는 것


  • Split1 은 쪼개는 것만이 아니라 파일을 열고 다음 줄로 이동하는 작업을 거치고 있다. 하지만 Split2는 줄을 쪼개고 각 줄을 필드로 반환하는 필요한 과정만 거치고 있다.

  • 따라서 Split2가 더 직교적이고 관련없는 것들을 제거하고 클래스명이 담고 있는 작업만 행하는 것을 찾아볼 수 있었다

  • 문제에서 보듯이 파일에서 데이터를 읽는 클래스를 만드는 것인데, 파일을 어디서 가져오든지 Split2는 줄 쪼개는 역할만 하고 있으므로 다른 파일에서도 사용될 수 있다.

  • 그리고 자기자신의 역할만 수행함으로, 다른 기능과 겹치지 않는다. 따라서 독립적인 클래스로 사용이 가능하다.

✅ 참고 링크

💡 책에 있는 해답

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