[CLEANCODE] 경계

2021. 10. 27. 20:46·CLEANCODE
728x90

경계

  • 오픈소스, 라이브러리 같은 경우는 외부코드 해당하며, 우리가 만든 코드는 외부코드랑 병합을 해야함
  • 우리코드, 외부코드를 깔끔하게 통합시키기 위해서는 경계를 지켜야함

경계 짓는 방법

  • 우리코드를 보호하기 
  • 외부코드와 호환하기
  • 외부라이브러리 테스트 

우리 코드를 보호하기

우리코드를 보호하는 방법중에는 캡슐화를 잘 사용하는 것

  • 캡슐화 : 객체의 실제 구현을 외부로부터 감추는 방식

안좋은 예시

Map<Sensor> sensors = new HashMap<>();
Sensor s = sensors.get(sensorId);
  • Map 인터페이스가 제공하는 불필요한 기능이 노출하게 됨
  • 외부코드가 함부로 호출하면 sensor 데이터가 손상될 수 있고, 의도와 벗어남

좋은 예시

public class Sensors {
    private Map<Sensor> sensors = new HashMap<>();
    
    public Sensor getById(String sensorId) {
    	return sensors.get(sensorId);
    }
}
  • 캡슐화를 통해 Map을 감춤
  • 원하는 기능만 공개
  • 적절한 경계로 우리코드를 보호함

외부 코드와 호환하기

외부 코드를 호출할 때 우리가 원하는 방식으로 사용하기 위해 Adapter 패턴을 사용하는 것이 좋음

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

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

Learning 테스트를 작성해 외부코드인 라이브러리를 테스트 함

Learning 테스트 장점

  • 외부코드를 배우고 안정성을 미리 검증이 가능함
  • 외부코드의 버전이 변경됐을때, 우리코드와 호환되는지 확인할 수 있음
저작자표시

'CLEANCODE' 카테고리의 다른 글

[CLEANCODE] 객체와 자료구조  (0) 2021.10.24
[CLEANCODE] 형식맞추기  (0) 2021.10.24
[CLEANCODE] 주석  (0) 2021.10.23
[CLEANCODE] 함수  (0) 2021.10.23
[CLEANCODE] 의미있는 이름  (0) 2021.10.20
'CLEANCODE' 카테고리의 다른 글
  • [CLEANCODE] 객체와 자료구조
  • [CLEANCODE] 형식맞추기
  • [CLEANCODE] 주석
  • [CLEANCODE] 함수
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    엘라스틱서치
    splunk
    java
    이펙티브 코틀린
    ElasticSearch
    IntelliJ
    클린코드
    AWS
    JPA
    이펙티브코틀린
    자바
    Kafka
    go
    Spring
    Elk
    docker
    cleancode
    프로그래머스
    SQL
    코틀린
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[CLEANCODE] 경계
상단으로

티스토리툴바