일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Flutter TextField
- 알고리즘
- android push
- C/C++
- 안드로이드 구글맵
- Android P
- Python
- 프로그래머스
- NDK
- C++
- Django REST framework
- C
- Kotlin
- Django REST
- 안드로이드
- RxJava
- RxAndroid
- UWP
- Rxjava2
- flutter firestore
- FLUTTER
- Django REST Android
- livedata
- android architecture component
- Java
- dart
- Android
- mfc
- kodility
- 코틀린
- Today
- Total
목록2018/09/14 (6)
개발하는 두더지
[Effective Java 규칙15] 변경 가능성을 최소하하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 자바 플랫폼에는 String, 기본 자료형 클래스, BigInteger, BigDecimal과 같은 변경 불가능(immutable) 클래스가 많다. 변경 불가능 클래스는 변경 가능 클래스보다 설계하기 쉽고, 구현하기 쉽고, 사용하기 쉽다. 오류 가능성도 적으며 더 안전하다.아래 다섯가지 규칙을 따르면 변경 불가능한 클래스를 만들 수 있다.1. 객체 상태를 변경하는 메서드를 제공하지 않는다.2. 상속할 수 없도록 한다.3. 모든 필드를 final로 선언한다. 이렇게하면 자바 메모리 모델에 명시된 바와 같이 새로 생성된 객체에 대한 참조가 동기..
[Effective Java 규칙13] 클래스와 멤버의 접근 권한은 최소화하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 잘 설계된 모듈은 구현 세부사항을 전부 API 뒤쪽에 감춘다. 모듈들은 API를 통해서만 서로 통신하며, 각자 내부적으로 어떻게 동작하는지 신경 쓰지 않는다.이러한 개념은 정보 은닉/캡슐화라고 알려져 있는 소프트웨어 설계의 기본적인 원칙 가운데 중 하나이다. 캡슐화가 시스템을 구성하는 모듈 사이의 의존성을 낮춰서, 각자 개별적으로 개발하고, 테스트하고, 변경할 수 있게 한다. 그러면 각각의 모듈을 병렬적으로 개발하여 시스템 개발 속도가 올라가게 되고, 유지보수도 쉽게할 수 있다. 정보 은닉 원칙이 좋은 성능을 보장하지는 않지만..
[Effective Java 규칙12] Comparable 구현을 고려하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. Comparable 인터페이스에 포함된 유일한 메서드이고, 이를 구현한 클래스는 순서를 가지게 된다. 또한 검색하거나 최대/최소치를 계산하기도 간단하고, 그 컬렉션을 정렬된 상태로 유지하기도 쉽다. 그리고 다양한 제네릭 알고리즘 및 Comparable 인터페이스를 이용하도록 작성된 컬렉션 구현체와도 전부 연동할 수 있다.만능?? 자바 플랫폼 라이브러리에 포함된 거의 모든 값 클래스는 Comparable 인터페이스를 구현한다. 알파벳 순서나 값의 크기, 시간적 선후관계처럼 명확한 순서를 따르는 값 클래스를 구현할 때는 Compara..
[Effective Java 규칙11] clone을 재정의할 때는 신중하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 어떤 클래스가 Cloneable 인터페이스를 구현하면 Object의 protected 인 clone 메서드가 어떻게 동작할지를 정하게된다.먼저 clone 메서드의 규약은 느슨한 편인데 아래 규약을 살펴보자 객체의 필드단위까지 복사하여 반환하는데 다음의 조건이 일반적으로 충족되야 한다x.clone() != x 이 조건은 참이어야 한다x.clone().getClass() == x.getClass() 이 조건은 참이겠지만 반드시 그래야하는 것은 아니다x.clone().equals(x) 이 조건도 참이겠지만 반드시 그래야하는 것은 아니다..
[Effective Java 규칙9] equals를 재정의할 때는 반드시 hashCode도 재정의하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 많은 버그가 hashCode 메서드를 재정의하지 않아서 발생한다. 그로므로 equals 메서드를 재정의할 때 hashCode 메서드도 반드시 재정의 해야한다.Object 클래스 명세에 정의된 내용을 보면- 응용프로그램 실행 중에 같은 hashCode를 여러번 호출하면 항상 같은 값을 반환해야한다. 다만 프로그램이 종료되었다가 다시 실행될 때 같은 값이 나올 필요는 없다.- equals 메서드가 같다고 판정한 두 객체의 hashCode 값은 반드시 같아야 한다.- equals 메서드가 다르다고 판정한 두 ..
[Effective Java 규칙8] equals를 재정의할 때는 일반 규약을 따르라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. Object는 객체 생성이 가능한 클래스이지만 기본적으로 상속하여 사용하도록 설계된 클래스이다Object에 정의된 비 final 메서드 equals, hashCode, toString, clone, finalize는 재정의하도록 설계된 메서드이기때문에재정의하여 사용해야한다 위 메서드를 사용하는 클래스는 일반 규약을 따라야하는데 HashMap, HashSet처럼 해당 규약에 의존하는 클래스와 함께 사용하면 문제가 생긴다이번 챕터에서는 위 메서드들을 언제 어떻게 재정의해야하는지를 다룬다. 1. == 연산자를 사용하여 equ..