2012-07-20 2 views
8

:더 나은 코드 작성을 위해 누락 된 모듈이 있습니까? 내 펄 코드를 테스트하려면 다음 명령을 사용하고

펄 -mb :: 린트 :: StrictOO -MO = 린트를 모두 OO -M-원형 :: -M 간접 -Mwarnings이 필요합니다 : method -Mwarnings :: unused -c $ file

5.10 미만의 Perl 버전이있는 시스템에서는 uninit도 사용하고 있습니다.

나는 또한 Perl :: Critic 및 Perl :: Tidy를 사용하고 있으며 원하는대로 적절한 rc 파일을 설정했습니다.

이 모듈들은 내가 perl을 처음 배울 때 배웠던 나쁜 습관을 깨뜨리는 데 큰 도움이되었습니다.

엉망 일 때 나를 똑바로 좁히는 더 많은 모듈이나 pragma가 있습니까?

테스트를 사용하고 Test :: * 모듈 패밀리와 좋은 책들이 지적되었습니다. 이 새로운 정보로 인해 테스트와 코드 스킬 구축 간의 관계에 대한 몇 가지 가정을 다시 생각하게되었습니다. 이것들은 모두 높이 평가되어 이미 연구되고 사용되고 있습니다.

이 두 가지는 서로 다른 두 부분으로 보입니다. 'perl -c', Perl :: Critic 및 Perl :: Tidy는 코드를 작성하는 과정과 코드를 실행하기 전에 도움을줍니다. Devel :: Cover, Devel :: NYTProf 및 Tests는 코드 실행 중 및 실행 후 발생합니다.

좋은 개발은 반복적 인 프로세스를 요구하므로 테스트가 실행되고 반복해서 개발되지만 코드는 계속 분리됩니다.

답변의 초점은 코드 실행 중 및 실행 후였습니다. 다시 한번,이 점은 매우 높이 평가됩니다. '필기 및 사전 실행'부분을 꽤 잘했다고 가정 할 수 있습니까? 적어도 pragma, 모듈 및 유틸리티가 걱정됩니다.

+2

Test :: More에 대해 아직 배워야 할 시간이 될 것입니다. 목표 코드보다 먼저 테스트를 작성하도록 훈련하면 더 작고 관리하기 쉬울뿐만 아니라 더 일반적인 코드로 코딩하는 것이 좋습니다. 그리고 더 나은 코드 정의가 버그가 적 으면 코드를 테스트하면 더 나은 코드로 이어져야합니다. 많은 Test :: * 모듈은 많은 노력을하지 않고 추가 검사를 제공합니다. – DavidO

+0

저는 Test :: series 시리즈를 많이 사용합니다 ... 저는 코딩 기술을 향상시키는 방법으로 테스트를 고려하지 않았습니다. 가능할 때마다 DistZilla를 사용하기 때문에 테스트를 매우 쉽게 사용할 수 있습니다. 내가 돌아가서 Test :: modules를 새로운 관점에서 평가하기 시작할 필요가있는 것처럼 보입니다. – harleypig

+0

정말 좋은 책도 있습니다. 고등 Perl. 현대 Perl. (둘 다 무료 온라인으로 합법적으로 구할 수 있습니다.) 많은 사람들이 있지만 그 두 가지는 Perl에 대한 계몽 된 접근 방법을 배우기위한 좋은 책입니다. – DavidO

답변

4

Perl 5.9를 사용하고 있다는 것에 조금 걱정됩니다. 두 가지 이유가 있습니다.

첫째로 조금 오래되었습니다. 5.9.0이 2003 년에 릴리스되었고 5.9.5 (5.9.x 시리즈의 마지막 버전)가 2007 년에 릴리스되었습니다. 이후 Perl의 몇 가지 고품질 버전이 출시되었습니다.

두 번째로 (가장 중요한 것은) 5.9는 Perl의 불안정한 개발 버전입니다. 5.9는 기본적으로 Perl 5.10.0으로 이어지는 일련의 실험입니다. 그것을 사용하는 유일한 이유는 5.10이 Perl의 안정 버전이 될 것임을 테스트하는 것입니다. 아무도 그것을 지금 사용하고 있지 않아야합니다.

+0

:] 나는 동의한다. 아무도 * 5.10 이하를 사용해서는 안된다. 아마도 5.14 ... 그렇지만 무엇이 있어야하고 무엇이 보통 대단히 다른가? 나는 레거시 코드를 많이 다루고있다. 제가 일하는 서버 중 일부는 여전히 5.004를 사용하고 있습니다. – harleypig

+0

오른쪽. 고통스럽게 고대 버전의 Perl을 사용하는 이유를 (단지) 이해할 수 있습니다. 하지만 불안정한 개발 버전을 사용하는 이유를 이해할 수 없습니다. –

+0

제 사과 ... 5.9를 사용하지 않고 있습니다. 알고있는 이유는 ... 5.14 상자에서 uninit이 실패한 이유를 조사했을 때 uninit가 5.10에서 제거 된 것을 발견했습니다. 명령을 생성하는 코드는 '$] <5.010'을 검사하므로 '5.9 이하'를 생각하는 경향이 있습니다. 죄송합니다. – harleypig

2

코드를 테스트하는 것처럼 보이지 않습니다. 코드가 컴파일되는지 확인하기 만하면됩니다. Test :: More (실제 테스트를 쉽고 재미있게 작성), Test :: Class (매우 큰 테스트 스위트를 더 쉽게 다루도록), Devel :: Cover (코드의 어느 비트인지 확인하기) 귀하의 테스트에 의해 커버되고 그렇지 않은 테스트).

+0

가능하면 항상 코드를 테스트하고 있습니다. 나는 코딩 기술 향상의 일부로 생각하지 않았습니다. 이제 Test :: Module 패밀리를 다른 조명에서 살펴볼 것이다. – harleypig

+0

코드를 테스트하는 것이 불가능할 경우 (가능한 경우 테스트 할 때 암시하는) 코드를 작성할 수 있다면 다시 작성해야합니다. 나는 이것이 실용적이지는 않다는 것을 알고 있습니다. 예를 들어 당신이 어떤 외부 서비스와 이야기하고있는 경우입니다. 그러나 그것은 항상 당신이해야 할 일입니다. 테스트 할 수없는 외부 인터페이스를 처리해야하는 경우 나머지 인터페이스에서 코드를 분리하여 해당 인터페이스를 조롱하고 가능한 한 많이 테스트 할 수 있도록하십시오. 그리고 Devel :: Cover를 봐야합니다. 과거에 내 직업을 구했어. – DrHyde