garbages

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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 없이 어떻게 하나?

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.