본문 바로가기

Study100

[오브젝트] 15장. 디자인 패턴과 프레임워크 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 15. 디자인 패턴과 프레임워크 ⚈ 디자인 패턴 - 협력을 일관성 있게 만들기 위해 재사용할 수 있는 설계의 묶음 애플리케이션을 설계하다 보면 어떤 요구사항을 해결하기 위해 과거에 경험했던 유사한 해결 방법을 다시 사용하는 경우가 있다. 이처럼 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부른다. 디자인 패턴의 목적은 설계를 재사용하는 것이다. 디자인.. 2023. 1. 21.
[오브젝트] 14장. 일관성 있는 협력 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 14. 일관성 있는 협력 ⚈ 애플리케이션을 개발하다 보면 유사한 요구사항을 반복적으로 추가하거나 수정하게 되는 경우가 있다. 이러한 상황에서 각 협력이 서로 다른 패턴을 따를 경우에는 전체적인 설계의 일관성이 서서히 무너지게 된다. 객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것이다. -> 재사용은 공짜로 얻어지지 않는다. 재사용을 위해서는 객체들의 협력 방식을 일관성 있게 만들어야 한다. 과거의 해결 방.. 2023. 1. 21.
[TDD] 스터디 4주차 (25~28장 정리) 스터디 메인 페이지 25장. 테스트 주도 개발 패턴 ⚈ 그 어떤 소프트웨어 엔지니어도 아무리 작은 변화라도 테스트하지 않고 릴리즈하지는 않는다. ⚈ 스트레스를 많이 받음 -> 테스트를 점점 뜸하게 함 -> 에러는 점점 많아짐 -> 에러로 인해 더 많은 스트레스! '테스트'를 '자동화된 테스트'로 치환하자. '내가 이걸 고치면서 뭔가 다른 부분을 망가트리지 않았을까?' 라는 두려움을 지루함으로 바꿔주는 효험이 있음 ⚈ 격리된 테스트 - 테스트들은 서로 영향이 없어야 한다. ⚈ 테스트 목록 - 시작하기 전에 작성해야 할 테스트 목록을 모두 적어둘 것. ⚈ 테스트 우선 - 테스트는 언제 작성하는 것이 좋을까? 테스트 대상이 되는 코드를 작성하기 직전! ⚈ 단언 우선 - assert는 언제쯤 쓸까? assert.. 2023. 1. 20.
[오브젝트] 13장. 서브클래싱과 서브타이핑 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 13. 서브클래싱과 서브타이핑 ⚈ 상속은 두 가지 용도로 사용된다. 첫 번째 용도는 타입 계층을 구현하는 것이다. 타입 계층 안에서 부모 클래스는 일반적인 개념을 구현하고 자식 클래스는 특수한 개념을 구현한다. 타입 계층의 관점에서 부모 클래스는 자식 클래스의 일반화(generalization)이고 자식 클래스는 부모 클래스의 특수화(specialization)다. 두 번째 용도는 코드 재사용이다. 재사용을 위해 .. 2023. 1. 14.
[오브젝트] 12장. 다형성 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 12. 다형성 ⚈ 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속의 목적은 코드 재사용이 아니다. 상속은 타입 계층을 구조화하기 위해 사용해야 한다. ⚈ 12장 : 상속의 일차적인 목적이 코드 재사용이 아니라 서브타입의 구현이라는 사실을 이해하기 위한 챕터 01 다형성 ⚈ 다형성(Polymorphism) : 하나의 추상 인터페이스에 대해 코드를 작성하고 이 .. 2023. 1. 14.
TDD와 함께 SRP, OCP, DIP를 만족하도록 코드 개선해보기 스터디 메인 페이지 - 스터디 진행할 때 9장에 나온 TDD와 10장에 나온 SRP, OCP, DIP를 묶어서 심플하게 예시를 보여주려고 라이브코딩으로 진행한 내용을 정리했습니다. - 라이브코딩으로 스터디에서 공유하려한 것 : 클린코드 9장에 나온 TDD의 규칙에 따라 진행해서 TDD가 어떻게 하는건지 확인해보고, 클린코드 10장에 나온 SRP, OCP, DIP를 글로만 봐선 이해가 안될 것이니 TDD로 구현한 코드를 리팩토링하면서 해당 규칙들을 만족하는 형태로 한번 바꿔보는 과정 보여주기. - 라이브코딩 주제 : 도시가스 요금을 계산하는 간단한 클래스를 만들어 보려 한다. 단순히 단위 요금 x 사용량으로 요금이 계산된다. 다만 취약계층에겐 할인이 들어가야 하고, 차후 또다른 요금 계산 방식이 추가될 예.. 2023. 1. 11.
[클린코드] 10장. 클래스 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. ⚈ 클래스를 정의하는 표준 자바 관례 가장 먼저 변수 목록 - public static 상수가 있다면 맨 처음에 나온다. 다음으로 private static 변수가 나오며, 이어서 private 변수가 나온다. public 변수가 필요한 경우는 거의 없다. 변수 목록 다음으로 public 함수가 나온다. private 함수는 자신을 호출하는 public 함수 직후에 넣는다. ⚈ 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 변수와 유틸리티 함수는 가능한 .. 2023. 1. 11.
[클린코드] 9장. 단위 테스트 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 9장 단위 테스트 ⚈ TDD의 세 가지 법칙 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. ⚈ 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유뱔하기도 한다. ⚈ 테스트 코드는 실제 코드 못지 않게 중요하다. 테스트를 안 하느니 지저분한 테스트 코드라도 있는 편이 좋다는 판단 -.. 2023. 1. 11.
[TDD] 스터디 3주차 (테스트 반복, 순서 지정, Extension 관련) 스터디 메인 페이지 * 책 내용의 1,2부는 책을 따라 실습하는 내용이므로 정리하는게 의미 없다고 판단되어 다른 스터디와 달리 책 내용은 정리하지 않습니다. 스터디에서 책 이외로 나온 내용만 정리했습니다. ⚈ 예를들어 시간 조건을 두고 테스트가 필요한 경우, 아래와 같은 테스트는 실행할때마다 성공할수도 있고 실패할수도 있다. @Test @DisplayName("1000만까지의 짝수의 합은 1ms 이내에 통과해야 한다.") void test() { Study study = new Study(); long sum = assertTimeoutPreemptively( Duration.ofMillis(1) ,() -> study.sumEvenNumbers(10000000) ,() -> "1000만 이하의 짝수의 .. 2023. 1. 10.
[TDD] 스터디 2주차 (JUnit 관련 내용) 스터디 메인 페이지 * 책 내용의 1,2부는 책을 따라 실습하는 내용이므로 정리하는게 의미 없다고 판단되어 다른 스터디와 달리 책 내용은 정리하지 않습니다. 스터디에서 책 이외로 나온 내용만 정리했습니다. ⚈ IntelliJ 에서 JUnit 테스트는 Gradle로 실행하는 방법과 JUnit으로 실행하는 방법이 있다. Gradle 사용 시 기본 실행은 Gradle로 실행된다. JUnit으로 실행하려면 Edit Configurations 에서 설정을 추가해서 실행하면 된다. 큰 차이는 없는데, Gradle로 실행 시엔 BUILD SUCCESSFUL 같은 그래들 메시지가 붙긴한다. 다만 그래들에서 설정할 수 있는 부분들이 있고, IDE 뿐 아니라 서버 환경에서도 동일하게 쓸 수 있으므로 그래들 쓸꺼면 그래들로.. 2023. 1. 9.