클린코드 핵심 정리 (1장 깨끗한 코드, 2장 의미 있는 이름)

김상운(개발둥이)·2022년 3월 20일
0

클린코드

목록 보기
1/12
post-thumbnail

1. 나쁜 코드😒


나쁜 코드란 무엇인가?


성능이 나쁜 코드

불필요한 연산이 들어가서 개선의 여지가 있는 코드

의미가 모호한 코드

이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드

중복된 코드

비슷한 애용인데 중복되는 코드들은 버그를 낳는다.


나쁜 코드가 나쁜 이유


깨진 유리창 법칙

나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다.

생산성 저하

나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다.

새로운 시스템을 만들어야 한다.

현시스템을 유지보수하며 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다.

일정이 촉박해서

일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 코드는 생산성을 저하하기 때문에 오히려 일정을 못맞춘다.)

영향 범위가 넓어서

생각보다 영향 범위가 넓어서 건드렸다가 다른 부분에 버그가 발생할까봐(하지만.. 기술부채는 부메랑 처럼 우리에게 돌아온다.)


2. 클린 코드😊


클린 코드란?


1. 성능이 좋은 코드

2. 의미가 명확한 코드 = 가독성이 좋은 코드

3. 중복이 제건된 코드


전문가별 클린 코드란?


비야네 스트롭스트룹(C++ 창시자)

나는 우아하고 효율적인 코드를 좋아한다.
논리가 간단해야 버그가 숨어들지 못한다.
의존성을 최대한 줄여야 유지 보수가 쉬워진다.
오류는 명백한 전략에 의거해 철저히 처리한다.
성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로
코드를 망치려는 유혹에 빠지지 않는다.
깨끗한 코드는 한 가지를 제대로 한다.

그래디 부치(객체지향 대가)

깨끗한 코드는 단순하고 직접적이다.
깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.


3. 의미 있는 이름 짓기


의미가 분명한 이름 짓기


나쁜 케이스 👎

int a;
String b;

System.out.printf("User Requested %s. count = %d", b, a);

좋은 케이스 👍

class SalesItem {
	ItemCode code;
    String name;
    int count;
}

// ..

SalesItem selectedItem = salesItemRepository.getItemByCode(purchaseRequest.getItemCode());

System.out.printf("User Requested %s. count = %d", selectedItem.getName(), selectedItem.getCount());

루프 속 i, j, k 사용하지 않기


forEach 문 사용하기

for (String message : messages) {
	// ..       
}

람다 사용하기

messages.stream().forEach(
	message -> // ..
)

i, j, k 대신 맥락에 맞는 이름이있다.

i, j -> row, col / width, height
i, j, k -> row, col, depth


통일성 있는 단어 사용하기

Member / Customer / User
Service / Manager
Repository / Dao

설명

  1. 사용자를 뜻하는 Member, Customer, User 중 통일성 있게 하나의 이름만 사용하기
  2. 관리를 뜻하는 이름의 경우 Service, Manager 중 하나만 사용하기
  3. 저장소를 의미할 경우 Repository, Dao 중 하나의 이름만 사용하기

변수명에 타입 넣지 않기


자료구조

List, Map 의 자료구조일 경우 표현할 이름이 없기 때문에 명시해줘도 괜팒다.

interface

인터페이스일 경우 과거에는 이름앞에 I 라는 뜻으로 인터페이스를 의미했지만 명시하지 않는것이 좋다.

구현체

interface 를 구현한 구체 클래스는 xxxxImpl 로 이름을 짓는것이 좋다.


4. Google Java Naming Guide


Package Naming Guide

모두 소문자로, 언더 스코어 금지!

Class Naming Guide

대문자로 시작하여 카멜케이스로 작성

Method Naming Guide

메서드는 동사, 동사구


참고

해당 포스팅은 제로 베이스 클린코드 한달한권을 수강 후 정리한 내용입니다.

profile
공부한 것을 잊지 않기 위해, 고민했던 흔적을 남겨 성장하기 위해 글을 씁니다.

0개의 댓글