2013-02-05 1 views
-2

문제 :가장 많이 사용되는 유틸리티 루틴의 perl 모듈 작성하기. 보석 기능에 앉아 있습니까?

내가 (중복이 많이있는) 많은 다른 스크립트에서 CPAN 모듈과 하드 코딩 펄 기능을 많이 사용하고, 나는 내 코드베이스 DRY을 만들고 싶어 (안 자신과 cpan 코드를 모두 공통 모듈로 추출하여 스크립트 전체에서 사용하므로 코드가 변경 될 때 코드를 한 곳만 변경해야합니다. 그들이하다).

perl 경력 중에 구현 한 일부 함수에 앉아 있는지 여부를 묻습니다. 새로운 스크립트를 작성할 때 특정 코드를 작성하기 만하면되므로 공용 모듈에 영구적으로 삽입 할 수 있습니다. 스크립트의 핵심 기능을 사용하고 나머지 코드는 공통 모듈을 사용하십시오.

+2

여러 모듈에서 코드를 리 팩터 처리하는 것은 매우 큰 사업처럼 보입니다. 나는 Perl 모듈의 세계에 중복이 있다는 것을 의심하지 않지만 필연적으로 어떤 피해를 입니까? 나는 대부분이 의견 유형 질문이기 때문에이 질문이 사이트에 잘 맞는지 모르겠습니다. –

+0

만약 모듈이나 코드가 좋았다면 CPAN에 넣을 것입니다. 과거에는 모든 프로젝트에로드 된 자체 고유의 펄 모듈을 가지고 있었지만 자주 해결 된 문제는 이후 좋은 CPAN 모듈에서 해결되었습니다! – Vorsprung

답변

4

CPAN 모듈을 리팩터링하지 마십시오. 이것들을 신비 상자로 간주하십시오. CTP 모듈을 여러 개 사용하여 동일한 작업을 수행 할 때 문제가 발생하면 표준화하십시오.

나는 Local 네임 스페이스에 넣은 많은 로컬 Perl 모듈을 가지고있다. 예를 들어 Local::WinAD은 활성 디렉토리에 액세스하고 조작합니다. 이 Local 네임 스페이스는 CPAN에서 절대로 사용하지 않습니다. 버전 관리 시스템에 프로젝트로 저장되며 모든 시스템에서 체크 아웃 및 설치할 수 있습니다. use libpragma를 사용할 수 있습니다.

모듈을 수행하는 경우 올바르게 수행하십시오. @EXPORT이 아니라 @EXPORT_OK을 사용하십시오. (또는 객체 지향 모듈로 만드는 것이 더 좋습니다.) POD 설명서를 사용하고 Test::SimpleTest::More 모듈을 통해 광범위한 단위 테스트를 수행하십시오.

CPAN에 제출하는 척하십시오.

또한 CPAN을 매우 신중하게 검색하여 이미 완료된 작업을 복제하지 않도록하십시오. 결국 CPAN이 이미 수행 한 작업을 다시하지 않는 것을 포함하여 DRY를 연습하기를 원합니다.

+0

네, 그게 정확히 제가 한 일입니다. 내 로컬 모듈은 마치 CPAN ..에 제출 된 것과 똑같습니다. Test :: More를 사용하고 POD를 완료했습니다 ... 그리고 난 아무것도 복제하지 않습니다. 나는 Maven pom.xml 파일과 다른 util 모듈을 읽기위한 모듈을 작성했다. 그래서 질문의 원래 목적은 여러분 중 누군가가 "killer"함수 나 모듈에 앉아있어 그렇게 유용했기 때문에 내 모듈을 포함시킬 수있었습니다 ..... – Moni