2019. 2. 6. 03:39ㆍ[공부] 독서/클린 코드
형식
코드가 200줄 안인 작은 파일이 이해하기 쉽다.
마찬가지로 한줄이 짧을 수록 이해하기 쉽다.
함수사이는 개행을 한줄 넣어서 분리하라
밀접한 개념은 가까이 둬라
protected 변수는 피해라
밀접한 개념이 한 파일에 속하지 못하게 한다.
상수는 사용하는 지점에 바로 사용할 경우 너무 저차원에 배치되어 묻히는 경우가 있을 수 있다.
그러므로 적절한 수준에 두고 사용이 필요한 함수로 상수를 넘겨주는 방식이 더 좋다.
지역변수 선언은 사용하는 위치의 최대한 가까이에 둔다.
멤버변수 선언은 클래스 맨 처음에 두며 개행으로 변수간에 거리를 두지않는다.
종속함수는 A함수가 B함수를 선언하는 경우 B함수를 말하는데 호출 순서에 맞춰 배치하라
띄어쓰기를 이용해서 요소를 분명히 나눠라
function( A, B ) -> function(A, B)
A=B*B+C*C -> A = B*B + C*C
변수 선언부에 공백을 넣어 '=' 의 위치를 맞추는데 에너지를 낭비하지마라
IDE 별로 자동으로 수정하는 경우도 있고 전체를 보지못하고 특정값에만 주목하게 되는 효과가 있다,
코드 선언부가 너무 길다면 클래스를 쪼개야한다는 의미다.
들여쓰기를 확실하게해라
public String getAddress() { return address; }
public String getAddress() {객체와 자료구조
private = 변수에 의존하지 않는 클래스를 만들기 위해서
그러니까 아무 생각없이 private 변수에 getter setter를 다 넣지마라
디미터 법칙 : 다른 객체의 메서드를 호출할 때 다음 객체의 메서드 호출만 허용해라
1. 클래스의 멤버 메소드
2. 클래스의 멤버 변수로 지정된 객체
3. 메서드가 생성한 객체
4. 메서드로 넘어온 인수 객체
Train wreck
즉 디미터 법칙에 의해 다음을 허용하지 않는다.
String output = object1.function1().function2().targetFunction();
function1(), function2()가 만들어서 반환하는 객체가 위 범주안에 허용되지 않기 때문이다.
단 function1()과 function2()가 반환하는 것은 자료구조가 아닌 객체라고 가정한다.
이렇게 계속 길어지는걸 기차 충돌이라고 부른다.
다음과 같이 고쳐라
Object2 object2 = object1.function1();
Object3 object3 = object2.fucntion2();
String output = object3.targetFunction();
하지만 이 마저도 Object2, Object3는 디미터 법칙에 허용되지 않는 범주다.
= Object2는 작성하고 있는 메소드 전체를 이해하기 위해 필요한 지식이 아니다.
멤버 변수를 만들 때
자료구조는 public을 이용해라
객체는 private과 getter를 이용해라
하지만 자료구조를 public이 아니라 private으로 지정하고 getter setter를 지정해줘야하는 경우가 생기는데
스프링 프레임워크의 빈 파일이 대표적이다.
즉 스프링의 DTO는 자료구조이다.
첨언으로 활성 레코드도 자료구조다.
'[공부] 독서 > 클린 코드' 카테고리의 다른 글
[2019.02.09] 클린 코드 (동시성1) (0) | 2019.02.09 |
---|---|
[2019.02.09] 클린 코드 (시스템, 창발성) (0) | 2019.02.09 |
[2019.02.09] 클린 코드 (TDD, 클래스) (0) | 2019.02.09 |
[2019.02.09] 클린코드 (오류, 경계) (0) | 2019.02.09 |
[2019.02.04] 클린 코드 (변수,함수,주석) (0) | 2019.02.06 |