본문 바로가기
[책 정리] 64. 삶의 균형을 망치는 말들 - 하마터면 행복을 모르고 죽을 뻔했다 - 흑백론적 사고는 지금 눈앞에서 진행되는 사건을 일반화하고 최악의 상황을 상상하는 경우를 가리킨다. 따라서 흑백론적 사고는 모든 것을 극단화하는 경향이 있다. - '항상', '결코' 같은 단어를 자주 사용하면 흑백론적 사고에 매몰된 증거라 할 수 있다. 또 섣부른 일반화를 일삼거나, '누구나' 또는 '모두' 등과 같은 단어를 사용하는 경우도 마찬가지다. - 흑백론적 사고는 현실과 아무런 관계가 없다. 현실 세계는 '항상'이나 '결코'라는 부사가 적용되는 사례가 없기 때문이다. 머리부터 발끝까지 완벽한 상태나 철저하게 실패한 상태는 존재하지 않기 때문이다. 현실은 중간, 즉 회색이다. - 삶을 느긋하고 여유롭게 대하는 사람들은 흑백론적 사고에 쉽게 매몰되지 않는다. 그들은 모든 것이 변한다는 걸 인정하며.. 2021. 4. 24.
[Effective Java] 필요하면 방어 복사본을 만들자. [Effective Java] 필요하면 방어 복사본을 만들자. - 자바는 꽤나 안전한 언어이지만, 우리 클래스의 클라이언트가 불변 규칙을 파괴하기 위해 최선을 다할 거라는 가정하에 방어적으로 프로그램을 작성해야 한다. - 가변 객체인 매개 변수는 각각의 방어복사본(defensive copy)을 만들어서 생성자에 전달해야 한다. 그렇지 않으면 예상치 못한 여러 상황이 발생할 수 있다. - 방어복사본은 매개 변수의 유효성 검사에 앞서 만들어야 하며, 유효성 검사는 원본이 아닌 복사본을 대상으로 해야 한다!! ( TOCTOU 공격 ( 검사시간/사용시간) 이슈 ) - clone 은 위험한 복사방법이므로 가급적이면 다른 방법으로 복제하자. final 이 아닌 Class 는 sub class 가 clone 을 상속.. 2017. 1. 10.
[Effective Java] int 상수 대신 enum 을 사용하자. [Effective Java] int 상수 대신 enum 을 사용하자. - int enum pattern 이라고 불리는 int 를 이용한 분기는 단점이 많다. - 타입 안전을 보장하지도 않고, 편리하게 사용할 수 있는 방법도 제공하지 않는다. 즉 취약하다. - int enum 상수를 출력 가능한 문자열로 쉽게 바꾸는 방법도 없다. - 하나의 int enum 그룹에 있는 모든 상수를 loop 처리하거나, 그룹 사이즈를 알 수 있는 좋은 방법도 없다. - int enum 패턴의 변이로 String enum 패턴이 있는데 더더욱 바람직하지 않다. print 하는 부분에서는 좋지만, 문자열 비교에 의존하여 성능 문제가 생길 수도 있다. 더욱 문제가 되는 것은 필드명 대신 string 상수 값을 클라이언트 코드에.. 2016. 12. 19.
반응형