본문 바로가기
2부 코드설계 > 6장 클래스 설계 > data, sealed, abstract 한정자 / 함수타입 / 태그클래스 2부 코드설계 > 6장 클래스 설계 > 데이터 집합 표현에 data한정자를 사용하라 2부 코드설계 > 6장 클래스 설계 > 연산 또는 액션을 전달할 때는 인터페이스 대신 함수타입을 사용하라 2부 코드설계 > 6장 클래스 설계 > 태그 클래스 보다는 클래스 계층을 사용하라 오늘의 TIL 3줄 요약 data 한정자, 데이터 클래스의 장점 함수타입으로 얻는 코드의 자유 태그 클래스 vs. 클래스 계층 (sealed, abstract한정자) 1. 책에서 기억하고 싶은 내용 data 한정자, 데이터들을 한꺼번에 전달해야 할 때 사용하는 클래스에 붙어있는 것을 확인할 수 있다. 이 한정자를 붙이면 아래의 함수들이 자동으로 생성된다. - toString : 로그 출력 및 디버그 시 활용 - equals, hashCo.. 2022. 9. 2.
2부 코드설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 2부 코드 설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 오늘의 TIL 3줄 요약 명확한 is-a 관계에서는 상속 (계층구조의 표현, 뷰를 출력) 컴포지션을 통한 인터페이스 분리원칙, 리스코프 치환원칙 개선 위임패턴과 포워딩 메서드 : 캡슐화가 깨지지 않도록 관리 1. 책에서 기억하고 싶은 내용 상속에 대한 몇 가지 단점 - 상속은 하나의 클래스만을 대상으로 할 수 있다. 상속을 사용하다 보면 많은 함수를 갖는 거대한 클래스를 가지게 되고 이는 복잡한 계층구조를 만들어 낸다. - 상속은 클래스의 모든 것을 가져온다. 따라서 불필요한 함수를 가지는 클래스가 만들어질 수 있다. (인터페이스 분리 원칙 위반) - 상속은 이해하기 어렵고, 메서드의 작동방식을 이해하기 위하여 슈퍼클래스를 여러 번 .. 2022. 9. 1.
2부 코드설계 > 3장 재사용성 2부 코드설계 > 3장 재사용성 1. 책에서 기억하고 싶은 내용 knowledge를 반복하여 사용하지말라. - 모든 것은 변화하고, 우리는 이에 대비해야 합니다. 변화할 때 가장 큰 적은 knowledge가 반복되어 있는 부분입니다. - knowledge의 반복은 프로젝트의 확장성(scalable)을 막고, 쉽게 깨지게(fragile)하게 만듭니다. 다행히도 개벌자는 knowledge 반복을 줄일 수 있는 도구와 기능을 사옹할 수 있습니다. - 여러종류의 추상화를 표현할 수 있는 솔루션. (변화로부터 코드 보호하려면 추상화를 사용하라) - 단일 책임 원칙이란 '클래스를 변경하는 이유는 단 한 가지여야 한다'라는 의미이다 - 서로 다른 곳에서 사용하는 knowledge는 독립적으로 변경할 가능성이 많습나다.. 2022. 7. 27.
[TIL] 8장 프로젝트 전에 , 9장 실용주의 프로젝트 8장 프로젝트 전에 | 9장 실용주의 프로젝트 노마드 북클럽은 끝난지 좀 되었고, 나는 결국 완주해내지는 못했다. 그래도 책을 마무리를 지어야 하기 때문에 올려보는 실용주의 프로그래머 마지막 TIL. 좀 더 정리해야하는 TIL들이 남아있기는 한데 마무리도 지어야 새로운 책을 읽어나갈 수 있어서 일단 마무리를 해본다. 오늘의 TIL 3줄 요약 프로그래머의 역할은 더 나은 결과를 낼 수 있도록 노력하는 문제해결사이다. 팀을 더 가치있게 만들 수 있는 프로그래머가 되어야 한다. 내 코드와 나의 결과물에 자부심을 가져야 한다. 1. 책에서 기억하고 싶은 내용 완성이라는 것은 더 이상 더할 것이 없을 때가 아니라, 더 이상 뺄 것이 없을 때 달성되는 것이다. - 앙투안 드 생텍쥐페리 [ 자신이 뭘 원하는지 정확히.. 2022. 6. 25.
[TIL] 7장 코딩하는 동안 7장 코딩하는 동안 오늘의 TIL 3줄 요약 개발자는 우연에 맡기거나 막연하게 가정해서는 안된다. 증명해내야 한다. 개발일정이나 스스로에게 코드를 합리화 시키면 안된다. 기본원칙과 올바른 규칙을 지켜라. 1. 책에서 기억하고 싶은 내용 코딩은 기계적인 작업이 아니다. 코딩할 때는 매 순간 결정을 내려야 하는데, 프로그램이 정확하게 생산적으로 작동하면서 천수를 누리도록 하려면 사려 깊은 생각과 판단으로 결정을 내려야 한다. 오직 인간만이 무언가를 직접 보고, 정확한 예측에 필요한 모든 정보를 획득하고, 심지어 순간적으로는 정확한 예측을 한 후에도, 그런데 그것이 아니라고 말할 수 있다. 프로그래머로서 경험이 늘어 갈수록 여러분의 뇌에는 암묵적인 지식이 켜켜이 쌓인다. 잘 되는 방법, 잘 안 되는 방법, 오.. 2022. 5. 29.
[TIL] 6장 동시성 6장 동시성 오늘의 TIL 3줄 요약 공유상태는 틀린 상태다. 1. 책에서 기억하고 싶은 내용 동시성(병행성) : 동시에 실행 중인 것처럼 행동하는 것. (fiber, thread, process를 통한 구현) 병렬성 : 실제로 동시에 실행되는 것. (하드웨어적 장치의 필요) 세상은 비동기적이므로 코드 상에서는 동시성이 필요하다. 시간적 결합(temporal coupling) 소프트웨어의 설계요소로서 시간의 역할 - 동시성과 순서 사람들은 보통 직선적인 사고를 한다. 하지만 이렇게 생각하다 보면 시간적 결합을 필연적으로 만들어 낸다. 따라서 우리는 이러한 시간적 결합들을 끊어내어 현실세계와 같은 동시성을 확보해야 한다. 작업흐름을 모델 화하고 분석하여 동시성을 개선할 수 있다. 이런 과정에서 쓰이는 도구.. 2022. 5. 26.
728x90
반응형