2009-08-12 3 views
13

perlstyle 포드 상태 세미콜론세미콜론 앞에 공백을 두는 것이 나쁜 이유는 무엇입니까?

내가 그것에 대한 이유를 볼 수 있습니다 전에

공간이 없습니다. 나는 영어로 두 부분으로 된 문자 앞에 '?', ';', '!'와 같은 공백이 있어서는 안된다는 것을 알고 있지만 Perl 코드를 작성할 때 이것이 왜 규칙이되어야하는지 알지 못합니다.

나는 개인적으로 세미콜론 앞에 공백을 사용합니다. 내 이유는 진술이 좀 더 명확 해지기 때문이다. 나는 그것이 매우 강한 이유는 아니라는 것을 알고 있지만 적어도 그것은 이유 다.

print "Something\n with : some ; chars"; # good 
print "Something\n with : some ; chars" ; # bad?? 

두 번째로 나빠진 이유는 무엇입니까? 설명 섹션의 첫 번째 단락에서

+1

왜 downvotes? 질문에 잘못된 것이 없습니다, IMO. –

+0

많은 자바 스크립트를 사용하고 있습니까? – innaM

+0

안녕하세요, 저는 세미콜론 이전의 익명 공간에 익숙하지 않습니다. 세미콜론 이전의 공간도 마음에 들어요. 내 눈은 코드를 쉽게 파싱합니다. 한 사람의 고기는 다른 사람의 독입니다. 내가 혼자가 아니란 것을 아는 것이 좋다. 고마워. :) –

답변

17

:

각 프로그래머는 물론, 포맷에 관해서 자신의 환경 설정을해야하지만 쉽게 프로그램을 만들 것입니다 몇 가지 일반적인 지침이 있습니다 읽고, 이해하고, 유지한다.

그리고

는 설명 섹션의 세 번째 단락에서 :

코드의 미학에 관한

래리가에 대한 것을 여러 줄 블록의 닫는 중괄호가해야 강하게 관심있는 유일한 대해, 레이아웃 구성을 시작한 키워드와 일렬로 정렬하십시오. 그 외에도, 그는 그다지 강하지 않은 다른 선호도를 가지고 있습니다 :

이것은 스타일을위한 Perl 프로그래머 간의 단순한 관습입니다. 마음에 들지 않으면 무시할 수 있습니다. 나는 이것을 Sun's Java Style guidelines 또는 the suggestions for indenting in the K&R C book과 비교할 것입니다. 일부 환경에는 자체 지침이 있습니다. 이것들은 단지 Perl을위한 제안 일뿐입니다. 이 질문에 Jon Skeet said in a deleted answer으로

:

이 같은 다른 사람이 그 다음 당신을위한 가장 읽을 수있는 형태로 쓰는 것과 일치하지 않을 수 드리겠습니다합니다. 다른 사람들과 코드를 공유 할 가능성이 높다면, 특히 코드 작성에 도움이된다면, 일관된 스타일에 동의하는 것이 좋습니다.

4

이것은 규칙이 아니며 Larry Wall의 스타일 선택 중 하나입니다. 스타일 기본 설정은 코드를 유지 관리하는 사용자와 다른 사용자가 정보를 시각적으로 신속하고 정확하게 흡수하는 데 도움이되는 정보입니다.

이 경우 Larry에 동의하고 세미콜론이 보이기 전에 공간을 찾고 내 독서 과정을 방해하지만 자신과 같은 사람은 정반대의 것을 찾을 수 있습니다. 물론 제가 좋아하는 스타일을 사용하는 편이 좋겠지 만, 책에 관한 법은 없습니다.

아직.

8

이것은 내 의견 일 뿐이지 만 사람들은 다른 방식으로 코드를 읽음으로써 "나쁜"것은 상대적인 것임을 알고 있습니다. 코드를 본 유일한 사람이라면 원하는대로 할 수 있습니다.그러나 많은 Perl 코드를 살펴본 결과 두 사람이 구문 분리 기호 앞에 공백을 넣는 것을 보았습니다.

다른 사람들이하고있는 것과는 아주 다른 것을하고있을 때, 두뇌가 똑같은 방식으로 그것을 보지 못하기 때문에 그 차이는 다른 사람들에게 두드러집니다. 반대로, 다르게 작업하면 동일한 이유로 다른 사람들의 코드를 읽을 수 없게됩니다. 예상 한 시각적 패턴을 볼 수 없습니다.

내 표준은 시각적 인 혼란을 피하는 것이며, 문맥의 섬을보아야한다는 것입니다. 눈에 띄는 것만 큼주의를 끌기는하지만, 보통 한 줄에 하나의 문장 만 있기 때문에 문장 분리 기호에주의를 기울일 필요가 없습니다. 내가 실제로 볼 필요가없는 것은 시각적 배경으로 희미 해져야합니다. 나는 두드러지는 세미콜론을 좋아하지 않는다. 저에게 세미콜론은 사소한 문제이며, 눈이 보이는 그룹의 수를 줄이고 싶습니다.

구두점이 중요 할 때도 있습니다. 그 중 눈에 띄기를 원하면이 경우 세미콜론을 밖으로 가져와야합니다. 나는 종종 예를 들어, 조건 연산자와 함께이 작업을 수행 :

my $foo = $boolean ? 
      $some_long_value 
        : 
      $some_other_value 
        ; 

새 코더 경우, 저주 문 분리기가 당신의 인생에 큰 고통이 될 수도 있지만, 당신의 고통은 시간이 지남에 따라 변경됩니다 입력. 나중에 한 가지 통증을 완화하기 위해 선택한 스타일 유행이 통증이됩니다. 궁극적으로 구문에 익숙해집니다. 더 나은 질문은 왜 두드러지지 않을까요? 더 큼직하고 구두점이 큰 좋은 프로그래머 글꼴을 사용하고 있다면 더 쉽게 볼 수 있습니다.

코드에서 코드를 작성하기로 결정한 경우에도 필자는 사람들이 작성하는 과정에서 이상하게 생각합니다. 나는 Stackoverflow 전에 그것을 실제로 알아 차리지 못했지만 대부분의 구두점 앞에 공백을 넣는 프로그래머가 많다.

+3

유명한 Perl 저작자는 조건 연산자 (http://perldoc.perl.org/perlop.html#Conditional-Operator)를 "삼항 연산자"라고 부르면 아기 낙타 외침. – chaos

+2

예. ? : * a * ternary 연산자이지만'+''이진 연산자 '또는'!' "단항 연산자"를 호출하는 것과 같은 일을합니다. – chaos

+2

혼돈의 가장 좋아하는 주제! 팝콘 가져올 게. – innaM

2

글쎄, 그건 스타일, 규칙이 아닙니다. 스타일 규칙은 정의상 상당히 임의적입니다. 왜 세미콜론 앞에 공백을 두어서는 안 되는가에 대한 이유는 단순히 그것이 완료된 방법이기 때문입니다. Perl뿐만 아니라 C와 C 및 C와 같은 새로운 C 및 다른 C++ 영향 언어는 C++, C#, Objective C, Javascript, Java, PHP 등의 언어로 다시 이동합니다.

1

사람들 기대하지 마라. 네가 할 때 이상하게 보인다.

+0

중요한 것은 코드를 볼 수있는 사람들이 누구인가하는 것입니다. – ysth

4

다른 사람들이 말했듯이 이것은 스타일의 문제이며 어렵지 않고 빠른 규칙입니다. 예를 들어, 나는 들여 쓰기를위한 4 개의 공백을 좋아하지 않습니다. 나는 블록 레벨 들여 쓰기를위한 실제 탭/일종의 프로그래머의 일을위한 공간이므로, 나는 그 섹션을 무시한다. perlstyle.

나는 또한 스타일에 대한 이유가 필요합니다. 왜 당신이 주어진 스타일을 선호하는지 분명하게 말할 수 없다면 그 규칙은 무의미합니다. 이 경우 그 이유는 쉽게 알 수 있습니다. 필요하지 않은 공백은주의를 끌거나 더 쉽게 읽을 수있게하기 위해 사용됩니다. 따라서 세미콜론에 특별한주의가 필요합니까? 모든 표현식 (제어 구조 제외)은 세미콜론으로 끝나며 대부분의 표현식은 한 줄에 들어갑니다. 예상되는 사건에주의를 환기시키는 것은 프로그래머들의 시간과 관심을 낭비하는 것처럼 보입니다.

open my $fh, "<", $file 
    or die "could not open '$file': $!"; 

지금, 우리는 공백을 사용하는 두 번째 이유는 뭔가 쉽게 만들 수 있습니다 : 대부분의 프로그래머는 한 줄에 끝나지 않았다는 사실에주의를 호출하는 식의 연속이다 라인을 들여 이유입니다 읽다.

foo("bar") ; 

쉽게는 내가 세미콜론 내주의를 환기하기 때문에 읽기 어렵 주장을 만들 것

foo("bar"); 

보다 읽기, 나는, 대부분의 경우, 그렇지 않은가요 파일 형식이 올바르다면 세미콜론을주의하십시오. 물론 Perl은 신경을 써야하고, 내가 빠진다면 Perl은 그것에 대해 말해 줄 것이다.

0

정말 좋아하지 않습니다. 그러나 당신이해야하는 개인적인 결정과 단체 협약은 100 %입니다.

4

여유 공간을 두십시오. 중요한 것은 당신이 일관성을 유지한다는 것입니다. 일관성을 통해 오류를 더 쉽게 발견 할 수 있습니다.

흥미로운 코딩 스타일이 있습니다. 뒤에 오는 선의 시작에 (들여 쓰기 후에). 그것은 내 취향이 아니지만 일관성있는 한 오래 작동합니다.

업데이트 : (나는 하지 옹호을) 그 코딩 스타일의 예 :

; sub capture (&;*) 
    { my $code = shift 
    ; my $fh = shift || select 
    ; local $output  
    ; no strict 'refs' 
    ; if (my $to = tied *$fh) 
     { my $tc = ref $to 
     ; bless $to, __PACKAGE__ 
     ; &{$code}() 
     ; bless $to, $tc 
     } 
     else 
     { tie *$fh , __PACKAGE__ 
     ; &{$code}() 
     ; untie *$fh 
     } 
    ; \$output 
    } 

수비측은 여기에서 찾을 수 있습니다 : http://perl.4pro.net/pcs.html.

(2011 업데이트 : 해당 페이지는 AWOL 갈 것 같다, 구출 사본이 여기 볼 수 있습니다 : http://ysth.info/pcs.html)

+3

Aaaaarghhhhhhh! 라인의 시작 부분에 쉼표와 세미콜론은 스타일 전쟁을 의미합니다 !!! ;-) –

+2

와우. 저 블록이 내 눈을 피로 만들었 어. 나는 라인 끝에 세미콜론의 표준 규칙을 너무 심어 놓았다. 나는 아마도 이런 코드를 상속 받았다면 잠시 동안 울기만하면 될 것이다. – Eric

+0

구조 된 복사본에 대한 링크가 끊어졌습니다. – MetaEd

0

코드 스타일이 읽기 및 유지 코드를 쉽게하기 위해 규칙 단지 집합입니다. 진짜 나쁜 스타일은 없지만 일부는 다른 스타일보다 더 많이 받아 들여집니다. 그리고 그들은 물론 "종교적 전투"(중괄호 스타일이라고 부르는 ;-))의 원천이기도합니다.

실생활의 비교를 위해 빨간색, 노란색/주황색 및 초록색으로 표시된 조명이 있습니다. 색상의 심리적 효과에도 불구하고 자주색, 갈색 및 분홍색을 사용하는 것은 잘못이 아니지만 교통 사고가 적은 색상에 익숙하기 때문에.

1

내가 인용 한 이유는 프로젝트 내에서 일관성을 유지하는 것입니다. 필자는 대다수의 프로그래머가 공간을 삽입하지 않겠지 만 한 명의 프로그래머는 프로젝트에 참여했습니다. 그가 결함에 대해 작업하는 경우 그는 그가 검토하는 코드 행에 정기적으로 공간을 추가 할 수 있습니다. 그렇지 않으면 스타일 가이드에 다르게 말하는 것이 없습니다.

사용중인 시각적 비교 도구는이를 판별 할 수 없으므로 하나만 변경되어 검토하기가 어려울 때 대량의 회선 변경 사항을 표시하십시오. (이것이 더 나은 diff 도구를위한 인수가 될 수 있지만 임베디드 작업은 도구 선택을 더 제한하는 경향이 있습니다).

아마도 적절한 지침은 세미콜론에 원하는 형식을 선택하는 것이지만 명령문 자체를 수정하지 않으면 다른 사람을 변경하지 않는 것입니다.

관련 문제