의 문제는 디자인 unless 에서는 Perl

에서는 Perl 프로그래밍 언어에서와 같이,다른 많은 프로그래밍 언어를 디자인 if:

▶ Run
#!/usr/bin/perl

my $value;

if (!defined $value) {
    print 'value must be defined';
}

if 이 수행하는 경우 true 를 반환합니다.

지만,또한 디자인 if 도 역 디자인 unless. 체 unless실행 는 경우에는 false 를 반환합니다. 여기에는 코드는 정확히 동일하게 작동한 것으로, 그러나 사용하여 작성 unless:

▶ Run
#!/usr/bin/perl

my $value;

unless (defined $value) {
    print 'value must be defined';
}

에서 보면 이러한 두 가지 예로,우리는 사용하는 경우 unless 코드를 적게 사용한 구조물(지 않을 작성해야 !),하지만 코드가 더 이상 이상 3 자입니다.

또한 내가 더 인쇄,사용할 때 unless 중 하나 있을 수 있습니다 문제입니다. 상상해 보충 우리의 코드 unless. 지금 그는 일부 수행 작업할 때 변수 $valueundef. 았다 작업을 수행하는 활동에 의 경우 반대의 상황 때 $value 일 은 아무것도 하지만 undef. 연 반응이 이 상황에서는 추가 else단위:

▶ Run
#!/usr/bin/perl

my $value;

unless (defined $value) {
    print 'value must be defined';
} else {
    print 'value is defined';
}

그것을 밖으로 작동 코드 및 이 코드는 쉽게 쓰이지만,그것은 나쁜 코드입니다. 이 코드는 해결하기 위해 열심히 노력하고 이해할 수 있습니다. 대신,코드를 작성해야에 직접:

▶ Run
#!/usr/bin/perl

my $value;

if (defined $value) {
    print 'value is defined';
} else {
    print 'value must be defined';
}

불행하게도,원래 코드를 사용하 unless한 다음,거기에 좋은 유혹하지 않으로 변경 if, 고 쓰기 else. 하지만 이런 나쁜 코드입니다.

그것은 믿고 쓸 수 있는 능력 unless-else 은 일반적으로 과오에서는 언어를 디자인합니다. 한 디자인 실패한다면,대신합니다.

unless뿐만 아니라, if 에서 사용할 수 있습 Postfix 형태:

▶ Run
#!/usr/bin/perl

my $value;

print 'value must be defined' unless defined $value;

을 사용할 때 후 표기 unlessunless-else 발생하지 않으로서 이 버전 else 일반적으로 어디를 입력합니다.

총 추천합니다. 사용하지 않는 디자인 unless ( $bool ) { ... },그것으로 리드 의 악화를 가독성의 코드입니다. 의 사용에 대한 unless 후위의 변형이 엄격한 추천이 없다. 를 사용하거나지 Postfix unless 의 문제가 계약에 팀에 문의 맛이 있습니다. 저자 선호하는 결코 를 사용하지 않는 unless.

다른 기사