해쟈스토리

클린 코드 책읽기 day3 - 2장 의미있는 이름 본문

파이썬/클린코드

클린 코드 책읽기 day3 - 2장 의미있는 이름

해쟈 2024. 8. 27. 22:53
728x90
반응형

TIL 요약

 

 


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

 

위 코드는 지뢰게임판에 관한 코드였다. 아래와 같이 바꾸면 어떤가? 명확이 깃발이 꽂혔는지 판단하는 로직이구나 들어오지 않는가?

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

Info나 Data는 의미가 불부분명한 불용어이다. 요지는 zork라는 변수가 있다는 이유만으로 theZork라는 이름을 지어서는 안된다는 말이다.

variable이라는 단어는 단연코 금물이다. 표 이름에 table이라는 단어도 마찬가지 이다. 

getActiveAccount()와 getActiveAccounts(), getActiveAccountInfo() 를 구분할 수 있는가?

moneyAmount는 money와 구분이 안된다. 

customerInfo는 customer와 accountData는 account와 구분이안ㄷ된다. 읽는 사람이 차이를 알도록 이름을 지어라. 

 

 

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

e라는 변수는 검색이 어려렵다.  영어에서 e는 가장 많이 쓰이는 문자다. e라는 변수만 어떻게 검색할 것인가?

이런 관점에서 긴 이름이 짦은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다.

개인적으로는 간단한 메서드에서 로컬 변수만 한 문자를 사용한다. 이름 길이는 범위 크기에 비례해야한다. 

 

클래스 이름과 객체 이름은 명사나 명사구가적ㅎ합하다. Customer, WikiPageAccount, AddressParser 등이 좋은 예이다.

Manager, Processor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다.

 

메서드 이름은 동사나 동사구가 적합하다. postPayment, deletePage, 등이 좋은 예다. 접근자, 변경자, 조건자는 javabean 표준에 따라 값 앞에 get, set, is를 붙인다.

 

생성자를 중복정의할 때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름을 사용한다. 예를 들어, 다음 두 예제를 살펴보자.

Complex fulcrumPoint= Complex.FromRealNumber(23.0)

 

위 코드가 아래보다 좋다

Complex fulcrumPoint = new Complex(23.0)

 

생성자 사용을 제한하려면 해당 생성자를 private로 선언한다.

---

한 개념에 한 단어를 사용하라

fetch, retrieve, get 으로 제각이 부르면 혼란스럽낟. 동일 코드 기반에 controller, manager, driver를 섞어 쓰면 혼란스럽다. DeviceManager와 ProtocolController는 근본적으로 어떻게 다른가? 


오 생각보다 내가 쓰는 단어들이 많아서 깜짝 놀랐다. 얼마전에 게시판 페이지를 할때도 get과 fetch가 둘다 있어서 혼란스러웠던 경험이 있다. manager나 controller는 정말 많이 쓰는데 어떤식으로 이름을 바꿔야할지 고민이 좀 된다.

 

 

728x90
반응형