깨끗한 코드 - Clean Code

Reading time ~1 minute

Clean code

프로그래머라면 깨끗한 코드를 짜야지! 좋은 코드를 만들기 위해 가이드하는 책!

코드를 나중엔 사람이 안짤까?

나~~중엔 코드짜주는 프로그램도 나올까? 프로그램을 만들기 위해 코드를 짜는데 나중엔 설계를 잘 해서 입력으로 주면 그거에 맞는 코드를 내 뱉는 시스템이 생길까? 왠지 요즘 잘 나오는 템플릿도 그렇고 간단한 프로그램은 마우스만으로 만들 수도 있으니까 가능성이 없진 않을까 생각한다. 중요한건 지금도 좋은 코드에 대한 고민 많이 하고 있는데 그 고민을 덜어줄 수 있을까?

그럼에도 좋은 코드를 짜야하는 이유

여러가지 이유가 있겠지. 좋은 코드가 좋다는건 모두 다 아는 사실이지만… 정신 개조가 필요한 개념인 것 같다.

나중은 절대 오지 않는다. 르블랑의 법칙

나중에 고쳐야지… 는 개나주자

그럼 중요한 건 알겠는데 어떻게 하냐

하는 방법은 엄~~~청 많다. 코드 그자체라 던지 구조던지 아래에 소개하는건 구조보단 코드 작성법에 가까운 팁들이다.

커밋할 땐 이전 코드보다 더 나은 코드만 커밋하자

어제보다 1%라도 나은 코드만 생산한다면 언젠간 100%에 도달할 수 있지 않을까?

클린 코드 작성법

너무나 잘 알려져 있는, 기본적인 것들은 좀 제외하고 신기한 것들이나 못들어 봤던 것들, 놓칠 수 있는 것들을 골라 적어본다..

Data, Info

  User userData;  // worse
  User userInfo; // worse
  User user;     // better

어차피 user엔 user 정보가 들어 갈거니까 Info, Data 라는 건 안써도 된다… 이건 쉽게 까먹을까 적어두자

일관성

여러 클래스에서 add라는 메소드를 쓴다고 새로운 클래스에서 하는 행동이 비슷하다는 이유로 add라고 써야하나 고민하지 말고 사전을 켜고 정확한 행동을 뜻하는 단어를 찾자. append, insert등 대체 가능

함수 인자

가장 베스트는 0개의 인자를 가지는 함수고 다음으로 1개 2개..

writeField(name);                 // better
writeField(outputStream, name);   // worse

위에꺼 보다 아래꺼는 outputStream을 보자마자 주춤하게 된다.

주석

닫는 괄호에 다는 주석을 사용한 적이 있다. 코드가 길어 질 경우 { } 이 괄호가 앞 뒤로 어느 부분에 걸리는지 들여쓰기로도 알아보기 힘들 때가 있어서 달았었다.

나쁜 주석에 속하는 편이라고 한다. 왜냐하면 이 주석이 필요하게 된 이유를 생각해 보면 코드가 길어졌다는 뜻이다. 코드, 함수는 간결하게 작성 돼야 한다는 규칙이 잘 지켜지면 쓸모 없는 주석일 뿐이다.

무릎을 쳤다.

또,

/* created by jungwon.seo */
/* added by someone */

같은 주석도 쓸모가 없다. 코드는 언제든 변하고 사라지니까 나중엔 부정확해지고 무쓸모. 이런건 그냥 git에 맡기는게 좋겠다.

기차 충돌

final String outputDir = ctxt.getOption().getScratchDir().getAbsolutePath(); // worse

기차 충돌이라고 불린다. 그냥 3개 함수를 나누는게 좋다.

예외

의미있는 예외 쓰기

DeviceResponseException;
ATM1212UnlockedException;

그리고 null 반환하지 말자

List<User> users = getUsers();
if (users != null) {
  for (User u : users) {
    // ...
  }
}

여기에 null을 확인할 필요가 있을까? 없을거 같은데 라고 생각하면 잘 한 것!

Dooray!

Dooray CalDav, IMAP 사용법 Continue reading

Vue.js

Published on February 10, 2018

Java_tuning5

Published on March 06, 2017