우아한테크코스 5기 프리코스

우아한테크코스 5기 프리코스 시작! 프리코스 시 지킬 나만의 규칙

BE_성하 2022. 11. 2. 10:12
반응형

우아한테크코스 5기에 지원하면서 프리코스 여정이 시작되었다.

 

우아한테크코스 지원 전에 미리 4기 프리코스를 풀어보면서 준비했었는데, 하나의 프로그램을 만드는데

 

구현에 집중하는 것이 아니라, 클린코드를 만들기 위해 리팩토링에 집중하는 방향으로 설계된 것을 알 수 있었다.

 

현재는 5기 프리코스 1주차가 끝난 상태지만 프리코스 시작 전과 프리코스 1주차를 경험하면서 느낀

 

프리코스 시 지킬 나만의 규칙을 기록하려고 한다.

 

1. 선 구현 후 리팩토링

처음부터 클린 코드를 짜려고 구현과 동시에 리팩토링을 진행을 했었는데,
리팩토링을 생각하느라 구현할 때 시간이 상당히 오래걸렸다.
먼저 구현을 해놓고, 구현 코드에서 어떻게 하면 리팩토링 할 수 있을지 생각하기

 

2. 자바 네이밍 규칙 지키기

* 프리코스 이전 네이밍 규칙을 지키지 않았던 부분
 - for문의 변수 선언 시 의미있는 변수 선언 X(거의 i로 선언했음)
 - 중복되는 정보 네이밍 시 생략 X 
		-EX : User 클래스 안의 name은 userName이 아니라, name으로)
 - Collection 등의 자료형은 복수형(s)로 표현
		-EX : UserList로 할 시 -> List에서 Set으로 바뀌면 모두 리팩토링 해야함, 따라서 Users로!
 - boolean 네이밍은 is, has, can으로 해보기
		-is : 맞는지 틀린지 / has : 데이터를 가지고 있는지 없는지 / can : 할 수 있는지 없는지

* 나만의 네이밍 규칙
 - 어떤 값을 구해서 반환하는 메소드는 'get' word를 사용하기
    -EX : getWinnerNumber()
    이때, 메소드 안의 최종 return할 변수의 네이밍을 메소드 네이밍에서 get빼고 네이밍하기
    -EX : getWinnerNumber()의 return 변수명은 winnerNumber

 - 검증 관련 메소드는 'validate' word 사용하기
    -EX : validateNumberRange()

 

3.  메소드는 항상 하나의 기능만 가지도록 설계하기

EX) 기존 메소드 : 두 수를 계산하는 메소드 plusNumber()를 보면,

두 수를 더하는 기능뿐만 아니라 두 수를 랜덤 생성하는 기능까지 포함하고 있다.

하나의 기능만 하도록 두 수를 더하는 기능과 두 수를 생성하는 기능을 분리해서 다음 두 방식 중 선택하자!

* 기존 메소드 -> 수를 생성하는 기능과 수를 더하는 기능이 합쳐져있다.
public static int plusNumber() {
    int randomNum1 = Random.pickNumberInRange(1, 100);
    int randomNum2 = Random.pickNumberInRange(1, 100);
    return randomNum1 + randomNum2;
}

public static void solution() {
    plusNumber();
}

방식1

* **리팩토링 방식1**
private static int plusNumber() {
    int randomNum1 = getNumber();
    int randomNum2 = getNumber();
    return randomNum1 + randomNum2;
}

private static int getNumber() {
    return Random.pickNumberInRange(1, 100);
}

public static void solution() {
    plusNumber();
}

방식2

* **리팩토링 방식2**
private static int plusNumber(int randomNum1, int randomNum2) {
		return randomNum1 + randomNum2;
}

private static int getNumber() {
		return Random.pickNumberInRange(1, 100);
}

public static void solution() {
		int randomNum1 = getNumber();
    int randomNum2 = getNumber();
		plusNumber(randomNum1, randomNum2);
}

 

반응형