객체

hyuckhoon.ko·2020년 11월 21일
0

What I learned in first year

목록 보기
128/146

1. 절차 지향 VS 객체 지향




절차지향 프로그래밍으로 프로그래밍을 입문하게 된다.
처음엔 유지보수 측면에서 어려울 것이 없다. 규모가 작고 알고리즘이나 비즈니스 조건의 복잡도가 낮기 때문이다.



1. 코드가 복잡해지고 수정비용이 증가하는 이유

아래의 절자 지향 프로그래밍의 코드가 복잡해지는 것을 바라보자.

매우 간단한 코드로 시작한다.

// 인증 API
Account account = findOne(id);
if (account.getState() == DELETED {
}


// 암호 변경 API
Account account = findOne(id);
if (account.getState() ==DELETED){
}



그러다 서서히 복잡해지기 시작하면서


// 인증 API
Account account = findOne(id);
if (account.getState() == DELETED || 
	account.getBlockCount() >0) {
}


// 암호 변경 API
Account account = findOne(id);
if (account.getState() ==DELETED) || 
	account.getBlockCount() > 0 {
}

인증, 암호 변경 처리 코드에서 getState 메소드를 공유하고 있다.

비즈니스 요구사항이 추가되어 기존 State 뿐만 아니라 비밀번호 틀린 횟수를 카운팅도 하고 있다.



다시 요구사항이 늘어, 이메일 검증 상태를 확인하고, 해당 유저가 활성화된 유저(휴먼 계정은 아닌지, 정지 계정)인지 까지 판단해달라는 요구가 온다면

if A || B || C || D ... || Z {
}

위와 같이 복잡해지고 수정하기도 어려워 지게 된다.






2. 객체 지향은 어떻게 하길래?

"그 객체가 어떤 기능을 제공하는가?"



다음 편에 계속

0개의 댓글