개발자 99% 커뮤니티에서 수다 떨어요!
연습 문제 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는 파일에서 읽어온 문자열을 쪼갤 수도 있고, 다른 루틴이 만든 문자열을 쪼갤 수도 있고, 환경 변수로 넘어온 문자열을 쪼갤 수도 있다.