재귀 가독성 얘기가 나오는 이유는
코드의 흐름이 직관적으로 눈에 띄지 않기 때문이야.
(물론 factorial 이딴거 말고, 좀 길어지면 심각하게 노답임. 그래서 유명한 재귀코드는 대개 짧음.)
즉, 근본적으로
Goto의 문제점과 동일함.
코드가 짧고 단순하냐가 문제가 아니라,
그 흐름을 놓치기 쉬우냐 아니냐가 문제가 되는거임.
goto가 들어가면 그 흐름이 꼬이기 십상임.
그리고 Goto라고 해서 단점만 있는게 당연히 아님.
몇중 for문에서 한번에 탈출해야할때는
return이나 goto를 써야됨.
만약 이 외의 방법으로 해결하려고 하면,
for 마지막줄마다 if(~~) break; 이딴코드를 삽입해서 흉하게 만들어야됨.
(그리고 의외로 break나 continue도 goto와 같은 문제점을 가짐.
그래서 최대한 맨 앞이나, 최대한 맨 뒤에 배치하는게 중요. 근데 그럴경우 goto도 단점에서 해방됨.)
그래서 return을 못 쓸 상황이면 goto로 잘 보이게 점프시키는거지.
goto가 장점이 있듯이, 재귀도 당연히 장점이 있지.
아니, 있는정도가 아니라 강하지.
근데 흐름이 불분명해서 흐름을 못잡아서 버그 만들거 같으면,
그냥 안쓰는게 차라리 나음.
goto 처럼.
댓글 0