일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 도메인 주도 개발 시작하기
- 개발서적
- Thymeleaf
- 조영호
- 함수형프로그래밍
- template
- 추상화 설계
- 헥사고날아키텍처
- 코틀린
- 개발방법론
- 테스트주도개발
- 계층형아키텍처
- Spring
- web
- 유지보수
- 스터디
- TDD
- DDD
- 아키텍처
- 객체지향의사실과오해
- Kotlin
- 이펙티브코틀린
- 책스터디
- Boot Legacy 차이점
- 클린아키텍처
- Java
- 만들면서배우는클린아키텍처
- 테스트
- FP
- GrokkingFunctionalProgramming
- Today
- Total
목록책스터디 (6)
김동형수 개발기
4장 추상화 설계추상화는 프로그래밍 세계에서 가장 중요한 개념 중 하나 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 추상화를 하려면 객체에서 무엇을 감추고 무엇을 노출해야 하는지 결정해야 한다. 프로그래밍에서 추상화 추상화를 설계한다는 것은 단순하게 모듈 또는 라이브러리로 분리한다는 의미가 아니다. 함수를 정의할 때는 그 구현을 함수 시그니처 뒤에 숨기게 되는데, 이것이 바로 추상화다. 강력한 프로그래밍 언어들이 당연히 갖고 있는 기능 중 하나는 공통 패턴에 이름을 붙여서 추상화를 만드는 기능이다. 예를 들어 함수, 델리게이트, 클래스 등이 대표적인 예다. 추상화와 자동차 운전자는 자동차를 조종하는 인터페이스(핸들과 패달 등)를 사..
3장 재사용성 누군가가 이러한 것을 한 번 만들어 놓으면, 필요한 때 이를 활용할 수 있는 것이다. 이것이 바로 프로그래밍 언어의 핵심 특징이라고 할 수 있는 재사용성이다. 장기적으로 코드를 개선하는 데 도움이 되는 여러 가지 방법을 설명 아이템 19: knowledge를 반복하여 사용하지 말라 프로젝트에서 이미 있던 코드를 복사해서 붙여놓고 있다면, 무언가가 잘못된 것이다. knowledge를 크게 두 가지 뽑는다면, 1. 로직 2. 공통 알고리즘 비즈니스 로직은 시간이 지나면서 계혹해서 변하지만, 공통 알고리즘은 한 번 정의된 이후에는 크게 변하지 않는다. 프로그래밍에서 유일하게 유지되는 것은 '변화한다는 속성' 기술뿐만 아니라 언어도 빠른 속도로 변화한다. 변화는 우리가 예상하지 못한 곳에서 일어난..
2장 가독성코틀린은 간결성을 목표로 설계된 프로그래밍 언어가 아니라, 가독성을 좋게 하는 데 목표를 두고 설계된 프로그래밍 언어아이템 11: 가독성을 목표로 설계하라프로그래밍은 쓰기보다 읽기가 중요하다는 의미, 따라서 항상 가독성을 생각하면서 코드를 작성해야 한다. 가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미한다. 사용 빈도가 적은 관용구는 코드를 복잡하게 만든다. 관용구들을 한 문장 내부에 조합해서 사용한다면 복잡성은 훨씬 더 빠르게 증가한다. 익숙하지 않은 구조를 사용하면, 잘못된 동작을 코드로 보면서 확인하기 어렵다. '인지 부하'를 줄이는 방향으로 코드를 작성 가변 프로퍼티는 쓰레드와 관련된 문제를 발생시킬 수 있으므로, 스마트 캐스팅이 불가능하다. 일반적으로 안전 호출 let을..
1장 안정성코틀린을 선택하는 이유는 안정성이다. 코틀린은 다양한 설계를 통해 잠재적인 오류를 줄여 준다. 크래시가 적으면 사용자와 개발자 모두에게 좋고, 상당한 비즈니스 가치를 제공한다. 이번 장의 기본 목적은 오류가 덜 발생하는 코드를 만드는 것이다.아이템1: 가변성을 제한하라읽고 쓸 수 있는 프로퍼티는 var 또는 mutable 객체를 사용하면 상태를 가질 수 있다. 가변성을 가지는 상태를 사용할 때 단점프로그램을 이해하고 디버그하기 힘들어진다.가변성이 있으면, 코드의 실행을 추론하기 어려워진다.멀티스레드 프로그래밍일 때는 적절한 동기화가 필요하다.테스트하기 어렵다.상태 변경이 일어날 때, 이러한 변경을 다른 부분에 알려야 하는 경우가 있다.가변성은 생각보다 단점이 많아서 이를 완전하게 제한하는 프로..
2장 이상한 나라의 객체이상한나라의 엘리스를 예를들어 객체에 대해 설명한다. 객체지향과 인지능력많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다. 객체지향 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현실 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다. 객체, 그리고 이상한 나라이상한 나라의 앨리스.앨리스 객체앨리스의 상태를 결정하는 것은 행동이지만 행동의 결과를 결정하는 것은 상태다. 행동의 결과는 상태에 의존적이다. 상태에 따라 행동의 결과가 달라지는 또 다른 ..
1장 협력하는 객체들의 공동체 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 실세계의 사물을 기반으로 소프트웨어 객체를 식별하고 구현까지 이어간다는 개념은 객체지향 설계의 핵심 사상인 연결완전성을 설명하는데 적합한 틀을 제공한다. 협력하는 사람들 커피 공화국의 아침 예시로 든 커피 주문과정에서 손님, 캐시어, 바리스타 사이의 암묵적인 협력 관계가 존재한다. 커피 주문이라는 협력에 참여하는 모든 사람들은 커피가 정확하게 주문되고 주문된 커피가 손님에게 정확하게 전달될 수 있도록 맡은바 역할과 책임을 다하고 있는 것이다. 소프트웨어 개발 프로젝트가 진행되는 곳에서도 사람이 사는 곳이라면 어디서나 역할,책임,협력이 존재한다. 객체지향의 가장 중요한 개념 세 가지 - ..