불변객체와 캐싱 불변 인스턴스의 정보는 고정되어 생성~파괴까지 값이 달라지지 않는다. 불변 객체의 다섯가지 규칙 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 불변 객체를 상속받지 못하게 하려면 모든 생성자를 private 혹은 package-private으로 설정하고, public 정적 메소드를 제공할 수 있다. 모든 필드를 final 선언한다. 모든 필드를 private 선언한다. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다. 불변객체의 장점 근본적으로 스레드 안전하며 따로 동기화할 필요가 없다. 불변 객체 자체로 실패 원자성을 제공하기 때문이다. 안심하고 공유할 수 있다. 이것은 방어적 복사를 사용하지 않아도 됨을 의미한다. 가변 클래스보..
더 좋은 프로그래밍 하기 setter 지양 Setter은 왜 지양해야 할까? set이라는 것은 초기화의 의미를 담고 있다. 객체가 만들어질 때, 초기화하는 역할은 생성자이다. 생성자의 역할은 적절한 유효성 검사를 통한 초기화이다. 따라서 초기화는 생성자로 하는 것이 좋다. 초기화 이후에도 내부 값을 변경하게 될 수도 있는데 이때는 set이라는 키워드를 사용하여 메서드 이름을 설정하기보다는 적절한 이름을 지어주는 것이 좋다. 하는 역할이 같더라도 객체가 외부의 값을 받아 능동적으로 변경하는지, 외부의 호출에 의해 수동적인 값 변경이 되는지 느낌의 차이라고 생각한다. getter 지양 setter/getter를 지양하라는 것은 핵심 비즈니스 로직을 구현하는 도메인 객체에 해당한다. Domain 객체와 DTO..
책을 읽게 된 계기 우테코 필독서 리스트에 있어서 읽게 되었다. 얇지만 사실 책이 재미없어 보였다. 필독서에 읽고나서 블로그에 정리해보면 좋다고 하니 읽기 시작했다. 읽을수록 왜 필독서에 있는지 알겠다는 느낌을 받았다. 프로그래밍을 하는 전반에 깔려있는 원리와 기본 개념들이 나오게 된 배경부터 여러 언어들에서 공통된 내용과 차이를 설명해주고 있다. 나의 이해를 바탕으로 한 책 내용정리 1. 컴퓨터 언어는 사람✨이 사용하기 편하게 발전해왔다. 컴퓨터 언어는 기계(컴퓨터)에게 일을 시키는 방식이다. 기계가 이해하는 언어인 바이너리코드(0과1의 조합)로 일을 바로 시키는 것이 가장 빠르다. 하지만 이것은 사람이 일을 시키기가 힘들다.😥 따라서 어셈블리어가 나오게 되었고, 이식성의 문제 등으로 C언어가 나왔다...
정적 팩토리 메소드(static factory method)란? 보통 인스턴스를 생성하는 전형적인 수단은 public 생성자를 통한 인스턴스화이다. 하지만, 그 클래스의 인스턴스를 반환하는 정적 메소드로 인스턴스를 반환할 수 있다. 이것을 정적 팩토리 메소드라고 한다. static 메소드로 객체 생성을 캡슐화한다. 정적 팩토리 메소드는 디자인 패턴에 있는 팩소리 메소드 패턴과는 다르다. // java BigInteger의 소스코드 public class BigInteger extends Number implements Comparable { //... private static BigInteger posConst[] = new BigInteger[MAX_CONSTANT+1]; private static ..
- Total
- Today
- Yesterday
- JPA
- JS
- 네트워크
- TIL
- 학습로그
- 개발공부일지
- 인증
- OS
- Spring
- 모의면접준비
- CS
- 월간회고
- DB
- 객체지향
- java
- 우테코수업
- Transaction
- 내부코드
- 글쓰기미션
- 코드스쿼드
- 운영체제
- 알고리즘
- javascript
- 카카오
- TCP/IP
- 회고
- 마스터즈코스
- React
- python
- 우아한테크코스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |