여태 개발을 하면서 습관적으로 반복문을 for문만을 사용했다. 알고리즘 공부하다보니 때로는 while을 사용하는 것이 소스 간결함에서 유리할 수 있다는 것을 알았다. 소스가 간결하다는 것은 해석하기도 좋다는 것이다. 이것을 비교하여 정리해본다.
|
for |
while |
사용법 |
for(반복 판단할 변수 초기화/일반적으로 int i=0; 반복 조건(boolean 형태); 반복 판단할 변수 처리/일반적으로 i++){ .... 구문 처리 ... } |
while(반복 여부 판단할 수 있는 boolean 형태/구문 내에 사용하는 변수나 조건으로 판단 할 수 있음){ .... 구문 처리 또는 구문 처리+반복 여부 판단할 변수 처리 .... } |
단순 반복문 구현 적합 |
비교적 간단 |
비교적 귀찮음. 반복 여부 조건이 내용을 구현하면서 달라지는 경우를 고려하여 설계할 경우 for에 비하여 비교적 귀찮음. 또는 반복여부할 변수를 따로 관리해야하니 귀찮음 >> 개발자 자원(시간)이 소요됨. |
알고리즘 구현 적합 |
for()와 if()문, break문 사용 시 인자 내용 변경등을 고려해야 하기 때문에 소스의 양이 많아지고 가독성이 떨어질 수 있음. break시점을 생각하지 않고 단순 구현만을 할 경우 필요이상으로 반복하여 퍼포먼스 차이 발생 가능. |
비교적 간결 |
서로 비교한 결론 |
단순 반복일 경우 for 문을 사용하는 것이 소스 해석이 더 편하다. |
for안에 if를 사용 && 특정부분에서 break 시키는 것을 원할 경우 while이 더 소스가 간결하다. |
결론
-단순 반복문 사용 시 >> for문이 쓰기도 편하고 해석하기도 편하다.
-반복 조건이 유동적으로 변경되는 알고리즘 구현 >> for, if문 break를 사용할 경우 for문보다 while문이 더 간결하게 작성할 수 있다. 이런 경우에 for문 사용 시 반복 조건 및 내부에 여러 변수와 break처리가 쓰이므로 소스가 길어지고 이에 따라 해석이 더 어려워지는 경우가 발생한다.(절대적인 기준은 아님)