# Reading/--- 개발서적 8

[Clean Code] 10장. 클래스

📖 해당 글은 Clean Code(클린 코드) 책을 읽고 정리한 글입니다. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개(static public) 상수 → 정적 비공개(static private) 변수 → 비공개 인스턴스 변수 공개 변수가 필요한 경우는 거의 없다. 변수 목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉, 추상화 단계가 순차적으로 내려가며 작성된다. 캡슐화 변수나 유틸리티 함수는 가능한 공개하지 않는 것이 좋지만 때로는 protected 로 선언해서 테스트 코드에 접근을 허용하기도 한다. 하지만 캡슐화를 풀어주기 전에 가능한 비공개 상태를 유지할 방법을 찾아봐야 한다. 클래스는 작아야 한..

[Clean Code] 9장. 단위 테스트

📖 해당 글은 Clean Code(클린 코드) 책을 읽고 정리한 글입니다. TDD. Test Driven Development 우리는 단순히 테스트 코드를 추가하기 위해 제대로 된 테스트 케이스를 작성해야 한다는 중요한 사실을 놓쳐서는 안 된다. TDD 법칙 세 가지 1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 이 규칙을 따르면 개발과 테스트가 30초 주기로 묶인다고 한다. 테스트 코드가 실제 코드보다 불과 몇 초 전에 나온다는 것. 즉 테스트 코드 작성하고 실제 코드 작성하고 이런식으로 개발을 해야한다는 것이다. 사실 위의 세..

[Clean Code] 6장. 객체와 자료 구조

변수를 비공개로 정의하는 이유 → 남들이 변수에 의존하지 않게 하기 위해 자료 추상화 // 목록 6-1(p.118) : 구체적인 클래스 public class Point { public double x; public double y; } // 목록 6-2 : 추상적인 클래스 public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 목록 6-1 → 확실하게 직표좌표계를 사용한다는 것을 알 수 있음 → 변수를 private 으로 선언한다 하더라도 조회(get) 함수와..

[Clean Code] 5장. 형식 맞추기

형식을 맞추는 목적 코드 형식은 의사소통의 일환이다 구현한 기능은 언제든 바뀔 가능성이 있지만 코드의 가독성은 앞으로의 코드 품질에 많은 영향을 미침 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발자의 스타일과 규율을 사라지지 않는다. 적절한 행 길이를 유지하기 ‘소스 코드는 얼마나 길어야 적당할까’ 에 대한 의문에 그림 5-1(p. 97)에서는 “500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다” 고 말함 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. 신문 기사처럼 작성하기 아주 좋은 신문 기사를 떠올려보라. 독자는 위에서 아래로 기사를 읽는다. 최상단에 기사를 몇 마디로 요약하는 표제..

[Clean Code] 4장. 주석

나쁜 코드에 주석을 달지 마라. 새로 짜라. — 브라이언 W. 커니핸, P. J. 플라우거 - 프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않으리라. - 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. - 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. - 그러므로 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 코드로 의도를 표현할 때마다 스스로를 칭찬해준다. - 주석은 오래될수록 코드에서 멀어진다. 이유는 단순하다. 프로그래머들이 주석을 유지하고 보수하기란 현실적으로 불가능하니까. - 나라면 코드를 깔끔하게 정리하고 표현력을 강화하는..

[Clean Code] 3장. 함수

— 함수를 만드는 규칙 작게 만들기 함수는 최대한 작게 만들자! 그렇다면 얼마나 작아야 할까? 블록과 들여쓰기 if 문/ else 문/ while 문 등에 들어가는 블록은 한 줄이어야 함 → 바깥을 감싸는 함수 enclosing function 가 작아지며 → 블록 내에 들어가는 함수 이름을 적절히 짓는다면, 코드를 이해하기가 쉬워짐 이 것은 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 의미 → 들여쓰기 수준은 1단이나 2단을 넘어서지 않게 작성하기 한 가지만 하기 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 목록 3-3(p. 43) 을 보면 세 가지 작업을 한다고 할 수도 있지 않은가? 하지만 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한..

[클린 아키텍처] 객체 지향 프로그래밍

그냥 읽는 것만으로는 여전히 책을 이해하기 힘들기에 정리하는 글.. 객체 지향에 대한 한 가지 의견 → 캡슐화 encapsulation, 상속 inheritance, 다형성 polymorphism 캡슐화 Encapsulation 데이터와 함수를 쉽고 효과적으로 캡슐화하는 방법을 제공하기 때문 구분선 바깥에서 데이터는 은닉되고(private), 일부 함수만이 외부에 노출(public) But, C 언어에서도 완벽한 캡슐화가 가능함 // point.h struct Point; struct Point* makePoint(double x, double y); double distance(struct Point *p1, struct Point *p2); // point.c #include "point.h" #in..

[클린 아키텍처] 구조적 프로그래밍

클린 아키텍처를 보는데 구조적 프로그래밍 편에서 대충 이러이러하다 뭐 그런건 알겠는데.. 사실 그래서 구조적 프로그래밍이란게 어떤 것을 의미하는 건지 딱 와닿지 않는달까.. 일단 이것저것 먼저 참고하려고 찾아본 내용들! 뭔가 더 좋은 자료들이 있다면 알려주세요..ㅎ 구조적 프로그래밍 - 위키백과, 우리 모두의 백과사전 구조적 프로그래밍은 구조화 프로그래밍으로도 불리고 프로그래밍 패러다임의 일종인 절차적 프로그래밍(Procedural Programming)의 하위 개념으로 볼 수 있다. 이 패러다임은 GOTO문을 없애거나 GOTO문에 대한 의존성을 줄여주었음 구조적 프로그래밍 | Zoe의 기술블로그 프로그래밍 패러다임순차적(비구조적),절차적(구조적),객체지향적 프로그래밍 :: Kamang’s IT Blog..