본문 바로가기

목록83

[이펙티브자바] 4. 클래스와 인터페이스 1. 클래스와 멤버의 접근 권한을 최소화하라. 1.1. public클래스의 가변필드는 public이 아니어야 한다. 1.2. static final Array 같은 경우 값의 변경이 가능하기 때문에 private으로 만들어라. 더보기 public static final Integer[] VALUES = {1, 2, 3}; //수정 가능 EffectiveJava.VALUES[0] = 1; private static final Integer[] VALUES = {1, 2, 3}; //해결방법 1.불변 리스트로 만들기 public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)); //해결방법 2.복사본을.. 2022. 6. 4.
[이펙티브자바] 3. 모든 객체의 공통 메소드 1. equals는 일반 규약을 지켜 재정의하라. 1. 모든 클래스는 Object를 상속받는데 equals, hashCode, toString, clone, finalize 를 재정의 할 수 있다. 2. equals는 물리적 동치성(메모리 주소가 같은지)이 아니라 논리적 동치성(갖고 있는 값이 같은지 등)을 비교할 때 이다. 3. equals 메소드의 규약을 따라야 한다. 3.1. 반사성 : x.euqals(x) 는 항상 true - 자기자신은 항상 같다라는 뜻 3.2. 대칭성 : x.euqals(y) 가 true이면 y.euqals(x) 도 true이다. 3.3. 추이성 : x.euqals(y) 가 true이고 y.euqals(z) 도 true이면 x.euqals(z)도 true이다. 3.4. 일관성 .. 2022. 5. 16.
[이펙티브자바] 2. 객체 생성과 파괴 1. 생성자 대신 정적 팩터리 메서드를 고려하라 정적 팩토리메서드의 장점 5가지 1.1 생성자에 대한이름을 가질 수 있다. 1.2 호출마다 인스턴스를 새로 생성하지 않아도 된다. 1.3 하위타입의 객체를 반환할 수 있다. 1.4 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 1.5 정적팩터리 메서드를 작성하는 시점에 반환할 클래스의 객체가 존재하지 않아도 된다. 1.5.1 이런 유연함은 서비스 제공자 프레임워크(service provider framework) 의 근간이 된다. 정적 팩토리메서드의 단점 1. 정적팩토리 메소드만 제공하면 하위클래스를 생성할 수 없다. 2. 정적팩토리 메소드는 API문서에 설명이 잘 드러나있지 않는다. 코드 더보기 class EffectiveJava { .. 2022. 4. 30.
[안드로이드 NextStep] 2.5 UI변경 메커니즘 invalidate란? ViewGroup에게 자신의 영역을 다시 그려야 한다는 의미를 갖는 함수 1. invalidate 메서드의 호출스택 ViewGroup의 invalidateChild를 호출 invalidateChild에서는 invalidateChildInParent를 호출 invalidateChildInParent는 parent가 null일 때까지 while문으로 실행된다. 현재 루트가 아닐때 ViewGroup의 invalidateChildInParent 호출 현재 루트일때 ViewRootImpl의 invalidateChildInParent 호출 ViewRootImpl의 invalidateChildInParent에서 traversal 함수 호출 traversal 함수는 invalidate 영역을 다.. 2022. 1. 31.
안드로이드 gradle 명령어 정리 1. 현재프로젝트의 dependency 보는 법 ./gradlew -q dependencies app:dependencies --configuration implementation 2022. 1. 26.
클린코드 정리 1. 변수, 함수, 클래스 명을 잘 짓자 1.1) 이름의 의도를 분명히 하기 1.2) 잘못된 정보를 적지않기 1.3) 이름에 대한 구분을 잘하기(a1, a2와 같은 변수사용x) 1.4) 발음하기 쉬운 이름 사용하기 1.5) 검색하기 쉬운 이름 사용하기 핵심 : 한 개념에 한 단어를 선택하자 2. 함수를 잘 사용하자 2.1) 함수는 작게 만들자(하나의 함수는 하나의 작업 수행) 2.2) 함수를 위에서 아래로 읽어내려갈때 이야기처럼 자연스러워야한다. 2.3) 함수의 인수를 최대한 줄이거나 없애자. 2.4) 함수의 인수에 출력 객체를 넣지 말자. 2.5) 코드의 중복을 없애자 3. 객체와 자료구조 3.1) 객체(추상화하여 사용하는 클래스)는 함수를 오픈하고 내부구조는 숨긴다. 3.2) 자료구조(구체적인 데이터.. 2021. 12. 7.