inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[워밍업 클럽 스터디 2기 :: BE 클린코드 & 테스트] 1주차 발자국

성규
0

 

뇌 메모리 적게 쓰기

프로그램 = 데이터 + 코드

정리하는 뇌

도둑맞은 집중력

인지적 경제성을 추가하자


Early return

Early return 으로 else의 사용을 지양하자

Early return 을 통해서 끊어서 볼 수 있도록 하여 이후 불필요한 로직을 수행하지 않도록 처리


사고의 depth 줄이기

파라미터를 줄일 수 있다면 줄이는게 좋다.


공백 라인을 대하는 자세


부정어를 대하는 자세

※ 부정 연산자(!)의 가동성 ↓

if(!isLeftDirection()){
}

// 반대대는 상황이 있다면
if(!isRightirection()){
}
// 메서드명에 Not 을 추가하는 방법
if(isNotLeftDirection()){
}

해피 케이스와 예외 처리

사람은 해피 케이스에 몰두하는 경향이 있다.

Null을 대하는 자세

Optional에 관해

Optional을 해소하는 방법

public T orElse(T other){
	return value != null ? value : other;
}

Intger result = somethingOptional.orElse(methodHeavy()); // 호출할 필요가 없는 경우에도 항상 실행
Intger result3 = somethingOptional.orElse(0); // 정해진 값일 때 사

public T orElseGet(Supplier<? extends T> supplier){
	return value != null ? value : supplier.get();
}

integer result = somethingOptional.orElseGet(() -> methodHeavy()); // null인 경우에만 실행

추상의 관점으로 바라보는 객체 지향

객체 : 추상화된 데이터 + 코드

관심사의 분리


객체 설계하기

객체 : 데이터 + 코드

객체(Object)로 추상화 하기

객체가 제공하는 것

새로운 객체를 만들때 주의할 점

Setter 사용 자제

→ 데이터는 불변이 최고다. 변하는 데이터라도 객체가 핸들링 할 수 있어야 한다.

→ 객체 내부에서 외부 세계의 개입 없이 자체적인 변경/가공으로 처리할 수 있는지를 확인

→ 만약 외부에서 가지고 있는 데이터로 변경 요청을 해야하는 경우, ‘set~’이라는 단순한 이름 보다는 ‘update~’ 같이 의도를 드러내는 네이밍을 고려하자.

Getter도 처음에는 사용 자제. 반드시 필요한 경우에 추가하기

→ 외부에서 객체 내 데이터가 필요하다고 getter를 남발하는 것은 무례한 행동이다.

객체에 메시지를 보내라


단일 책임의 원칙 :

SRP : Single Responsibility Principle

하나의 객체는 각자 맞는 책임을 가지게

OCP : Open-Closed Principle

추상화와 다형성을 이용!

LSP : Liskov Subsitution Principle

부모에서의 기능을 자식에서도 동일하게

ISP : Interface Segregation Principle

※ 기능단위로 인터페이스를 작게 사용해라!

 

DIP : Dependency Inversion Principle

의존성 : 하나의 모듈이 다른 하나의 모듈을 생성하거나 사용하는 모든 것, 참조하는 것

의존성 순방향 : 고수준 모듈이 저수준 모듈을 참조

백엔드

답변 0