본문 바로가기

개발관련 서적 정리42

03. 타입과 추상화 타입과 추상화 추상화를 통한 복잡성 극복 추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것이다. 이 책에서는 추상화를 다음과 같이 정의한다. 추상화 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 복잡성을 다루기 위해 추상화는 두 차원에서 이뤄진다. 첫 번째 차원은 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것이다. 두 번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것이다. 모든 경우에 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순호하는 것이라는 점을 기억하라. 타입 1. 타입은 개념이다.. 2020. 10. 7.
02. 이상한 나라의 객체 이상한 나라의 객체 객체지향과 인지 능력 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것이다. 객체, 그리고 소프트웨어 나라 객체의 다양한 특성을 효과적으로 설명하기 위해서는 객체를 상태(state), 행동(behavior), 식별자(identity)를 지닌 실체로 보는 것이 가장 효과적이다 상태 왜 상태가 필요한가? 상태를 이용하면 과거의 모든 행동 이력을 설명하지 않고도 행동의 결과를 쉽게 예측하고 설명할 수 있다. 상태를 이용하면 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있다. 상태는 근본적으로 세상의 복잡성을 완화하고 인지 과부하를 줄일 수 있는 중요한 개념이다. 상태와 프로퍼티 모든 객체의 상태는 단순한 값과.. 2020. 10. 7.
01. 협력하는 객체들의 공동체 협력하는 객체들의 공동체 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 객체지향에서 가장 중요한 개념은 역할, 책임, 협력 이다. 협력: 협력의 성공은 특정한 역할을 맡은 각 개인이 얼마나 요청을 성실히 이행하는가에 달려 있다. 역할과 책임: 역할이라는 단어는 의미적으로 책임이라는 개념을 내포한다. 따라서 특정한 역할은 특정한 책임을 암시한다. 역할, 책임, 협력 객체지향 설계라는 예술은 적절한 객체에서 적절한 책임을 할당하는 것에서 시작된다. 역할은 유연하고 재사용 가능한 협력 관계를 구축하는데 중요한 설계 요소다. .. 2020. 7. 2.
03. 함수 1. 최대한 작게 만들어라 if 문 / else 문/ while 문 에 중첩구조가 생길만큼 함수가 커져서는 안된다. 가급적이면 2단을 넘어서면 안된다. 2. 한 가지만 해라 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다. 3. 함수 당 추상화 수준은 하나로! 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 4. 서술적인 이름을 사용하라! 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 된다. 이름이 길어도 괜찮다. 길고 서술적인 이름이 길고 서술적인 주석보다 좋다. 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 .. 2020. 1. 15.