Community

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

← Go back
TIL 6. 연습문제 풀이
#pragmatic
2년 전
509

💡연습 문제 1.

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

class Split1 {

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

def readNextLine() # 다음 줄로 이동

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

}

class Split2 {

constructor(line) # 한 줄을 쪼개기

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

}

✅ 풀이 과정

직교성은 독립성, 결합도 줄이는 것을 의미한다. 하나가 바뀌어도 다른 부분에 영향을 끼치지 않으면 직교한다고 할 수 있다.

직교성을 위해서라면 하나의 코드는 가장 단순하고 간단한 일을 해야한다고 생각한다.

따라서 처음에 한번 훑어보고는 Split2가 가장 직교적이지 않을까 라는 생각을 했다.

그리고 내가 생각한 답이 맞는지 확인을 하기 위해 좀 더 상세하게 살펴봤다.

Split1에서 '읽기 위해 파일을 열기' 부분에서 파일이 어떤 정보가 어떻게 올지 모른다고 생각을 했다. Split2는 '한 줄을 쪼개기'라는 내용을 보고 가장 단순한 일인 쪼개는 일만 담당하기 때문에 Split1보다는 더 직교적이라 생각했다.

✅ 참고 링크

💡 책에 있는 해답

우리 생각에는 Split2 클래스가 더 직교성이 좋다.

이 클래스는 자기가 해야 할 일인 줄 쪼개기에만 집중하고, 어디서 그 줄이 오는지와 같은 세부 사항은 무시한다. 그러면 코드가 개발하기 더 쉬워질 뿐만 아니라 더 유연해진다.

Split2는 파일에서 읽어온 문자열을 쪼갤 수도 있고, 다른 루틴이 만든 문자열을 쪼갤 수도 있고, 환경 변수로 넘어온 문자열을 쪼갤 수도 있다.