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.