본문 바로가기

디자인 패턴의 아름다움 스터디11

[Study 017] 디자인 패턴의 아름다움 스터디 주제   디자인 패턴의 아름다움(완정 저)매주 정해진 챕터 각자 읽고와서, 게더타운에서 온라인으로 서로 토론 및 이해안되는 부분 질문. 혹은 뭐 추가로 설명할꺼 있으면 자료 준비해와도 됨 (추가 설명 예시 : https://nahwasa.com/entry/TDD-Mock-SOLID-얘기-도시-가스-요금-계산)  참가자https://github.com/nahwasahttps://github.com/mluluckyhttps://github.com/gwonsiyunhttps://github.com/daraekitahttps://github.com/covertOta 일정 (완료)1주차 2024-02-17 : 1.1 코드 설계를 배우는 이유 / 1.2 코드 품질 평가 방법 (전체적인 내용을 다루는 1장이다.. 2024. 6. 21.
[디자인 패턴의 아름다움] 6. 생성 디자인 패턴 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  CHAPTER 06. 생성 디자인 패턴생성 디자인 패턴은 주로 객체 생성 문제를 해결하고 복잡한 생성 프로세스를 캡슐화하며 객체의 생성 코드와 사용 코드를 분리한다.싱글턴 패턴 : 전역적으로 유일한 객체를 생성하는 데 사용팩터리 패턴 : 같은 상위 클래스나 인터페이스를 상속하는 하위 클래스와 같이 비록 유형은 다르지만 서로 관련되어 있는 객체를 주어진 객체 타입에 맞게 생성하는 데 사용빌더 패턴 : 복잡한 객체를 생성하는 데.. 2024. 5. 17.
[디자인 패턴의 아름다움] 5. 리팩터링 기법 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.   CHAPTER 05. 리팩터링 기법리팩터링할 때는 코드의 나쁜 냄새와 설계 결함에 대한 통찰력을 기반으로 설계 원칙, 디자인 패턴, 코딩 규칙 등을 합리적이고 능숙하게 사용해야 하기 때문에 단순히 문제를 해결하는 것보다 코드를 리팩터링할 때 더 많은 능력이 요구된다. 5.1 리팩터링의 네 가지 요소: 목적, 대상, 시기, 방법목적리팩터링 : 코드에 대한 이해를 쉽게 하기 위해 소프트웨어의 내부 구조를 개선하는 것으로, 소프.. 2024. 5. 17.
[디자인 패턴의 아름다움] 4. 코딩 규칙 - 내용 정리 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  CHAPTER 04. 코딩 규칙4.1 명명과 주석명명함수의 임시 변수와 같이 사용 범위가 비교적 작은 변수의 경우, a, b, c와 같은 짧은 이름을 사용할 수 있다. 하지만 전역 변수와 같이 범위가 큰 변수의 경우 긴 이름을 사용하는 것이 좋다.한눈에 설계 의도를 파악할 수 있기 때문이다.이하의 코드에서 굳이 위의 User 클래스처럼 user 접두사를 사용할 필요는 없다. 아래의 User .. 2024. 4. 24.
[디자인 패턴의 아름다움] 3. 설계 원칙 - 3.6~3.8 정리 (KISS, YAGNI, DRY, LoD) 스터디 메인 페이지목차- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.- 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다.  3.6 KISS 원칙과 YAGNI 원칙KISSKeep It Simple, Stupid코드를 단순하게 유지해라.적은 줄 수의 코드가 더 간단한건 아니다.e.g. 유효한 IP 주소인지 확인하는 함수1. 정규식으로 짜는 경우2. StringUtils 클래스와 Integer 클래스에서 제공하는 유틸리티 함수를 사용하여 처리하는 경우3. 직접 전부 구현하는 경우당연히 가장 짧은건 '1'이지만, 정.. 2024. 4. 24.
[디자인 패턴의 아름다움] 3. 설계 원칙 - 3.1~3.5 정리 (SOLID) 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. CHAPTER 03. 설계 원칙 설계 원칙에 대한 이해가 충분하지 않으면, 불필요하게 독단적이고 엄격한 사용으로 이어져 결국 역효과를 낳을 것이다. ☆ 이전에 TDD 스터디 때 TDD와 SOLID 관점에서 생각하며 리팩토링 해보는 라이브 코딩을 스터디에 진행해본 적 있다. 해당 내용은 'TDD, Mock, SOLID 얘기 - 도시 가스 요금 계산' 에 있다. 3.1 단일 책임 원칙 (SRP) single responsib.. 2024. 4. 13.
[디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.8~2.9 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. 2.8 인터페이스 기반 프로그래밍 인터페이스 기반 프로그래밍: 모든 클래스에 대해 인터페이스를 정의해야 할까? 인터페이스를 이해하는 다양한 방법 구현이 아닌 인터페이스에 대한 프로그래밍(Program to an interface, not an implementation) 이해할 때 특정 프로그래밍 언어를 떠올리면 안된다 (사고가 해당 언어의 인터페이스 관련 문법에 갇혀 버리기 때문) 인터페이스 : 상위 수준의 추상적인 이.. 2024. 4. 6.
[디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.5~2.7 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. 2.5 객체지향 프로그래밍처럼 보이지만 실제로는 절차적 프로그래밍 오해 : 객체지향 프로그래밍 언어를 개발에 사용하고 모든 코드를 클래스에 넣기만 하면 그것이 바로 객체지향 프로그래밍이라고 생각하는 것 getter, setter 메서드 남용 클래스의 모든 속성에 대한 getter 메서드와 setter 메서드를 정의 -> 캡슐화 특성을 위반한다. 사실상 private로 선언된 속성들도 getter와 setter가 둘 다 있.. 2024. 4. 5.
[디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.3~2.4 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. 2.1~2.2 정리 글 : 링크 2.3 객체지향 분석, 객체지향 설계, 객체지향 프로그래밍을 수행하는 방법 ☆ 예제를 가지고 설명하는 부분이기도 하고, 2.3에 나온 예제가 그리 좋은 예제가 아니라고 생각하다보니, 내용 정리 시 책에 쓰여진 말을 제 생각대로 많이 축약 시켰습니다. 그래서 제가 잘못 이해한 경우, 2.3의 내용정리 부분은 책이 전달하고자 하는 내용과 다를 수 있습니다. 예제 소개와 난이도 분석 HTTP 인.. 2024. 3. 10.
[디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.1~2.2 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. CHAPTER 02. 객체지향 프로그래밍 패러다임 ☆ 패러다임쪽은 공식적인 정의가 명확하지 않은 부분들이 많다. 즉, 사람마다 생각이 다른 부분이 많고, 따라서 내 생각을 적기위한 사족이 좀 많이 들어갔다. 그 부분에 남들과 생각이 다른 부분도 있을꺼고, 내가 현재 잘못 생각하고 있는 것도 있을꺼다. 결국 답은 없고, 토론이 필요한 부분이라 생각된다. 아무튼 그러니 책 내용 정리만을 보고 싶다면 '☆'이 안붙어 있는 항목.. 2024. 3. 3.