throwable은 사용하지 말자. 자바는 문제 상황을 알리는 타입(throwable)으로 검사 예외, 런타임 예외, 에러를 제공한다. 언제나 100% 명확한 건 아니지만 따르는 지침들이 있다. 📢 검사예외 호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용하라. 검사 예외를 던지면 호출자가 그 예외를 catch로 잡아 처리하거나 더 바깥으로 전파하도록 강제하게 된다. 즉, API 설계자는 API 사용자에게 검사 예외를 던져주어 그 상황에서 회복해내라고 요구한다. 비검사 throwable은 두 가지로, 바로 런타임 예외와 에러다. 둘 다 동작 측면에서는 다르지 않다. 이 둘은 프로그램에서 잡을 필요가 없거나 혹은 통상적으로 잡지 말아야 한다. 즉, 프로그램에서 비검사 예외나 에러를 던졌다는 ..
빠른 프로그램을 작성하려 안달하지 말자. 좋은 프로그램을 작성하다 보면 성능은 따라오게 마련이다. ✔ 빠른 프로그램보다는 좋은 프로그램을 작성해야 한다. 성능 때문에 견고한 구조를 희생하지 말자. 좋은 프로그램은 정보 은닉 원칙을 따르므로 개별 구성요소의 내부를 독립적으로 설계할 수 있다. 따라서 시스템의 나머지에 영향을 주지 않고도 각 요소를 다시 설계할 수 있다. 프로그램을 완성할 때까지 성능 문제를 아예 무시하라는 뜻은 아니다. 구현상의 문제는 나중에 최적화해 해결할 수 있지만, 아키텍처의 결함이 성능을 제한하는 상황이라면 시스템 전체를 다시 작성하지 않고는 해결하기 불가능할 수 있다. ✔ 성능을 제한하는 설계를 피하라 개발이 완료된 후에 변경하기 가장 어려운 설계 요소는 바로 컴포넌트끼리 혹은 외..
정적 팩토리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적인 장단점을 이해하고 사용하는 것이 좋다. 🔎 정적 팩토리 메서드? (static factory method) 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이지만, 그 외에도 생성자와 별도로 정적 팩토리 메서드를 제공할 수 있다. 즉, 정적 팩토리 메서드란 public 생성자와 별도로 해당 클래스의 instance를 반환하는 정적 메서드이다. 이 방식에는 장점과 단점이 모두 존재한다. 👍 정적 팩토리 메서드의 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 쉽게 알 수 없다. 메서드에 이름을 부여함으로써 반환될 객체의 특성을 쉽게 묘사할 수 있다. 한 클..
네이티브 메서드가 성능을 개선해주는 일은 많지 않다. 🔎 자바 네이티브 인터페이스 (Java Native Interface, JNI) 네이티브 메서드란 C나 C++ 같은 네이티브 프로그래밍 언어로 작성한 메서드를 말한다. JNI는 이렇게 Java 이외의 언어로 만들어진 네이티브 메서드를 Java와 상호작용할 수 있도록 연결해주는 인터페이스를 말한다. 즉, 자바 프로그램에서 네이티브 메서드(다른 언어로 작성된 메서드)를 호출하는 기술을 JNI라고 한다. ✔ 네이티브 메서드의 주요 쓰임 1. 레지스트리 같은 플랫폼 특화 기능을 사용한다. 2. 네이티브 코드로 작성된 기존 라이브러리를 사용한다. 3. 성능개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성한다. 4. 대체할 만한 자바..
- Total
- Today
- Yesterday
- bruteforce
- 정처기
- 조합
- BOJ
- OS
- 이펙티브자바
- dp
- 토큰기반인증
- 백준
- 완탐
- 아이템61
- subset
- docker
- 부분집합
- IMAGE
- 완전탐색
- 순열
- dfs
- BFS
- Java
- 아이템59
- 알고리즘
- 운영체제
- 그래프탐색
- springboot
- docker-compose
- Container
- EffectiveJava
- Retrofit2
- 아이템60
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |