이 영역을 누르면 첫 페이지로 이동
codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

페이지 맨 위로 올라가기

codesche's blog

chap08-경계

  • 2023.03.28 12:31
  • Study Cafe/Clean Code 스터디

목차

  1. 경계란
  2. 경계 짓기 (1) 우리 코드를 보호하기
  3. 경계 짓기 (2) 우리 코드를 보호하기
  4. 외부 라이브러리 테스트하기

1. 경계란

image

  • 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다.
  • 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다.
  • 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다.
  • 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다.

2. 경계 짓기 (1) 우리 코드를 보호하기

○ 캡슐화(Encapsulation)

객체의 실체 구현을 외부로부터 감추는 방식

image

○ Sensor를 관리해야 한다. Sensor는 외부에서 사용된다

image

  • Sensor Id와 Sensor 객체로 저장하고 싶어서, Map을 사용한다.
  • 하지만 Map을 그대로 사용하면 Map이 가진 clear()가 외부로 노출된다.
  • Sensor의 '외부'코드 관점에서 Sensor 객체의 값들만 가져오고 싶다.
  • 캡슐화를 한다!

image

3. 경계 짓기 (2) 우리 코드를 보호하기

image

image

○ 외부 코드와 호환하기 - Adapter 패턴

외부 코드를 호출할 때, 우리가 정의한 인터페이스 대로 호출하기 위해 사용하는 패턴

image
image

○ Adapter 패턴 in Elastic Search

image

image

  • 우리가 원하는 방식인 read할 때 ByteBuffer[]로 parameter를 보내면, 외부 코드인 nettyChannel에 ByteBuf 타입으로 parameter를 변환하여 전달한다.
  • Page[] 타입 parameter로도 전달할 수 있다. Adapter에 매서드를 추가해 우리가 원하는 타입의 파라미터를 전달할 수 있다.
  • 만약 adapter를 통한 변환을 거치지 않았다면 nettyChannel에 데이터를 전달할 때마다 타입을 변환하는 과정이 필요했고, 이는 중복을 발생시켰을 것이다.

image

4. 외부 라이브러리 테스트하기

○ Learning Test를 작성해 라이브러리를 테스트한다

image

외부 코드를 배우고, 안정성도 미리 검증할 수 있다

image

'Study Cafe > Clean Code 스터디' 카테고리의 다른 글

chap10-클래스 잘 설계하기  (0) 2023.03.29
chap09-깨끗한 테스트 코드  (0) 2023.03.28
chap07-오류 처리  (0) 2023.03.24
chap06-객체와 자료구조  (0) 2023.03.24
chap05-형식 맞추기  (0) 2023.03.22

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • chap10-클래스 잘 설계하기

    chap10-클래스 잘 설계하기

    2023.03.29
  • chap09-깨끗한 테스트 코드

    chap09-깨끗한 테스트 코드

    2023.03.28
  • chap07-오류 처리

    chap07-오류 처리

    2023.03.24
  • chap06-객체와 자료구조

    chap06-객체와 자료구조

    2023.03.24
다른 글 더 둘러보기

정보

codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

  • codesche's blog의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (76)
    • Algorithm (15)
      • 백준 (3)
      • 프로그래머스 (10)
      • inflearn 알고리즘(Java) (2)
    • 블로그소개 (1)
    • Back-End (11)
      • Java (10)
      • SpringBoot (1)
    • Database (2)
      • MySQL (0)
      • MariaDB (1)
      • Redis (0)
      • 개념, 이론 (1)
    • Front-End (0)
      • html, css, javascript (0)
    • Git (2)
    • 알고리즘 지식 (11)
      • 자료구조 (11)
    • Study Cafe (21)
      • 기술면접 (6)
      • Clean Code 스터디 (14)
      • CS 스터디 (0)
      • 개발용어 (1)
    • 주간 에세이 (10)
    • DevOps (3)
      • 배포, Front&Back 연동 (1)
      • AWS (0)
      • Docker (1)
      • 이론 (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 자바 변수
  • 클린코드
  • git commit
  • 자료구조
  • 주간에세이
  • 개발자 현실
  • 자바 기초
  • java

나의 외부 링크

정보

The Code의 codesche's blog

codesche's blog

The Code

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © The Code. Designed by Fraccino.

티스토리툴바