본문 바로가기

Study/클린코드15

[클린코드] 14~17장 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 14~17장은 코드위주나 기존에 나온 얘기가 많아 딱히 정리해서 적어둘 내용이 없는 것 같아 생각나는 내용 위주로 적었습니다. ⚈ 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래 구조를 크게 뒤집는 행위다. ⚈ TDD는 시스템을 망가뜨리는 변경을 허용하지 않는다. 변경을 가한 후에도 시스템이 변경 전과 똑같이 돌아가야 한다. ⚈ 소프트웨어 설계는 분할만 잘해도 품질이 크게 높아진다. ⚈ 그저 돌아가는 코드만으로는 부족하다. 돌아가는 코.. 2023. 2. 11.
[클린코드] 13장. 동시성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 13장. 동시성 ⚈ 동시성과 깔끔한 코드는 양립하기 어렵다. 스레드를 하나만 실행하는 코드는 짜기가 쉽다. ⚈ 동시성이 필요한 이유 동시성은 결합(coupling)을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다. ⚈ 동시성의 미신과 오해 동시성은 항상 성능을 높여준다. -> 동시성은 때로 성능을 높여준다. 대기 시간이 아주 길거나 여러 프로세서가 동시에 처리할 독립적인 .. 2023. 1. 21.
[클린코드] 12장. 창발성 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 12장. 창발성 ⚈ ☆ 창발성 : 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체구조)에서 자발적으로 돌연히 출현하는 현상 ⚈ 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 규칙 네 가지! (중요도 순) 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. ⚈ 모든 테스트를 실행하라 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 '테스트가 가능한 시스템'이다. 테스.. 2023. 1. 21.
[클린코드] 11장. 시스템 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 11장. 시스템 ⚈ 소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 준비 과정 이후에 이어지는 런타임 로직을 분리해야 한다. ⚈ 시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 애플리케이션은 그저 객체를 사용할 뿐이다. ⚈ 팩토리 - 때로는 객체가 생성되는 시점.. 2023. 1. 21.
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.
[클린코드] 8장. 경계 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 8장 경계 ⚈ 외부 코드 사용하기 패키지 제공자나 프레임워크 제공자는 적용성을 최대한 넓히려 애쓴다. 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 그러다보니 외부 코드를 그대로 사용하면 필요하지 않은 기능까지 제공하게 된다. 이러한 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. ☆ 약간 이 경우와 주제가 다른 내용이긴 하지만, 자바에서도 필요하지 않은 기능까지 제공하는 경우가 있다. e.g. 자바.. 2023. 1. 2.
[클린코드] 7장. 오류 처리 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 7장 오류 처리 ⚈ 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다. ⚈ 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. ⚈ 오류 코드보다 예외를 사용하라. ⚈ Try-Catch-Finally 문부터 작성하라 try 블록은 어떤 면에서 트랜잭션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. ☆ finally는 try 부분이 정상처리되든지 .. 2023. 1. 2.
[클린코드] 6장. 객체와 자료 구조 스터디 메인 페이지 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다. 6장 객체와 자료 구조 ⚈ ☆ 이 책에서 얘기하는 '자료 구조'는 큐, 스택 이런게 아니라 '데이터만 있는 클래스'를 의미하는 것 같다. C 계열의 struct로 생각하면서 책을 보면 말이 맞다. 이하의 struct의 경우 예를들어 자바로 생각하면 아래와 같이 나타낼 수 있을 것이다. 함수 없이 데이터만 있는 클래스 구조로 생각하고 보면 책이 읽히니 그렇게 생각하면 될 것 같다. typedef struct { int* arr; int rear; int cap.. 2023. 1. 2.