본문 바로가기
반응형

독서11

'Head First Design Patterns'를 읽고 디자인 패턴이란? 개발 세계에는 많은 문제들이 존재 누군가는 이미 이러한 문제들을 해결해 놓았음 코드를 재사용하는 것과 마찬가지로 경험을 재사용하는 것 스트래티지 패턴 (Strategy pattern) 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. "인터페이스에 맞춰서 프로그래밍한다." 즉, "상위 형식에 맞춰서 프로그래밍한다." 다형성을 활용 변수를 선언하는 클래스에서 실제 객체의 형식을 몰라도 됨 Fly에서도 전송 서비스들을 추상화하고 이메일, 알림톡, 문자 메시지 서비스가 이를 상속받아 구체화함으로써 유연한 서비스 선택 구현 상속보다는 구성을 활용한다. 상속의 단점 캡슐화 위반 상위 클래스에 따라 하위 클래스의 동작에 이상이 생길 수 있음 상위 클래스의 내부 구현이 달라지면 하위 클래스를 고쳐야 .. 2021. 11. 30.
'객체지향의 사실과 오해'를 읽고 1년 전... 선배: 객체지향이 뭔지 설명해줄 수 있어? Gray: 클래스로 만들어서 객체를 만들고 ... 객체지향이 무엇인지 모르고 개발을 하고 있었음 객체지향은 무엇일까? 1. 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것 많은 책을 보면 객체지향은 실세계를 모방하는 것이라고 말한다. 객체는 현실 객체의 부분적인 특징을 모방하는 것이 아니라 현실 객체가 가지지 못한 추가적인 능력을 보유할 수 있다. 현실에서 트럼프 카드는 스스로 뒤집기, 말하기, 걷기를 할 수 없지만, 객체지향 세계에서는 이 모든 것이 가능하다. 2. 역할과 책임 여러 사람이 동일한 역할을 수행할 수 있다. 각자의 맡은 역할만 수행하면 누가 무엇을 실행했는지는 상관없다. 자동차는 자동차의 역할만 하면 되지 어떤 자동차인지는 .. 2021. 11. 29.
'클린 코드'를 읽고 읽기 전 클린 코드에 대한 생각 내 코드는 과연 어떤가? 좋은 코드란 무엇인가? 이 책을 보면 좋은 코드를 짤 수 있을까? 지키고 싶은 규칙&개념 1. 함수는 한 가지를 해야 한다 안녕하세요 박준형입니다. 한 가지의 기준은 어디까지일까? 많이 사용하는 if-else문, switch문을 사용할 때, 함수는 한 가지 일을 하지 않는다. SRP 위반 OCP 위반 enum type 또는 다형성을 사용해 구현 가능 기존 코드 함수가 값을 변환해주는 일뿐만 아니라 어느 타입인지 확인 한 가지 이상의 일 변경된 코드 EnumType을 사용하여 메소드가 변환하는 일만 할 수 있도록 변경 2. 서술적인 이름을 사용하라 변수명, 메소드명, 클래스명을 정하는 것에 있어서 많은 고민을 하게 된다. 나름대로 생각하고 정하게 됐.. 2021. 11. 27.
'함께 자라기'를 읽고 '함께 자라기' 책을 읽으면서 생각한 몇 가지를 공유해보려고 합니다. 이 책은 어떻게 우리가 함께 성장할 수 있고 올바른 방향으로 나아갈 수 있는지를 잘 알려주는 책입니다. 지금은 개발자 0년차. 즉, 학생으로서 책을 읽었지만 시간이 흘러도 이 책은 매년 의미가 있고 그 의미가 새롭게 다가올 것 같습니다. 0년차, 3년차, ... 그리고 그 이상의 년차까지도 책은 저에게 새로운 성장 방식을 제시할 것이고 저는 그것을 잊지 않고 개발할 수 있는 개발자가 되어야 할 것입니다. 1. 자라기 저는 개발을 하면서 저의 성장 가능성에 대해 의문을 가진 적이 많습니다. '왜 나는 주변 친구들과 다르게 성장하는 속도가 느릴까?' 라는 생각을 하며 다른 사람과 비교한 적이 많습니다. 이 책에.. 2021. 8. 30.
객체지향의 사실과 오해 (Chapter 7 - 함께 모으기) 마지막 장에서는 카페를 빗대어 객체지향을 설명해주고 있다. 이 책에서 처음으로 코드를 짜는게 나온다. 1장부터 6장까지의 봤던 객체지향의 내용을 마지막 장에서 직접 개발하면서 정리하는 느낌인데, 정말 많은 도움이 됐다. 카페 구성 손님, 메뉴판, 메뉴 구성, 바리스타, 커피로 구성되어 있다. 요구사항은 다음과 같다. 손님에게 메뉴 이름과 함께 커피를 주문하라는 메시지가 전달된다. 손님은 메뉴판에서 메뉴 항목을 찾는다. 찾은 메뉴 항목을 바리스타에게 커피를 제조하라는 메시지와 함께 전달한다. 바리스타는 커피를 생성한다. 다음 4가지의 요구사항을 구현 해보자. 우선 손님을 구현해보자. public class Customer { public Coffee order(String menuName, Menu men.. 2021. 4. 14.
객체지향의 사실과 오해 (Chapter 6 - 객체 지도) 소프트웨어를 설계할 때는 두 가지 측면을 생각해야 한다. 바로 기능과 구조이다. 기능 측면의 설계는 제품이 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춘다. 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점을 맞춘다. 우리는 객체지향을 설계할 때 객체의 구조에 집중하고 기능이 객체의 구조를 따르게 만들어야한다. 이것이 객체를 기반으로 책임과 역할을 식별하고 메시지를 기반으로 객체들의 협력 관계를 구축하는 이유이다. 안정적인 재료 : 구조 책에서는 도메인 모델을 설명한다. 우선 도메인이란 사용자가 프로그램을 사용하는 대상 분야를 말한다. 도메인 모델은 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단수화하고 의식적으로 구조화한 형태다. 예를 들어, 은행 ㅇ버무에 종사하는 사람은.. 2021. 4. 13.
반응형