개발자 필독도서 리뷰

[노개북] "클린코드" 챌린지 15일차

개발자 배찌 2022. 3. 10. 14:34
728x90

 

"노개북" 노마드 개발자 북클럽 15일차!!

#코딩 #개발자 #노마드북클럽 #노개북 #노마드챌린지 #클린코드 #3주스케쥴

 

목, 금 | Assignment #15

  • 📚 복습
  • ✔️ 미션 Mission (3)

😀미션 Mission

클린코드 읽으며 뼈맞았던 내용 중 3가지 원칙을 고르고, 이를 따르는 예시를 만들면 됩니다!

더러운 코드를 깨끗한 코드로 리팩토링하는 예시를 만들어보세요. 

 

원칙1. 클래스는 작게 더 작게 만들어야하며, 단일책임원칙(SRP)을 지켜야한다.

// Before 😣
public class Calculator {
  int x = 1;
  int y = 2;

  void add(){
    log.info("x+y = " + x+y);
  }
  void minus(){
    log.info("x-y = " + x-y);
  }
}

// 무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.
단일책임원칙을 위배한다.
  

// After 😎
pubic class Calculator {
  int x = 1;
  int y = 2;
}
class AddCalculator extends Calculator{
  void add(){
    log.info("x+y = " + x+y);
  }
}
class MinusCalculator extends Calculator {
  void minus(){
    log.info("x-y = " + x-y);
  }
}
  
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
하나의 클래스는 하나의 역할만 존재해야한다. 단일책임원칙(SRP)도 각 역할별 모듈화와 연관이 있지 않을까 생
각해본다.

 

원칙2. 불필요하게 주석으로 코드를 설명하지 않아도 함수의 이름으로 어떤 기능을 할지 알수 있어야 한다. 

 

// Before 😣
pubic class Calculator {
  int x = 1;
  int y = 2;
}
class AddCalculator extends Calculator{
  void aaaaa(){   //더하기함수
    log.info("x+y = " + x+y);
  }
}
class MinusCalculator extends Calculator {
  void bbbbbb(){   //빼기함수
    log.info("x-y = " + x-y);
  }
}  

// 무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.
함수가 어떤 기능을 하는지 주석으로 설명되어있지만, 함수 이름만으로는 알수가없다.
  
// After 😎
pubic class Calculator {
  int x = 1;
  int y = 2;
}
class AddCalculator extends Calculator{
  void add(){
    log.info("x+y = " + x+y);
  }
}
class MinusCalculator extends Calculator {
  void minus(){
    log.info("x-y = " + x-y);
  }
}
  
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
주석을 제거하고 함수이름만으로 어떤기능을 하는지 구별이 되도록 이름을 수정하였다.

 

원칙2. 정적 공개 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개 변수가 나오며, 이어서 비공개 인스턴스 변수가 나온다.
변수 목록 다음에는 공개함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다.

// Before 😣
pubic class Calculator {
  private static int y = 2;     // 정적 비공개 변수
  private int z = 3; // 비공개 인스턴스 변수
   public static final int x = 1; // 정적 공개 상수
}

// 무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.
변수의 선언위치를 고치려고 한다. 정적공개상수는 맨위에 나오는것이 좋다.
  

// After 😎
pubic class Calculator {
  public static final int x = 1; // 정적 공개 상수
  private static int y = 2;     // 정적 비공개 변수
  private int z = 3; // 비공개 인스턴스 변수
}

  
// 어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.
정적 공개 상수 > 정적 비공개 변수 > 비공개 인스턴스 변수가 나온다.
변수 목록 다음에는 공개함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다.