-
Quiz독서/실용주의 프로그래머 2022. 3. 27. 20:45
연습 문제 23
"X 언어에는 파이프라인이 없는데요."에서 우리는 다음과 같은 코드를 썼다
const content = File.read(file_name); const lines = find_matching_lines(content, pattern); const result = truncate_lines(lines);
많은 사람이 객체 지향 코드를 짤 때 메서드 호출을 연결해서 쓴다. 그래서 어쩌면 위 코드도 다음과 같이 바꾸고 싶을지도 모른다.
const result = content_of(file_name) .find_maching_lines(pattern) .truncate_lines();
두 가지의 코드의 차이는 무엇인가? 여러분이 보기에 우리는 어느 쪽을 선호할 것 같은가?
내가 생각한 풀이
선호할 코드는 첫 번째 일 것 같다. 일단 처음에 느껴지는 것으로 아래의 코드는 텍스트 자체로 결합도가 매우 높아 보이며 중간에 새로운 로직이 추가되었을 때 유연성이 매우 떨어지게 된다. 예를 들어 문장에서 특정 단어만 있는 문장만 최종적으로 받아보고 싶을 때 첫 번째 코드에는
const content = File.read(file_name); const wordFilter = find_with_word(content, word); const lines = find_matching_lines(content, pattern); const result = truncate_lines(lines);
또는
const content = File.read(file_name); const lines = find_matching_lines(content, pattern); const wordFilter = find_with_word(lines, word); const result = truncate_lines(lines);
이것 처럼 위치에 상관없이 결과를 받아 볼 수 있지만 호출 연쇄 방식은 똑같지만 content_of 뒤에 새 로직을 넣어야 할지 find_maching_lines 뒤에 넣어야 할지 생각을 하게 만든다. 데이터에 대한 포커싱이 흐려졌기 때문이다.
728x90반응형LIST'독서 > 실용주의 프로그래머' 카테고리의 다른 글
7장 코딩하는 동안 (0) 2022.04.02 6장 동시성 (0) 2022.03.30 5장 구부러지거나 부러지거나 (0) 2022.03.27 4장 실용주의 편집증 (0) 2022.03.24 3장 개발도구 (0) 2022.03.23