보통 if문을 배울때 else까지 같이 배우면서
수많은 사람들이 if else문을 남용한다
근데 else문은 정말 많은경우에 안쓰게 될수있고
안쓸수만있다면 코드 가독성이 훨씬 높아지게된다
예를 들어볼게
술을 먹을수 있는 나인지 판단하는 20살 이상이라면 true를 미만이라면 false를 반환하는 함수를 생각해봐라
function isCanDrinkBeer(age){
if(20<=age){
console.log('당연하지')
return true
} else {
console.log('안돼')
return false
}
}
만약 이런 형태로 생각했다면 넌 프로그래밍 하수인것이다
이 경우에는 else를 안쓰고 이런 형태로 함수를 바꿀수있다
function isCanDrinkBeer(age){
if(age<=20){
console.log('안돼')
return false
}
console.log('당연하지')
return true
}
어때 훨씬 예쁘지 않나??
이와 같은 상황을 극단적으로 본다면
이런식으로 예외처리할때 전자같이하면 처리한번에 인덴트가 한번씩 더들어가는
진짜 가독성 떨어지고 병신같은 코드를 만들수가있다
코드에 if else구문을 써서 좋을 경우가 거의 없다 그러니까
앞으로 우리 프갤러들도 else를 안쓸수있다면 꼭 쓰지 않길바란다
그리고 다음 글은 else if문을 쓰면 안되는 이유에 대해 써볼 생각이다
고2니까 피드백 많이해주라
나도 이렇게 쓰고있는데 else가 무조건 나쁘진 않다고 봄
2번째 코드처럼 쓰면 if 실행된 다음 else에 들어가 있던것도 같이 실행되는거 아님? 프린이라 잘 모름
return하면 함수를 탈출해서 아래껀 실행 안됩니다
오 break같은 기능도 있구나
참고로 try - catch - finally 구문에서 try나 catch에서 return해도 finally는 무조건 실행됨 - dc Cpp
그리고 코드 예제가 와닿지 않는다. function isCanDrinkBeer(age) { return age >= 20; } 이렇게 쓰면 충분하거든
오 맞아요 근데 찾아보면서 조사할때 미디움이나 스택오버플로우나 깃헙에서도 다 예제를 이런걸 들더라고요 그래서 저도 이걸로햇습니다
제목은 왜 else가 아니라 if쓰지말라임 - dc Cpp
헐 그러네
age < 20 수식 등호 여부 다른거 불편 - dc Cpp
모두 수정햇습니다
제목때문에 비추
마지막 짤 보니까 콜백지옥 생각난다야 - dc Cpp
절케 하면 때려죽여도 합법입니다
다음글엔 switch나오겠노 - dc Cpp
아 ㅋㅋ 마지막 나네
이번기회에 꼭 바꾸세여,,,
감시자패턴이라고 하는데 저걸 알고리즘책에는 안티패턴으로 써놓음
이게 살이 더 붙으면 패턴이 되나보네요 근데 왜 안티지;;
입력값이 정해져있을때 배열가지고 줄이더라
그건 좀.....
검색해보니 옵저버패턴만뜨네 watcher 패턴이라고 어디 나와있었는데 흠
자스충;;;
야스
난 else 쓰는게 더 가독성잇어보이는대
함수명이 문법에 맞는건가? 동사가 두번나오는데
전 불타입이면 무조건 is붙이는게 편해서 모르겟습니다
그렇담 isOkDrinkBeer 이런 편이 더 나을듯? 문법준수는 생각보다 많이 신뢰도에 영향을 주는지라
전 항상 can이런걸로 붙엿엇는데 able ok도 써보겟습니다 감사합니다!!
drinkbeer가 아니라 drinkingbeer인가 잘 몰겟네 ㅎ
그냥 isDrinkable하면 되지 않냐
네이밍 센스 ㄹㅇ 레전드네 여기 ㅋㅋㅋ
그런거 같지만 drinkable이면 법률적인 제한보다 물리적인 음용가능여부에 대한 의미가 더 가까워서 별론디..
isLegalToDrink
나는 저 정도는 코딩 스타일이라고 봄 상황에 따라 많이 다르고. 딱히 else 없애고 리턴하는게 예뻐보이지 않음
그리고 foo 예제 같은 경우는 else를 예쁘게 못쓴거지 else를 쓰는거 자체가 잘못이 아님
실무에서 저런 다중첩 if 써야할 일이 거의 없고 대부분 2~3 중첩을 비중첩 if문으로 빼낼 수 있는 경우가 많지만
맞습니다 근데 초보자는 else보통 다 저렇게 남용하기땜에 일케 썻습니다 그리고 이것도 극단적으로 goto도 잘쓰면 멋집니다
무조건 쓰지말란식으로 쓴 제목은 쫌 어그로끈거라 ㅈㅅ합니다...ㅎㅎ;;
!d-fail4, !c-fail3, !b-fail2, !a-fail1을 정말, 상황이 정말 그렇게 되었기 때문에 호출해줘야 하는 상황이면 저 방법이랑
if(a && b && c && d){return true;}else{ <케이스 별 fail 처리 그것도 다시 if else로 부울이니까 switch도 못쓸거 아님> } 이거 밖에 없을듯
근데 윗 방법으로 하면 컴파일러 친구가 노오력하지 않으면 재검사하게 돌아갈테니까 효율 떨어질테고 지구 어딘가에서는 이걸 고민하는 새끼들도 있겠져
그리고 나 람슬람인데 a => 20 <= a으로 줄이자는 의견 내고 물러가봄, 대칭이라서 이쁘다
맞네요 케바케가 심해서 어그로 줄이고 진짜 팁글처럼 쓰는게 나았을거같습니다 의견 감사해여
대칭 ㅆㅅㅌㅊ...
If랑 else는 커플이지
프갤상위4프로
1등급이노 - dc Cpp
내신은 조졋는데 1등급이라 ㄱㅇㄷ입니다
ㅅㅂ 회원가입 유효성체크를 막짤처럼 13단 if문 으로 구현한거 본적있다
아래짤 코드 캡쳐 뭘로 한 거임?
https://carbon.now.sh/
무슨 언어인지 부터 밝히는게 예의 아님?
자스입니다
진짜 함수명 ㅈ같누 ㅋㅋㅋㅋ 영어 몇등급?
안그래도 아픈구석을 건드리네?? 너 깃헙까라
해고 1순위 대상이네. 자원 낭비 ㄷㄷ
성능 시발아
어떤 상황을 얘기하는건지 코드로 올려주면 좋겠다
왜 foo함수에 else if 안써서 가독성 씹창냄?
a만충족할때 a,b충족할때 이런경우를 굳이 다 else if로 쓰겠다고? 글에 있는 후자 방법으로 하는게 더 편하지않나?
if (!a) { fail1() } else if (!b) { fail2() } .....
사진 코드에서 if문 사이마다 console.log('a 충족') console.log('a ㅠ충족') console.log('a b c충족') 이런식으로 있으면 님 방식대로는 뭐라고 쓸수있음?
그러면 if (a) { a충족 } else { fail1() return } if (b) { b충족 } else { fail2() return } 이렇게 return 써야겠지
아니 쉬,,,펄 결국 그건 사진코드랑 똑같잖아
if나 else안에 if문이 들어있는게 아닌데 뭐가 같아?
맞네 잘못봤어 좀 봐볼게
이건 아까 댓글에서도 다른분이 말하셧는데 맞는거같다 너무 케바케인 코드이고 다른거없이 내가 말한것만 딱있으면 후자 방법보다 그냥 함수로 만들수있으니까 그게 나았겠네 미안하다
else 안쓰면 좆되는경우 많은데 너 디버깅 안해봤지?
현업 코드를 못봐서 뭔지 모르겠는데 올려줬으면 좋겟다
isCanDrinkBeer 네이밍 센스 ㄷㄷ
개소리고 중간에 빠져나가야할 경우가 있을때 저렇게 해야하는게 맞고. 그 외의 경우 정말 비교를 해야하는 것이 있다면 그것을 함수로 호출하여 비교하는게 나음
? 다들 이렇게 하는거 아니었음? 특히 함수의 리턴부가 모두 조건문 블록에 들어가있는건 잠재적 부작용의 위험성이 있기도 함
제목을 "함수 return할때 else문 밖에서도 리턴해라"라고 적었으면 일부 맞말인데 제목어그로 제대로 끌었네
아침에 온라인클래스 하기전에 떡밥좀 돌릴려고 썼던글인데 이렇게 많은 사람들이 진지하게 얘기해줄줄 몰랏다 미안하게 생각한다
프갤 수준 왤케 낮아졌냐 ㄹㅇ 프밍 입문때나 고민할법한 주제로 리플 80개가 달리네
좀 어려운 주제는 조회수, 리플 씹망이고 이런것만 핫하누ㅋㅋ ㄹㅇ 학식갤, 국비갤인가
댓글수에 기여하심 - dc Cpp
왜 개나소나 알고있는걸 지만 존나 똑똑해서 알고있다는듯이 말하냐 ㅋㅋㅋㅋ
어때 훨씬 이쁘지 않나? 에서 소름 돋았다 ㅋㅋㅋㅋㅋ
드립인줄 알았는데 진심이었누ㅋㅋㅋ
ㄹㅇ학식갤이네
민우 좆병신 아직도 ㅈㄹ이네
아만보네
그냥 삼항연산자로 판별해서 출력하면 안될까
string result = age > 20 ? "20이상" : "20이하"; 하고 return result하면 안됨?
그렇네 ~ 다음편 기대 - dc App
20 <= age 면 반대는 age < 20인데 age <= 20으로 써서 비추 - dc App
현직이긴 한데 가독성이라는 것은 생판 처음 보는 사람이, 그것도 초보 프로그래머가 이해할 수 있는 것이 제일 중요함 3항연산자를 리턴에다가 주면 당연히 소스코드는 줄어듬. 그런데 처리를 바꿔야 할 때, 삼항연산자 이해 못하는 사람이 볼 때 해당소스는 좋은 결과물이 아님. 물론 가독성을 위해 코멘트라던지 달기야 하지만 ~판별 이라고 적고 if else로
구분하면 아 이런 분기구나 하고 이해가 쉬움. 그리고 if else처리를 하는 이유는 해당 처리에서 문제 발생 시 대응하기 위한 부분도 있다고 봐야함. 위 예제는 간단하지만 좀 더 복잡한 분기처리라던지 등에서는 else로 해당 값들을 처리해 주는 것이 안전. 스위치문에서 디폴트 값 넣는 이유가 예상 외 값을 막기 위해서임. 물론 특정 값 1개 외에 다 넘김
다 넘긴다는 경우라던지는 필요없는 것은 맞음. 하고싶은 말은 필요에 의해서 줄일 순 있지만 해당 방법이 올바른가 에 대해서는 확정이 어렵다고 생각함
단적인 예로 람다 식으로 필터 걸어서 해당하는 인원 뽑는 코드를 썼는데 소스 리뷰때 람다 식 이해 못하는 인원들이 많아 미안하지만 if문으로 추출해달라는 지시도 받아봄... 대충 5줄짜리가 20줄 넘어가는 케이스...
그냥 if일 때만 처리하면 안되는거냐?
혼나요..
else 붙어 있는게 훨씬 가독성 있고 좋음 후자는 병신같은 비현실적인 예시라서 전혀 안와닿음
같이 일하는 사람마다 다르겠지만 공통적으로 함수에 리턴 꼭 넣고 else 쓰고 null statement 써야 남이 보기에도 편하고 로직오류도 방지할 수 있다. 자바스크립트처럼 인터프리터 언어는 그렇게 써도 괜찮은지 말도 안 되는 개수작을 어디서 들었나본데 컴파일 하는 언어들은 귀찮아도 해주는게 맞다... 약간 골때리는 의견이네