From 076fe9f932409d06ef3ef2321938a70cde90dca0 Mon Sep 17 00:00:00 2001 From: Do Yeop Kim <113661364+Dobby-Kim@users.noreply.github.com> Date: Fri, 7 Jun 2024 17:44:48 +0900 Subject: [PATCH] =?UTF-8?q?Delete=2003=EC=9E=A5/=EB=B0=B1=EC=A7=80=20?= =?UTF-8?q?=EB=B3=B5=EC=8A=B5.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\354\247\200 \353\263\265\354\212\265.md" | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 "03\354\236\245/\353\260\261\354\247\200 \353\263\265\354\212\265.md" diff --git "a/03\354\236\245/\353\260\261\354\247\200 \353\263\265\354\212\265.md" "b/03\354\236\245/\353\260\261\354\247\200 \353\263\265\354\212\265.md" deleted file mode 100644 index 3b1cabc..0000000 --- "a/03\354\236\245/\353\260\261\354\247\200 \353\263\265\354\212\265.md" +++ /dev/null @@ -1,41 +0,0 @@ - -## item.10 equals를 재정의 하라 -## item11. hashCode도 같이 재정의하라. - -동등성 비교를 위해 equals를 재정의해야함. --> 규약 5가지가 있다. -x.equals(x) = true -x.equals(y) = true -> y.equals(x) = true -x.equals(null) = false -나머지 2개는 기억이가 안나넹ㅋ - -그리고 같은 놈들이라면, 같은 hashCode를 가지게 해야함. -근데 같은 hashCode를 하나의 값으로 고정하면 성능 저하가 발생하므로, 정해진 31* hash + Short.hash(hash)로 바꿔줘야함. - - -## item12. toString을 항상 재정의하라. -디버깅용이긴 하다. -딱히 재정의 할 일이 없긴 하다. -그래도 재정의 할 일이 생긴다면, 가지고 있는 멤버 변수의 내용을 명시적으로 표현할 수 있게 하라. -근데 표현해야될 내용이 너무 많다면, 축약해서 표현해라. 예를 들면 List안에 있는 값을 전부 표현할 수 없을테니까, 그 개수를 표현한다거나.. - -아 근데 logger에 객체 내부의 값이 직접적으로 표현이 되는만큼, 민감한 정보를 표현하는 데에 있어 조심해야한다고 한다. --> 그렇기에 진짜 디버깅용으로만 써야됨. 예를 들자면 막 회원 정보를 가지고 있는 DTO나 VO에다가 냅다 회원정보 다 보이게 toString을 재정의해버린 상태로 배포해버린다면 그냥 가버리는겨 - - -## item14. Compareable을 재정의하라. - -요건 좀 중요했는 듯. Collection 객체 안에서 정렬이 필요한 경우, 안에 요소로 들어각 객체들의 compareTo() 메서드를 @Override해야, 우리가 원하는 대로 정렬 기준을 세워줄 수 있다. - -차이점 -generic - -그리고 이 부분이 equals와 비슷하게 생각될 수도 있다. 하지만 엄연히 다르다. equals는 동등성 비교를 위해 존재하지만, compareTo는 객체의 단순 값을 비교하는 것. hashCode도 당연히 다를 수 밖에. 아예 처음부터 둘의 역할이 다르고, 사용되는 용법도 다르기 때문에 혼용에 조심하자. - - -## item 17. 변경 가능성을 최소화하라. -기억나는 키워드: 접근제어자, 중첩 클래스 - -중첩 클래스는 static class로 선언되어야함. -왜냐하면 중첩 class를 이용하여 상위 클래스의 필드를 변경할 가능성이 있기 때문. -