ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2장 의미있는 이름
    DevBook/CleanCode 2021. 6. 29. 15:44

    1. 의도를 분명히 밝혀라

    변수나 함수, 클래스 이름은 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 이라는 물음에 모두 답해야 한다. 

     

    [예시]

    1) 의도가 들어나지 않는 코드

    public List<int[]> getThem(){
    	List<int[]> list1 = new ArrayList<int[]>();
        for(int[] x : thisList)
        	if(x[0] == 4)
            	list1.add(x);
        return list1;
    }

    위의 코드의 문제점 : 코드 맥락이 코드 자체에 명시적으로 드러나지 않음

     

    2) 개선된 코드

    public List<int[]> getFlaggedCells(){
    	List<int[]> flaggedCells = new ArrayList<int[]>();
        for(int[] cell : gameBoard)
        	if(cell[STATUS_VALUE] == FLAGGED)
            	flaggedCells.add(cell);
        return flaggedCells;
    }

    지뢰찾기 게임을 만든다고 가정하면, theList -> gameBoard(게임판), x -> cell(칸), [0] -> STATUS_VALUE(칸 상태), 4 -> FLAGGED(깃발이 꽂힌 상태) 이렇게 명시적으로 이름을 붙이는 것이 좋음

     

    2. 그릇된 정보를 피하라 

    상황1) 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면, accountList라 명명하지 않음 -> 대신 accountGroup, bunchOfAccounts, Accounts로 명명함

     

    3. 의미 있게 구분하라

    상황1) 연속적인 숫자를 덧붙인 이름(a1, a2  , ...)는 아무런 정보를 제공하지 못하는 이름일 뿐임

    public static void copyChars(char a1[], char a2[]){
    	for(int i = 0; i < a1.length; i++)
        	a2[i] = a1[i];
    }

    개선 코드 : 함수 인수 이름을 source와 destination으로 사용하기

    public static void copyChars(char source[], char destination[]){
    	for(int i = 0; i < source.length; i++)
        	destination[i] = source[i];
    }

     

    4. 검색하기 쉬운 이름을 사용하라 

    문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있음

    [예시]

    1) 검색하기 어려운 코드

    for(int j = 0; j < 34; j++){
    	s += (t[j]*4)/5;
    }

    2) 개선된 코드

    int realDaysPerIdealDay = 4;
    const int WORK_DAYS_PER_WEEK = 5;
    int sum = 0;
    for(int j = 0; j < NUMBER_OF_TASKS; j++){
    	int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
        int realTaskWeeks = (realTaskDays/WORK_DAYS_PER_WEEK);
        sum += realTaskWeeks;
    }

    -> 1)의 코드에서 숫자로만 표현된 것을 분명한 변수 이름으로 설정해주어 검색이 편리해짐 

     

    5. 명료하게 표현하기

    1) 클래스 이름

    클래스 이름과 객체 이름은 명사나 명사구가 적합함 

    Customer, WikiPage, Account, AddressParser 등이 좋은 예시 <--> Manager, Processor, Data, Info 같은 단어는 피하고, 동사는 사용하지 않음 

    2) 메서드 이름

    동사나 동사구가 적합함

    postPayment, deletePage, save 등이 좋은 예시 

     

    느낀점

    안 좋은 예시 코드가 내 코드여서 찔린다... 앞으로 유의하면서 짜야겠다.. 

    대충 훑어봐도 이해할 코드를 작성하도록...

    'DevBook > CleanCode' 카테고리의 다른 글

    4장 주석  (0) 2021.07.08
    3장 함수  (0) 2021.07.01

    댓글

Designed by Tistory.