저번주에 한참 코딩을 하다가

이런 코드를 발견했다.

List<SomeObject> getList(HashMap param);

이 메소드를 호출하고자 하니..

도대체 어떤 옵션들을 주어야 원하는 값을 얻을 수 있는지 도통 몰라서

랩퍼 메소를 하나 만들었다.

List<SomeObject> getList( int param1, int param2, String param3, String param4, boolean param5, Enum param6, Enum Param7, Enum param8, Enum param9, AnotherObject param10);

사용되는 모든 곳에서 파라미터들을 긁어 모아본 결과..

무려 10개의 파라미터를 전달해주어야 했는데

실제로 사용하는 코드가 다음과 같았기 때문에 냄새가 폴~폴 올라왔다.

businessLogic.getList(0,0,false,null,null,null,null,null,new Object(1,2),EnumType.TYPE1);


가독성 제로의 이상한 코드의 탄생이다.

마치 혹때려다가 혹 붙인 느낌이다.

이 문제를 해결하려고

파라미터라이즈 오브젝트를 사용해볼까?

빌더 패턴을 적용해볼까?

고민이 많이 되고 있었는데

내가 왜 이런 고민을 하고 있는지 더욱 의문이 들었다.

pythone 이나 C 처럼

기본값을 줄 수 없나?

아니 키워드 파라미터를 지원해준다면

내가 전달하고 싶은 키워드가 무엇인지 넘겨준다면

이런 고민은 하지 않아도 되는 것 아닌가?


다음 버전에 혹시 들어가나 싶어서

java keyword parameters 로 구글링을 시도해봤으나..

실패..

누구 좋은 방법 아시는 분 없으신가요?

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 허혁

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 정재훈
    2008/03/24 17:22
    댓글 주소 수정/삭제 댓글
    잘은 모르겠지만, getList() 작성하신 분께서 애초에 keyword 파라메터처럼 쓸려고 저런 method를 작성하신 듯 하네요.
    어쨌든 저런 스타일, 저도 싫어하는 스타일이긴 합니다.^^
  2. 2008/03/24 17:27
    댓글 주소 수정/삭제 댓글
    1번 방법이나 2번 방법이나

    둘다 언어의 한계를 벗어나보려는 시도이겠지요..

    제 3의 파라미터

    를 만들어봐야겠어요..
  3. 2008/03/26 10:31
    댓글 주소 수정/삭제 댓글
    으음 정말로 뭘 어떻게 이름을 주고 넣고 보내야할지 모르겠네요 -ㅅ-;
    저것만 봤을땐ㅋㅋ
  4. 2008/03/26 10:33
    댓글 주소 수정/삭제 댓글
    살짝 찾아보니까 자바에도 가변 인수가 있긴한데... 도움이 안되겠죠? -ㅅ-;
    http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
    • 2008/03/26 16:36
      댓글 주소 수정/삭제
      가변 인수도 곧잘 쓰긴 하는데

      메소드당 한개만 가변인수로 쓸수 있다는 한계점때문에..

      기본 값을 지원하는 것도 아니고..


BLOG main image
안녕하세요. 안정된 코딩, 여유로운 프로젝트, 떠오르는 코더 by 허혁

카테고리

분류 전체보기 (88)
direct (50)
indirect (21)
transmissive (10)
agenda (4)
idea (3)

달력

«   2008/07   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

최근에 달린 레몬펜 쪽지

Statistics Graph
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.