Community

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

← Go back
Mission: 연습문제 풀이
#pragmatic
2년 전
624

연습문제 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();

두 가지 코드의 차이는 무엇인가?

여러분이 보기에 우리는 어느 족을 선호할 것 같은가?

풀이과정

  • 변수 추가 선언 여부

    1. 메소드 호출 되는만큼 변수 선언이 필요하다.

    2. 최종 변수 선언 한번만 해도 된다.

      content_of(file_name) 의 output


      -> find_matching_lines(pattern) 에 파라미터로 넘기고 output
      -> truncate_lines() 에 파라미터로 넘기고 output 을 result 에 저장.

  • 메소드 추가 사용 여부

    1. 계산 단계별로 변수를 선언 했으므로 필요 시 중간 단계의 변수를 사용할 수 있다.
      content 또는 lines 값을 사용할 수 있다.
      또한 요구사항 변경이 있을 경우 메소드 추가, 단계 수정 등의 과정으로 편하게 수정 가능하다.

    2. 중간 단계의 결과값 필요 시 해당 메소드를 작성해야 한다.


      lines 값 필요 시 copntent_of(file_name).find_matching_lines(pattern) 재작성 필요.

  • 오류 검출 여부

    1. 오류가 발생한 메소드/변수 바로 확인 가능하다.

    2. 연결해서 사용한 라인 전체에서 오류 발생한 것으로 검출되어,


      때에 따라서는 에러 재현/검출에 불편할 수 있다.

생각

현재 Spring Secutiry 사용할 일이 있어서 공부중인데,

여러 메소드를 연결해서 사용하는 코드가 많다보니 정신이 없고 어떻게 사용해야 하는지

애매하고 아리송할때가 많습니다.

어떻게 하면 나중에 보기 편하고 어려움이 없을지 고민 좀 많이 해봐야 될것 같습니다...

변환/오류처리 전부 경험이 무척이나 중요한것 같습니다..ㅠ