TIL 12

[TIL] 2023-12-26

오늘 공부한 내용 오브젝트 3장 - 역할, 책임, 협력 배운 점 & 느낀 점 객체지향 패러다임의 관점에서 핵심은 역할, 책임, 협력이고 이것이 없다면 응집도가 높은 클래스와 중복 없는 상속 계층을 구현해도 애플리케이션이 침몰하는 것을 구원하지 못할 거라는 점을 알게 되었다. 첫 번째로 협력은 어떤 객체가 다른 객체에게 무엇인가를 요청한다. 즉, 두 객체가 상호작용을 통해 더 큰 책임을 수행하는 것이다. 캡슐화로 자율적인 객체일 때 큰 힘을 발휘한다. 두 번째로 책임은 객체에 의해 정의되는 응집도 있는 행위의 집합으로, 객체가 유지해야 하는 정보와 수행할 수 있는 행동에 대해 대략적으로 서술한 문장이다. 즉, 하는 것과 아는 것으로 나눠서 세분화한다. 협력 메시지를 선택하고 관련된 정보를 가장 많이 알고 ..

TIL 2023.12.26

[TIL] 2023-12-25

오늘 공부한 내용 내 코드가 그렇게 이상한가요? 04장 - 불변 활용하기 배운 점 & 느낀 점 변수에 값을 다시 할당하는 것을 재할당, 파괴적 할당이라고 한다. 나는 평소에 습관적으로 불변 객체를 사용했지만 정확한 사용 의도에 대해서는 고민해본 적이 없었다. 가변 인스턴스를 재사용하는 것은 예상하지 못한 동작을 일으킨다. 한쪽의 변경이 다른 쪽에 영향을 주는 것이다. 함수의 부수 효과는 매개변수를 전달 받고, 값을 리턴하는 것 이외에 외부 상태를 변경하는 것을 가리킨다. 해결하는 방법은 데이터는 매개변수로, 받고 상태를 변경하지 않고, 값은 함수의 리턴으로 돌려주는 것이다. 또한 나는 만약 불변 객체의 값을 변경하고 싶다면 어떻게 해야할까? 라는 궁금증이 있었다. 변경된 값을 사용하고 싶다면 새로운 인스..

TIL 2023.12.25

[TIL] 2023-12-24

오늘 공부한 내용 내 코드가 그렇게 이상한가요? 03장 - 클래스 설계 배운 점 & 느낀 점 잘 만들어진 클래스는 인스턴수 변수와 해당 변수에 잘못된 값이 할당되지 않게 막고, 정상적으로 작동하는 메서드로 구성된다. 그리고 클래스는 다른 클래스를 사용해서 초기화와 유효성 검사를 해야하는 클래스라면 미성숙한 클래스다. 클래스 스스로 자기 방어 임무를 수행할 수 있어야 소프트웨어 품질을 높이는 데 도움이 된다는 것을 배웠다. 그리고 final 인스턴스 값을 수정하고 싶다면 해당 메서드가 새로운 인스턴스를 반환하도록 만들면 된다. 또한 메서드 내에서 매개변수를 변경한다면 값의 변화를 추적하기 힘들기 때문에 매겨변수에 final을 붙여서 사용하는 코드도 유용하다고 느꼈다. 마지막으로 엉뚱한 값을 넘기지 않는 것..

TIL 2023.12.24

[TIL] 2023-12-23

오늘 공부한 내용 내 코드가 그렇게 이상한가요? 02장 - 설계 첫걸음 배운 점 & 느낀 점 이름을 짧게 줄이면, 입력해야 하는 글자 수가 줄어든다. 따라서 조금이라도 빠르게 구현할 수 있다. 하지만 다른 사람이 읽거나 시간이 지난 후 다시 볼 때는 읽고 이해하기 어렵다. 입력할 때 아낀 시간보다 몇 배이상이 필요할지도 모른다. → 변수명이나 메서드명은 의도를 알 수 있는 이름을 사용하자. 두 번째는 목적별로 변수를 따로 만드는 것이다. 같은 변수에 재할당을 하게 되면 용도가 바뀌는 문제가 쉽게 일어난다. 읽을 때 혼란스럽고, 버그를 만들어 낼 가능성이 있다. 세 번째는 단순 코드를 나열하지 말고, 의미있는 로직을 모아서 함수로 구현해야 한다. 마지막으로 관련된 데이터와 로직을 클래스로 구현해야 한다. ..

TIL 2023.12.23

[TIL] 2023-12-22

오늘 공부한 내용 내 코드가 그렇게 이상한가요? 01장 - 잘못된 구조의 문제 깨닫기 배운 점 & 느낀 점 객체지향 설계 능력을 탄탄하게 잡기 위해 이 책을 읽기 시작했다. 1장은 잘못된 구조의 문제를 설명한다. 첫 번째로 의미를 알 수 없는 이름의 변수나 메서드는 어떤 역할인지 파악하기 힘들다. 특히 기술 중심 명명이나 일련번호 명명에서 이런 문제가 발생한다. 두 번째는 조건 분기 중첩으로 인해 이해가 어려워진다. 또한 데이터만 존재하는 데이터 클래스는 코드 중복, 수정 누락, 가독성 저하, 초기화 되지 않은 쓰레기 객체, 잘못된 값 할당 등 수많은 악마를 들이고 개발 생산성을 떨어뜨릴 수 있다는 걸 배웠다.

TIL 2023.12.22