2010-12-09 5 views
1

저희 팀은 최근 MooseX :: Declare에서 탈퇴하기로 결정했습니다. MooseX :: Method :: Signatures를 자체 최고의 대안으로 사용하고 있습니까?MooseX :: Method :: Signatures가 여전히 제안 되었습니까? 아니면 더 나은 대안이 있습니까?

필자의 디버깅의 편의를 위해,이 중 하나를 사용하지 않는 것이 좋습니다 것입니다 : 자신의 프록시를 변경 너무 게으른 존 Rockway의

+0

관련 : 간결 MooseX :: 메소드 서명 검증 에러를 선언 (http://stackoverflow.com/questions/4341116/succinct-moosexdeclare-method-signature-validation-errors) – Ether

답변

5

씨. 그들은 자신의 많은 문제를 소개하지 않습니다. (느린 시작 시간은 Class-> meta-> make_immutable입니다. 어쨌든 그렇게 할 것입니다.)하지만 다른 도구와 상호 작용할 때 문제가 발생합니다. Devel :: Cover, Devel :: NYTProf, perlcritic, perltidy 등은 사용하기 위해 다양한 조정이 필요합니다. 특정 도구를 쉽게 사용할 수 없으므로 구문 설탕의 무게를 재십시오.

그래서 나는 다양한 옵션이 있다고 생각 :

  • MooseX :: 선언 - 적은 입력을; 정확한 정확성; 확장 성 용이성
  • MooseX :: Method :: Signatures - 조금 더 정확하고 약간의 정확도; 당신은 "네임 스페이스 :: autoclean"또는 "무스 사용"에 대해 걱정해야합니다. make_immutable에 대해 걱정해야합니다. 실제 값을 반환해야합니다.
  • MooseX :: Params :: Validate - 이제 우리는 정상 Perl로 돌아 가기; MX :: Method :: Signatures와 같은 검증과 같은 단점. 그러나 이제 모든 도구가 작동합니다. 문제는 구문이 추악하다는 것입니다. 내 눈은 고글이 아무 것도하지 않습니다!
  • Parms :: Util - "올바른"유효성 확인, 허용되는 구문을 얻는 간단한 방법이지만 유연성은 떨어집니다. MX :: Params :: Validate와 같은 MooseX :: Types와 통합되지 않습니다. 수동으로 수행 - 간단하고 일반적으로 정확하고 이해하기 쉽습니다. 그러나 게으르다는 것은 유혹을 받기 쉽습니다. CODE ref를 허용하지만 CODE 과부하가있는 객체는 허용하지 않습니다. "ref $ foo"대신 "ref $ foo"& & 축복받은 $ foo & & $ foo-> isa ('ClassName');

정말, 그들은 모두 자신의 특별한 재미있는 방식으로 나빠요. 최근 필자는 수동 유효성 검사와 Params :: Util의 조합을 수행해 왔지만 이것이 최선의 방법이라고 말하는 것은 아닙니다. 나는 MX :: Types + MX :: Params :: Validate에 대한 나의 "우수 사례"에 대해 무게를 가할 것이다. 그러나 어떤 이유로 든, 나는 그것을 직접 사용할 동기가 없다. 또한

--Jon

관련 문제