본문 바로가기

개발자 스터디87

[지속적인 통합] 1장. 시작하기 지속적인 통합 스터디 메인 페이지 목차 * 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. * 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다. CHAPTER 1. 시작하기 겉보기엔 기초적인 것 같은 실천 방법도 설교보다는 실천하는 데 중점을 둬야 한다. 통합 빌드를 자주 돌리고 그게 대수롭지 않도록 만들고 싶다면 지속적인 통합(이하 CI)가 도움이 될 것이다. CI 컴파일.. 2023. 3. 7.
[이펙티브 자바 정리] 2장 - 객체 생성과 파괴 스터디 메인 페이지 목차 * 책 내용 자체 정리 보다는 제가 각 아이템을 이해한 방식대로 제 생각을 주저리주저리 적는 글 입니다. 따라서 틀린 내용이 있을 수 있습니다. 2장. 객체 생성과 파괴 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 장점 1 - 이름을 가질 수 있다. 생성자에는 이름을 줄 수 없으므로 실수의 여지가 많다. 또한 생성자에 어떠한 의미를 부여하기도 힘들다. 따라서 정적 팩터리 메소드에 이름을 주면 사용하는 쪽에서도 실수의 여지를 많이 줄일 수 있다. 이하 코드에서 생성자를 통한 생성은 타입 혹은 boolean 처럼 판단 기준을 넘겨줘야 한다. 정적 팩터리 메서드를 사용한게 더 깔끔하고 실수의 여지도 적을 것 같다. new Member("nahwasa", MemberType.. 2023. 2. 17.
[클린코드] 14~17장 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 14~17장은 코드위주나 기존에 나온 얘기가 많아 딱히 정리해서 적어둘 내용이 없는 것 같아 생각나는 내용 위주로 적었습니다. ⚈ 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래 구조를 크게 뒤집는 행위다. ⚈ TDD는 시스템을 망가뜨리는 변경을 허용하지 않는다. 변경을 가한 후에도 시스템이 변경 전과 똑같이 돌아가야 한다. ⚈ 소프트웨어 설계는 분할만 잘해도 품질이 크게 높아진다. ⚈ 그저 돌아가는 코드만으로는 부족하다. 돌아가는 코.. 2023. 2. 11.
TDD, Mock, SOLID 얘기 - 도시 가스 요금 계산 스터디 메인 페이지 목차 - TDD 스터디에서 라이브코딩으로 TDD를 통한 도시 가스 요금 도메인을 만들면서, Mock과 객체지향의 SOLID 일부를 섞어서 설명한 내용입니다. 비싸진 도시가스 요금에 맞춰 도시가스 요금 관련으로 준비했습니다. 작년 11월부터 스터디했던 TDD, 클린코드, 오브젝트에서 배운걸 섞어서 시나리오를 만들어봤습니다. 개선점이 있다면 알려주세요. - 요구사항 : 도시가스 요금을 계산하는 간단한 로직이 필요함. '단위 요금 x 사용량' 으로 금액을 계산할 것임. 다만 다른 요금 계산 방식이 추가될 예정이다(취약계층 할인 등등). 추가로 아직 DB 부분이 정해지지 않은 상태에서 우선 요금 계산 하는 로직부터 테스트해보며 짜려 하는 상황이다. github 코드 (이하 단계에 따라 커밋되.. 2023. 1. 29.
[클린코드] 13장. 동시성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 13장. 동시성 ⚈ 동시성과 깔끔한 코드는 양립하기 어렵다. 스레드를 하나만 실행하는 코드는 짜기가 쉽다. ⚈ 동시성이 필요한 이유 동시성은 결합(coupling)을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다. ⚈ 동시성의 미신과 오해 동시성은 항상 성능을 높여준다. -> 동시성은 때로 성능을 높여준다. 대기 시간이 아주 길거나 여러 프로세서가 동시에 처리할 독립적인 .. 2023. 1. 21.
[클린코드] 12장. 창발성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 12장. 창발성 ⚈ ☆ 창발성 : 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체구조)에서 자발적으로 돌연히 출현하는 현상 ⚈ 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 규칙 네 가지! (중요도 순) 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. ⚈ 모든 테스트를 실행하라 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 '테스트가 가능한 시스템'이다. 테스.. 2023. 1. 21.
[클린코드] 11장. 시스템 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 11장. 시스템 ⚈ 소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 준비 과정 이후에 이어지는 런타임 로직을 분리해야 한다. ⚈ 시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 애플리케이션은 그저 객체를 사용할 뿐이다. ⚈ 팩토리 - 때로는 객체가 생성되는 시점.. 2023. 1. 21.
[오브젝트] 책 내용 전체 정리 스터디 메인 페이지 (챕터별 정리 내용 따로 보기 가능) 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. 들어가며 - 프로그래밍 패러다임 01 패러다임의 시대 - 현대인들에게 패러다임 → 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계 (e.g. 천동설 → 지동설 로의 패러다임의 전환) - 이 책에서 얘기하는 패러다임 전환 - 절차형 패러다임에서 절차형 패러다임으로의 변화 02 프로그래밍 패러다임 - ☆P.S 좋아하는 알고리즘 중 하나인 플로이드 와샬 알고리즘의 그 플로이드 .. 2023. 1. 21.
[오브젝트] 15장. 디자인 패턴과 프레임워크 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 15. 디자인 패턴과 프레임워크 ⚈ 디자인 패턴 - 협력을 일관성 있게 만들기 위해 재사용할 수 있는 설계의 묶음 애플리케이션을 설계하다 보면 어떤 요구사항을 해결하기 위해 과거에 경험했던 유사한 해결 방법을 다시 사용하는 경우가 있다. 이처럼 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부른다. 디자인 패턴의 목적은 설계를 재사용하는 것이다. 디자인.. 2023. 1. 21.
[오브젝트] 14장. 일관성 있는 협력 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 오브젝트(조용호 저) 책 입니다. CHAPTER 14. 일관성 있는 협력 ⚈ 애플리케이션을 개발하다 보면 유사한 요구사항을 반복적으로 추가하거나 수정하게 되는 경우가 있다. 이러한 상황에서 각 협력이 서로 다른 패턴을 따를 경우에는 전체적인 설계의 일관성이 서서히 무너지게 된다. 객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것이다. -> 재사용은 공짜로 얻어지지 않는다. 재사용을 위해서는 객체들의 협력 방식을 일관성 있게 만들어야 한다. 과거의 해결 방.. 2023. 1. 21.