일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pod install
- oberve url
- 스크롤 탭
- scrolling tab
- url 관찰
- 상단 탭바
- notifychanged
- swift
- Android
- ViewBuilder
- 기존 앱
- UIPresentationController
- development language
- GeometryReader
- transformation.map
- base64 변환
- Tuist
- List
- url 추적
- DataBinding
- Side Menu
- 개발자 면접
- detect url
- SwiftUI
- ios
- swift #swift keychain #keychain 사용법
- convert base64
- UIViewControllerTransitioningDelegate
- Swift Package Manager
- DevelopmentRegion
- Today
- Total
버그 잡이
오브젝트(조영호 지음)를 보고.. 1장 객체 #객체지향 바이블 본문
"분명 자바로 짰는데 객체지향은 어디있지?"
지난 나의 안드로이드 작품을 돌아보면서 가장 크게 느낀점이다.
나의 작품에는 끽 해봐야 메소드 분리 정도 있을뿐 객체 지향의 개념은 없었다.
그러던 중 우연히 오브젝트라는 책을 추천받았다.
객체 지향에 대해서 아주 심도있지만 쉽게 저술된 책이라고 한다.
"이 책은 객체지향 패러다임에 어느 정도 익숙하고, 프로그래밍 언어를 능숙하게 다룰 수 있으며, 실무 경험이 풍부한 독자들이 읽을 것이라고 생각하고 쓰여졌다. ...... 실무 경험이 부족한 상태하면 아무리 코드를 예로 들어 설명한다고 하더라도 추상적인 이론의 나열로밖에 보이지 않을 것이다." - 이 책의 대상 독자
후... 아직 나는 실무 경험이 없는데...
그래도 이왕 산거 조금이라도 읽어보자.
0장 . 프로그래밍 패러다임
"간단히 말해서 우리가 어떤 프로그래밍 패러다임을 사용하느냐에 따라 우리가 해결할 문제를 바라보는 방식과 프로그램을 작성하는 방법이 달라진다." 4p
"프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충돌을 방지한다. 또한 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다." 5p
그렇다. 객체지향은 하나의 프로그래밍 패러다임이고 이를 알면 선배 개발자들이, 다른 개발자들이 어떤 생각을 가지고 코드를 짰는지 보고 쉽게 이해할 수 있을 것 같다.
1장. 객체, 설계
"모든 모듈은 제대로 실행돼야 하고, 변경이 용이해야 하며, 이해하기 쉬워야 한다."- 14p
"의존성은 변경에 대한 영향을 암시한다 ...... 우리의 목표는 어플리케이션의 기능을 구현하는데 필요한 최소한의 의존성만 유지하고 불필요한 의존성을 제거하는 것이다." - 16p
"개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것을 캡슐화라고부른다. 캡슐화의 목적은 변경하기 쉬운 객체를 만드는 것이다. 캡슐화를 통해 객체 내부로의 접근을 제한하면 객체와 개체 사이의 결합도를 낮출수 있기 때문에 설계를 좀 더 쉽게 변경할 수 있게 된다." - 20p
"훌륭한 객체지향 설계의 핵심은 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것이다." -27p
우리는 코드를 깔끔하게 짜기 위해 모듈화를 한다. 그 연장선에서 등장한 것이 객체지향 개념이라고 생각한다. 하지만 이러한 객체지향 설계에서 객체간 의존성이 너무 강하면 오히려 변경이 어려운 더 복잡한 코드가 될 수 있다. 따라서 우리는 캡슐화를 통해서 적절한 의존성을 가지는 객체를 설계해야한다.
1장은 다행히도 나같은 비전공자 입문자도 읽을 수 있는 수준이었다.
설계에 대해서 경험이 없어 어떻게 적용할지에 대한 생각까지 이어지지는 않았지만 객체지향이란 무엇이고 왜 중요한 것인지 알게 되었다. 지금까지는 면접에 나온다고 하니까 그냥 한번 훑어본 개념이었는데 이렇게 흐름을 통해 이해할 수 있어서 좋았다.
"우리는 오늘 완성해야 하는 기능을 구현하는 코드를 짜야 하는 동시에
내일 쉽게 변경할 수 있는 코드를 짜야한다."
- 35p
'독서' 카테고리의 다른 글
당선, 합격, 계급 (장강명 지음) 서평 #공채 시스템 (0) | 2020.04.25 |
---|---|
CODE(찰스 펫졸드 지음) 서평 1편 #하드웨어와 스프트웨어에 숨어 있는 언어 (0) | 2020.04.21 |
생각하지 않는 사람들. #책을 읽어야하는 이유 #웹서핑 중 나는 무슨 생각을 하고 있는가? (0) | 2020.04.19 |
"조선에서 백수로 살기(고미숙 지음)" 을 읽고... (0) | 2020.04.12 |
"지속하는 힘"(고바야시 다다아키 지음) #보통 사람의 인생을 특별하게 만드는 힘 (0) | 2020.04.05 |