티스토리 뷰

✍🏻/독서록

[Clean Code] 2장 함수

foodev 2022. 11. 28. 19:11
728x90
🚨 클린 코드 책에 대한 요약본입니다. 포스팅을 보고 간질간질한 구석이 있다면 꼭 책을 보길 추천드립니다.

 

책 첫 장에는 이런 말이 나온다. 클린 코드라는 책을 읽을 때는 "수학의 정석"처럼 밑줄을 그어가며 익혀야 하는 책이다.

나도 21년도에 한 번 책을 읽었으나 1년이 지난 대부분의 내용이 휘발되어 다시 읽어보며 내용을 정리해보려고 글을 쓰게 되었다.

클린 코드 1. chapter에 가장 많이 나와 있는 말은 "깨끗한 코드"이다. 깨끗한 변수, 깨끗한 함수, 깨끗한 클래스 등

사람이 읽기 쉽고, 이해하기 쉽고, 유지 보수하기 쉬운 코드는 어떤 코드인가에 대해 서술하는 책이다.

 

지난 1년간 나는 개발을 하며  마구잡이로 개발을 했다. 

구글링을 통해 코드를 복붙 하는 일도 많았고, 일단 돌아가기만 하는 코드를 만들었다. 

회사 코드자체가 엉망이라는 핑계로 나도 변수명에 크게 생각을 하지 않았고, 중복되는 코드들을 심었다.

코드 몽키가 되어 있는 나 자신의 모습에 양심이 찔려 해당 책을 다시 읽게 되었다.

 

 

⬇️ 다른 글 보러 가기

 

2022.11.28 - [Clean Code] 1장 의미 있는 이름

 

 

2장: 함수


'어떤 프로그램이든 가장 기본 단위가 함수이다 이 장은 함수를 잘 만드는 법을 소개한다.'

"작게 만들어라"

함수를 만드는 첫째 규칙은 '작게'다.

둘째 규칙은 '더 작게'라고 설명한다.

즉 함수 안에 여러 가지 기능과, if문 남발 등을 하지 말라는 뜻이다.

 

 

"한 가지만 해라"

아이디를 생성하고, 페이지를 가져오고, ajax를 던지고, 렌더링하고 등 여러 가지를 처리하게 만들지 말자.

책에서는 함수에 대해 다음과 같이 강조한다.

 

"함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다."

 

 

 

"서술적인 이름을 사용하라"

이름이 길어도 좋다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다.

 

 

 

"함수 인수"

함수에서 이상적인 인수 개수는 0개이다.

다음은 1개 다음은 2개 다음은 3개...

 

그 이유는 인수가 늘어날수록 이해하기 어렵기 때문이다.

writeFiled(name)는 writeFiled(name, outputStream) 보다 이해하기가 쉽다.

 

 

 

"부수 효과를 일으키지 마라"

한 가지의 동작만을 하는 함수가 아닌 남몰래 다른 짓을 하는 것은 큰 오류를 만들어낸다.

 

checkPassword 메서드를 읽어보며 문제를 찾아보자.

public boolean checkPassword(String userName, String password) {
	User user = UserGateway.findByName(userName);
	if(user != User.NULL) {
		String codedPhrase = user.getPhraseEncodedByPassword();
		String phrase = cryptographer.decrypt(codedPhrase, password);
		if("Valid Password".equals(phrase)){
        	Session.initialize();
			return true;
			}
		}         
        return false;
	}        
}

 

 

해당 코드의 문제점은 Session.initiallize();를 실행한다는 것이다.

checkPassword메서드가 비밀번호 체크를 통해 true/false만을 리턴하는 것이 아닌

세션 초기화도 실행한다. 

이럴 경우에는 초기화를 다른 메서드에서 구현하거나 메소드 이름을 checkPasswordAndInitializeSession이라고 명시하자.

 

"try/catch 뽑아내기"

오류 처리도 "한 가지" 작업으로 친다.

 

 

 

나도 함수의 중요성을 알고 있어 함수를 만들 땐 늘 하나의 동작만 하도록 분리하였던 적이 있다.

다행히 해당 챕터를 읽으며 어느정도?는 알고 있다고 생각했지만 치밀하게 함수의 동작을 분리 하지 않았던 모습이 떠올랐다.

가장 작은 단위로 함수를 쪼개고 쪼개면 너무 긴 코드가 되어서 이것 또한 다른 사람이 읽는데 불편함을 초래할 것 같았다.

그래도 책의 원칙에 따라 최대한 쪼개고 쪼개어 분리해야겠다고 느꼈다.

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday