| [ garbages ] in KIDS 글 쓴 이(By): cookie () 날 짜 (Date): 2010년 11월 19일 (금) 오후 01시 54분 03초 제 목(Title): Goto-less java considered harmful.. 알다시피 Java에는 C 따위의 Goto 가 없다. 대신 break <loop label> 이 있는데 이걸로 해결이 안되는 것도 많다. 내가 C 에서 애용하느 패턴이 do_job( parm1, parm2... ) { char * buf = NULL; if ( parm1 <= 0 ) goto error: if ( parm2 == NULL) goto error; buf = malloc (parm1) if ( buf == NULL ) go to error; rv = some_lib_func( buf, param1, parm2); free (buf); return ( rv == ERROR ? FALSE : TURE ); error: if (buf) free( buf) return FALE; } 이런 패턴에 try.. catch 따위는 쓰고 싶지 않다. 그러니 goto 없이 하자면 do_job(....) { byte[] buf; if ( parm1 > 0 ) { if ( param2 != null ) { buf = new byte[parm1]; if ( buf != null ) { rv = some_lib_func(buf, parm1, parm2); ..... } } } return false; } 이런 형태가 되는데 좀 복잡한 lib func을 부르려면 if test나 lib 의 arg setup 단계가 여러개 필요하고 그만큼 if nesting 도 깊어진다. 나는 이런 패턴이 싫다. Java 고수들은 goto 없이 어떻게 하나? |