프로그래밍 3대 원칙

uchan·2023년 4월 23일
0
post-custom-banner

배경

five lines of code 책을 읽으며 리팩토링을 공부하던 중 과거 공부했던 프로그래밍 3대 원칙을 되새김질하며 다시 한번 체득하고자 한다.

dry

don't repeat yourself

코드를 중복해서 작성하지 말자
가끔 프로젝트를 수행할 때 시간에 쫓겨 기존에 있던 코드를 활용하지 않고 작성하는 경우, 레거시 코드와 혼용하여 작성하는 경우 코드가 중복되어 작성될 수 있다.
예를 들어,

# api/v1/sessions_controller.rb
class SessionsController < V1::BaseController
	def signin
    	user = User.find_by(email: params[:email])
        if user.validate_password?(params[:password])
        	sign_in user
        ...
    end
end

# api/v2/sessions_controller.rb
class SessionsController < V2::BaseController
	def signin
    	user = User.find_by(email: params[:email])
        if user.validate_password?(params[:password])
        	sign_in user
        ...
    end
end

만약 유저 로그인 시 패스워드가 5회 이상 틀릴 시 락을 거는 기능을 추가한다면 v1 과 v2 컨트롤러 모두 수정이 필요하다. 만약 signin 메서드에 들어가있는 로그인 기능을 별도의 모듈로 이전하여 작성한 후 include 한다면 해당 모듈에서만 수정하면 되므로 유지보수가 쉬워질 것이다.

kiss

keep it simple, stupid

코드는 최대한 간결하고 누구나 알아볼 수 있도록 작성해야한다.

def replace(str, char1, char2):
	result = ''
	for c in str:
    	if c == char1:
        	result += char2
        else:
        	result += c
    return result
    
# 안에 if 문을 빼서 함수를 쪼개보자
def replace(str, char1, char2):
	result = ''
	for c in str:
    	result += select_char(c, char1, char2)
 	return result

def select_char(c, comp, rep):
	if c == comp:
    	return rep
    return c

YAGNI

you ain't gonna need it

지금 필요없는 기능은 만들지 말자. 추후 필요할 때 만들면 된다.

five lines of code

five lines of code 에서는 리팩토링에 대하여 방법론을 제시한다. 앞으로 이 책을 기반으로 깨진창문을 찾아 고치고 어떻게 해결하였는지 꾸준히 작성해보자!

    
post-custom-banner

0개의 댓글