뭔가를 구현하려고 하다가 조건문을 쓸 때..

김성수·2022년 9월 27일
0

회고

목록 보기
9/11

코드를 짜다가 메서드를 구현하려고 할 때, 문득 생각이 들었다..

코드를 아무리 잘 구현했다치더라도, 그 코드를 로직의 순서에 맞게 배치 하지 않으면, 코드 흐름이 내가 생각한대로 막상 흘러가지 않는다는 걸 사실, 당연한 얘기이지만, 아직 미숙하다..

여튼. 코드의 구조를 잘 배치하는 것이 중요하다고 생각했는데...

지금 쓸 내용은 그게 아니다..

조건문을 줄 때,

if {}
else if {}
else {}

를 사용하려고 할 때, 사실 지금까지는 그냥 막 썼다..

그러다 요즘 너무 제어문 쓰다보니... 이제 뭔가 눈이 떠진 모양새인거 같은데

if 문에서 먼저 어떤 조건이 해당되지 않을 때, 를 조건문으로 주는 게 편리하다는 것을 알게되었다.
근데 이것이 하나의 문제에만 국한되는게 아니라, 많이 써보니 그냥 효율적이고, 간혹 보는 어떤 레퍼런스 코드들만 봐도

뭔가 조건이 해당되지 않을 때를 if문으로 주는 코드들을 봤다.
그리고 실제로, 뭔가 해볼려고 하니깐 차라리 그게 더 효율적이다고 생각해서 바로 기록을 남기려고 벨로그에 왔다...

예를 들어서,

어떤 제품명을 Key로 가지고, 제품의 개수를 Value를 가지는 Map형태의 컬렉션이 있다고 가정하자.
(코드 구현은 안 할 것이다. 로직으로만 써내려 갈것이다. 지금 중요한 내용은 if 문에서 왜 해당되지 않는 조건을 먼저 주는 것인지를 느끼게 하는 것...물론 나한테..)

Key는 String, value는 개수이기 때문에, Integer형이다.

대충 코드를 구현하자면.

Map<String, Integer> prod = new HashMap<>();

뭐 이런식으로 있겠다....?
(대충 대충 가자~)

자, 제품 등록을 하려고한다.
(단, 제품의 개수에 제한을 5개만 둔다고 가정..)
그런데 제품목록에 등록을 할 때,등록 가능한지 여부를 파악해야된다. 그리고 제품이 등록가능하면 추가한다.
제품 목록들은 map으로 구성되어있다고 가정..
위와 같은 상황에서...

key가 null이고, value가 0이라면, 등록가능하다.
그런데 key가 null이 아니라면(제품이 등록된 상턔) 다음 map으로 가서 제품 등록여부를 확인한다.
그런데 현재, 등록 가능한지 확인하고 있는, 요소가 마지막 요소이고, 등록하지 못한다면(마지막 요소에 제품이 등록 되어있다면..) 등록 하지 못한다고, 메세지를 출력한다.

이런식의 내용을 if-else로 작성하면 이렇다..

	for문이 요소들을 돌면서,
    
	if(key가 null 이고 && value==0) 등록가능
    
    else if( key가 null 아니면, 다음 맵을 확인)
    
    else 마지막 요소이고, 등록하지 못 한다면, 등록하지 못 한다는 메세지를 출력한다.

대강 이렇다고 가정하자...

위의 내용을 좀 더 설명하자면...

등록 가능하지 못 했을 때,
다음 요소를 확인해야 된다.
그렇게 확인하다가 다음 요소가 마지막 요소인지 확인해야 되는데, 어떻게 확인해야하는가..
else if 문 안에 또 'if else'문을 또 써야될 것이다..
당연히 코드 지저분해지고, 가독성은 떨어질 것이다....

그런데 지금 말하고자 하는 내용되로, 먼저 조건이 성립하지 못하는 경우를 가급적 if로 주면 편하다..

    for문이 요소들을 돌면서,
    
    if(마지막 요소확인 중이고, 등록하지 못 한다면, 등록하지 못 하는 메세지를 출력한다.
    
    else if(key가 null 이고 && value==0) 등록가능 

(else는 써주지 않아도 된다. for문 돌면서 어차피 다음요소로 갈 것이기 때문...)
이처럼 이런식으로 코드도 줄고, 훨씬 간결해졌다..

그냥 어쩌다보니 느껴져서 이렇게 끄적이게 되었고, 이런 상황이 발생했을 때, 고려할 수 있는 하나의 case를 배웠다고 생각한다..
이런거 보니..나는

어차피 잘 될 사람이다...

profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글