JSHint의 '+'오류 이전에 잘못된 줄 바꿈 설명


125

누군가 JSHint가 다음에 대해 불평하는 이유를 설명해 줄 수 있습니까?

window.location.href = String1
    + '#'
    + Sting2
    + '='
    + String3;

오류와 함께 Bad line breaking before '+' error

이 오류 는 다음과 같이 설명 된 laxbreak 옵션 으로 구성 할 수 있음을 이해합니다.

이 옵션은 코드에서 안전하지 않은 줄 바꿈에 대한 대부분의 경고를 표시하지 않습니다. 쉼표 우선 코딩 스타일에 대한 경고를 억제하지 않습니다. 이를 억제하려면 laxcomma를 사용해야합니다 (아래 참조).

이 설명은 꽤 간결하고 왜 이런 식으로 줄을 끊는 것이 처음부터 나쁘거나 느슨하게 간주되는지 궁금합니다.

나는 여기서 거룩한 전쟁을 시작하려는 것이 아니라 JSHint 사람들이 왜 이것이 나쁘다고 생각하는지에 대한 객관적인 대답을 찾고 있다는 것을 명심하십시오. 이 방식으로 줄 바꿈을 할 때 특정 통역사에게 잘못 될 수있는 것이있는 경우.


6
JSHint에 따르면 단지 "나쁜 스타일"이라고 생각합니다. 선행 쉼표를 사용하면 동일한 효과를 얻을 수 있습니다. 가독성을 위해 적어도 줄 끝에 +를 사용하여 다시 작성합니다.
Iwan

28
Bummer. 이 스타일은 특히 좁은 창에서 코드를 볼 때 여러 줄 문자열과 함께 사용하기에 가장 읽기 쉬운 스타일이라고 생각합니다.
Lambart

12
문장을 계속하는 토큰으로 이어지는 것은 코드 블록의 왼쪽 부분에서 사물을 정렬하고 시각적으로 연속성을 표현하는 데 도움이됩니다. 특히 빠르게 스캔하는 경우 구조적 요소를 찾을 수 있습니다. 확실히 실행 가능하고 합리적이며 객관적으로 나쁜 스타일이 아닙니다. 그러나이 규칙을 적용하기위한 코드 무결성 문제가 있습니다. 이는 안타깝습니다.
Adam Tolley 2014 년

1
@AdamTolley 나는 완전히 동의하며 이것에 대해 물었을 때 이것이 FUD라는 것을 확인하는 것처럼 보였습니다. 그것은 "메타 효과"이후에 조사를 받았다. 그리고 그 조사는 이것이 실행 가능하고 합리적임을 확인하는 것 같았습니다.
HostileFork은 그나마 신뢰 SE 말한다

2
요즘 ( JSHint 2.9.4 ) 오류 메시지는 '+'앞에 잘못된 줄 바꿈입니다. 독자는 이것을 표현 경계로 해석 할 수 있습니다.
RhinoDevel

답변:


107

자동 세미콜론 삽입 에 대한 가정에 영향 을 줄 수 있는 문을 피하는 스타일 가이드 입니다.

아이디어는 표현이 거기에서 끝나거나 다음 줄에서 계속 될 수 있는지 여부를 줄 끝까지 명확하게 만드는 것입니다.


6
답을 주셔서 감사합니다. 오류에 대한 근거가 있으면 JSHint를 달래기 위해 변경 사항을 정당화하는 것이 훨씬 쉽습니다.
James McMahon

36
자동 세미콜론 삽입은이 스타일이 적용되는 합리적인 합리적입니다. 그러나 표현식이 괄호 안에 있으면 경고가 지속됩니다. 그리고 그것은 나를 슬프게합니다.
Ben Hyde

23
두 번째 @BenHyde이며 일반적으로 코드를 훑어 보면서 +. 다음 줄에 추가 될 것인지 확인하기 위해 각 줄의 맨 끝으로 점프하는 것보다 왼쪽의 단일 열을 따라가는 것이 눈에 더 쉽고 오류 발생 가능성이 적습니다. 문법도 덜 어색합니다. "118 행에 117이 추가됨"대 "117 행에 118 행이 추가됩니다."
worc

9
개인적으로 줄 끝에 연산자 (및 쉼표)를 추가하는 것을 싫어합니다. 여러 줄로 된 부울 문 (끝이 아닌 줄의 시작 부분에있는 && 또는 ||)에서 논리를 읽는 것이 더 쉬우 며, 쉼표로 구분 된 목록을 다른 여러 줄 문과 구분하여 빠르게 구분할 수 있습니다. 반점. laxbreak에 대한 신에게 감사합니다
aaaaaa

2
@Barney 자동 세미콜론 삽입에 대한 우려와 내 매우 유사한 질문에 대한 답변을 어떻게 조정합니까? 이 형식의 정당한 위험은 무엇입니까? 나에게 그것은 스캔 가능성에서 우위를 가지고 있습니다.
HostileFork은 그나마 신뢰 SE 말했다

8

Jshint는 새 줄에서와 달리 줄 바꿈 앞에 +를 사용하면 잘못된 줄 바꿈으로 플래그를 지정하지 않습니다. 이렇게 :

window.location.href = String1 +
'#' +
Sting2 +
'=' +
String3;

10
이것은 심지어 하나의 질문에 대답하지 않습니다. 왜 그렇게 많은 찬성 투표를합니까?
Lambart

4
아마도 이것은 jshint 설정을 변경하지 않고도이 문제를 해결하는 한 가지 방법입니다.
asulaiman

4
실제로 질문에 대한 답은 아니지만 귀중한 정보를 제공하므로 주석이어야합니다.
tomtomssi

3

질문에 대한 직접적인 대답은 아니지만 규칙을 유지하고 경고를 수정하려는 인터넷 검색에서이 문제를 접하는 사람에게는 다음이 유용 할 수 있습니다.

Notepad ++를 사용하는 경우 (예 : JSLint 플러그인 사용) 다음 검색 및 바꾸기를 사용하여이 문제를 해결할 수 있습니다.

  • 무엇을 찾다: (\r\n|\n|\r)( *)\+
  • 다음으로 바꾸기 : (첫 번째 및 마지막 공백 포함) +$1$2 
  • 검색 모드 : 정규식

(Windows에서만 테스트되었지만 정규식은 Unix 또는 Mac OS 줄 끝에서도 작동해야합니다.)

비슷한 일에 대한하려면 ||, &&, ==, !=, <=또는 >=대신을 +, 이것을 사용 :

  • 무엇을 찾다: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • 다음으로 바꾸기 : (첫 번째 및 마지막 공백 포함) $3$1 $2 

5
서식을 변경하려는 사람들에게 유용합니다. 그러나 이것은 (암묵적인) 질문에 완전히 답하지 못합니다. "왜 이런 식으로 줄을 끊는 것이 애초에 나쁘거나 느슨하게 여겨지는지 궁금합니다."
Lambart

이 글을 게시 한 이유를 설명하는 메모를 상단에 추가했습니다.
Steve Chambers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.