개발자 99% 커뮤니티에서 수다 떨어요!
연습문제 23 (p.223)
"X 언어에는 파이프라인이 없는데요"에서 우리는 다음과 같은 코드를 썼다.
(예시 1번)
const content = File.read(file_name);
const lines = find_matching_lines(content, pattern);
const result = truncate_lines(lines);
많은 사람이 객체 지향 코드를 짤 때 메서드 호출을 연결해서 쓴다.
그래서 어쩌면 위 코드도 다음과 같이 바꾸고 싶을지도 모른다.
(예시 2번)
const result = content_of(file_name)
.find_matching_lines(pattern)
.truncate_lines();
두 가지 코드의 차이는 무엇인가?
여러분이 보기에 우리는 어느 족을 선호할 것 같은가?
풀이과정
변수 추가 선언 여부
메소드 호출 되는만큼 변수 선언이 필요하다.
최종 변수 선언 한번만 해도 된다.
content_of(file_name) 의 output
-> find_matching_lines(pattern) 에 파라미터로 넘기고 output
-> truncate_lines() 에 파라미터로 넘기고 output 을 result 에 저장.
메소드 추가 사용 여부
계산 단계별로 변수를 선언 했으므로 필요 시 중간 단계의 변수를 사용할 수 있다.
content 또는 lines 값을 사용할 수 있다.
또한 요구사항 변경이 있을 경우 메소드 추가, 단계 수정 등의 과정으로 편하게 수정 가능하다.
중간 단계의 결과값 필요 시 해당 메소드를 작성해야 한다.
lines 값 필요 시 copntent_of(file_name).find_matching_lines(pattern) 재작성 필요.
오류 검출 여부
오류가 발생한 메소드/변수 바로 확인 가능하다.
연결해서 사용한 라인 전체에서 오류 발생한 것으로 검출되어,
때에 따라서는 에러 재현/검출에 불편할 수 있다.
생각
현재 Spring Secutiry 사용할 일이 있어서 공부중인데,
여러 메소드를 연결해서 사용하는 코드가 많다보니 정신이 없고 어떻게 사용해야 하는지
애매하고 아리송할때가 많습니다.
어떻게 하면 나중에 보기 편하고 어려움이 없을지 고민 좀 많이 해봐야 될것 같습니다...
변환/오류처리 전부 경험이 무척이나 중요한것 같습니다..ㅠ