지우쓰 개발일기
🚩 외부 코드를 기존 코드에 깔끔하게 통합하는 기법 💻 외부 코드 사용하기 예) java.util.Map Generics를 사용하여 코드 가독성을 높일 수 있다. 하지만 인터페이스가 언제든 변할 수 있기 때문에 Generics에 의존하는 것도 위험하다. Map(인터페이스)를 사용할 클래스 안에서 관리하고 변환하면 설계 규칙과 비즈니스 규칙을 강제할 수 있다. public class Sensors { private Map sensors = new HashMap(); public Sensor getById(String id) { return (Sensor) sensors.get(id); } ... } 💻 경계 살피고 익히기 학습 테스트 외부 코드와 기존 코드를 통합하기 전, 간단한 테스트 케이스를 작성해 외..
💻 오류 코드보다 예외를 사용하라 논리 코드와 오류 코드를 분리하라 각 개념을 독립적으로 살펴보고 이해할 수 있도록 하라 💻 Try-Catch-Finally 문부터 작성하라 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 하는 코드를 작성하라 public List retrieveSection(String sectionName) { try{ FileInputStream stream = new FileInputStream(sectionName); stream.close(); } catch (FileNotFoundException e) { throw new StorageException("retrieval error", e); } return new ArrayList(); } 💻 Unche..
6장| 객체와 자료 구조 💻 자료 추상화 "변수를 private으로 선언하더라도 각 값마다 getter, setter 함수를 제공한다면 구현을 외부로 노출하는 셈이다. 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다." (p.119) 구체적인 Point 클래스 @Getter @Setter public class Point { private double x; private double y; } 추상적인 Point 클래스 public interface Point { double getX(); double getY(); void setCatesian(double x, double y); double getR(); double getTheta(); voi..
5장 | 형식 맞추기 💻 형식을 맞추는 목적 "코드 형식은 의사소통의 일환이다." (p.96) 💻 적절한 행 길이를 유지하라 신문 기사처럼 작성하라 "신문이 사실, 날짜, 이름 등을 무작위로 뒤섞은 긴 기사 하나만 싣는다면 아무도 읽지 않으리라." (p.98) 개념은 빈 행으로 분리하라 : 패키지 선언부, import 문, 각 함수 등 개념 사이의 줄바꿈은 가독성을 높인다. 세로 밀집도 & 수직 거리 : 연관성이 높은 코드 행은 세로로 가까이 배치 변수: 사용하는 위치에 최대한 가까이 선언 인스턴스 변수: 잘 알려진 위치에 모아서 선언 종속 함수: 호출하는 함수 다음 호출되는 함수 정의 개념적 유사성: 직접적 종속성 외 명명법, 기본 기능이 유사하면 가까이 배치 세로 순서 고차원 → 저차원 중요한 개념 ..
3장 | 함수 💻 작게 만들어라 "함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다." (p.42) 조건문에 들어가는 블록은 한 줄이어야 한다. 💻 한 가지만 해라 "함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다." (p.44) 저장된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행해야 한다. 의미 있는 다른 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하고 있는 것이다. 💻 함수 당 추상화 수준은 하나로 추상화 수준을 섞으면 표현이 근본 개념인지 세부사항인지 구분하기 어려워 헷갈리게 된다. 내려가기 규칙 위에서 아래로 이야기처럼 읽혀야 좋다. 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 💻 Switc..