인프런 커뮤니티 질문&답변

김재준님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문, 주문상품 엔티티 개발

else 사용

해결된 질문

22.08.27 16:05 작성

·

740

1

강의하는 영상보며 항상 배우고 있습니다.

요즘 알고리즘 문제도 공부하면서 항상 고민인 부분인데요.

if-else문에서 else를 써야하는가 입니다.

강의7:16초에서 영한님은 else를 사용하지 않으시더라구요.

그래서 궁금해서 웹에 검색을 하니 camelcase급으로 표준화된 방식이다. 아니다 케이스 바이 케이스다. eslint라는 곳에서는 if 다음에 return이 있으면 else쓰지마라 라고도 하더라구요.

질문 : 현업에서는 else를 지양하는 편인가요?

답변 2

3

OMG님의 프로필 이미지

2022. 08. 27. 16:53

안녕하세요. 김재준님, 공식 서포터즈 OMG입니다.

알고리즘의 경우 조건에 따라 분기처리해야 하니 if-else 구조가 많이 발생할 수 도 있을 것 같습니다만,

애플리케이션을 개발하는 개발자 입장에서 조건문이 많고 중첩되어 있다면 프로그램을 읽고 분석하는데에 많은 시간과 구조를 이해하는 데에 에너지를 소모해야합니다.

가령 각 알파벳이 하나의 작업단위 혹은 작은 비즈니스 로직이라 했을 때,

A

B

C

...

H' (if)

H'' (else)

->>>>>>>> H''1 (else 속 if)

->>>>>>>> H''2(else속 else)
...

프로그램의 자연스러운 흐름에서 분기가 포함된 흐름을 이해해야하는 점은 구조를 이해함에 있어 방해요소라 할 수 있습니다.

그래서 클린코드 혹은 기타 좋은 코드를 작성하는 방법을 다루는 책 등에서는 else를 지양하는 내용을 강조해서 설명합니다.

개인적인 경험 기반 억지로 else문을 줄이기 보다는,

중첩된 조건문은 지양하고 [ 하나의 메서드 안에서 if-else구조는 한번만 포함, 두 개 이상 발생하는 경우 메서드로 추출하는 방법이 읽기 좋았습니다. ], if 절에는 정상적인 상황에 대한 조건을 두고 비정상적인 상황을 else절에 두어 자연스럽게 읽기좋은 코드를 작성하는 것을 권장드립니다.

imagehttps://brunch.co.kr/@cg4jins/2

아래 두 권의 책도 개인적으로 추천드립니다.

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788979149142&orderClick=LEa&Kc=

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966260959&orderClick=LEa&Kc=


감사합니다.

김재준님의 프로필 이미지
김재준
질문자

2022. 08. 27. 17:09

좋은 답변 감사드립니다. 클린코드라는 영역을 알게되어 너무 기쁘네요.

지금껏 코드를 작성하면서 풀이에만 집중하고 가독성에 집중해야겠다는 생각은 잘 하지 못했던 것 같습니다. OMG님의 설명을 듣고 else를 사용안함으로서 얻는 가독성에 대해 알 수 있어 감사합니다.

알려주신 감사한 책들 보고 클린코드에 대해 공부해보겠습니다. 친절하고 자세한 답변 항상 감사합니다.

3

스프링피바라기님의 프로필 이미지

2022. 08. 27. 16:35

안녕하세요.

else 를 쓰고 마는것은 팀의 컨벤션에 따라 다릅니다.

클린코드를 지향하는 팀에서는 분기문을 지우기 위해 if/else , switch 사용을 지양하고

메서드 분리를 통해 가독성을 높이려고 하지만

(관련링크 : https://limdingdong.tistory.com/8) ,

else 를 쓰거나 쓰지않는 표준화된 방식은 없습니다.

김재준님의 프로필 이미지
김재준
질문자

2022. 08. 27. 17:07

좋은 답변 감사드립니다. else를 안 쓰는 표준화방식은 없는거군요,,

강의를 듣다가 코드 리팩토링방법중 else를 제거하는것도 하나의 방법중 하나라는 말을 들었던적이 있는데 그때 당시 이해가 안갔습니다.

스프링바라기님이 알려주신 좋은 링크덕분에 이제서야 이해가 가네요 : )

다시 한번 좋은 답변 감사드립니다.