스칼라 문장을 구분하기 위해 세미콜론을 사용해야합니까?


9

Java에서 세미콜론으로 명령문을 구분하는 데 사용되므로 자연스럽게 스칼라 코드에서도 수행합니다. 또한 한 문장이 끝나고 다른 문장이 시작되는 곳이 분명하기 때문에 코드를 읽기가 쉽다고 생각합니다. 그러나 여러 번 스칼라 ​​코드를 SO에 게시하면 세미콜론을 제거하기 위해 코드가 편집됩니다.

  1. 세미콜론을 사용해야합니까? "공식적인"지침 또는 코딩 스타일이 있습니까?
  2. 세미콜론이 필요한 경우가 있습니까? 그렇지 않으면 코드가 모호합니까?

5
하스켈은 당신에게 아무것도 가르쳐주지 않았습니까? ; P 불필요한 구문을 제거합니다. 세미콜론은 같은 줄에서 여러 절 / 구문을 구분하는 데만 사용해야합니다.
Jimmy Hoffa

@JimmyHoffa Haskell은 구문이 아름답고 일관성이 있어야한다고 가르쳐주었습니다. :).
Petr Pudlák

2
그 첫 번째 부분은 스칼라 스 니펫을 볼 때마다 화가 나게하는 이유입니다.
Jimmy Hoffa

답변:


9

공식적으로 "올바른"방법은 없지만 대부분의 실무자들은 가능한 한 세미콜론을 생략합니다 (따라서 많은 사람들이 세미콜론을 반사적으로 제거합니다).

언어는 진술을 끝낼 필요성을 잊게 만들려고 매우 열심히 노력합니다. 불행하게도, 그것은하지 않습니다 매우 그래서 세미콜론, 또는 괄호의 추가 세트, 또는 이와 유사한 "힌트"원치 않는 의미를 방지 할 필요가있는 다양한 복잡한 경우가 있습니다 성공. 이러한 상황은 거의 드물게 일반적으로 생각할 필요가 없습니다. 의견에 따라 방어 적으로 구두점을 찍어야하는지 (내 생각대로) 아니면 문제가 발생할 때까지 절대로 구두점을 찍지 않아야하는지 (여러분의 대다수의 사용자들이 생각하는) 의견이 다릅니다. 궁극적으로, 당신이 배신자인지 모델 시민인지의 여부에 달려 있습니다.


고마워, 당신은 아마도 그러한 복잡한 상황의 예 (또는 몇 가지)를 줄 수 있습니까?
Petr Pudlák

3
나는 이것을 물어볼 까봐 두려웠다 ... Scala의 프로그래밍은 나를 놀라게했던 몇 가지를 나열하고있다. 그러나 나는 지금 나와 함께 책을 가지고 있지 않다. 그리고 나는 세부 사항을 잊었다. 그것이 내가하려고하는 요점입니다. 만약 내가이 예외적 인 상황을 기억할 수 있다면 그렇게 나쁘지는 않을 것입니다. 그러나, 실제로 세미콜론을 생략 할 수 있는지는 항상 불확실합니다 .
Kilian Foth

허. 스칼라에 세미콜론이 없으면 나에게 상처를 준 상황에 한 번도 본 적이 없습니다. 나는 그들을 포함 하지 않습니다 . 나는 또한 취미와 같은 것들에 대해서만 Scala를 프로그래밍 했으므로 조만간 물릴 것입니다.
KChaloux

4

사용하는 언어를 얼마나 이해하고 싶습니까? 당신은 그것의 장점을 연주하고 싶습니까? 스칼라의 구문은 명확하고 간결한 코드를 장려합니다. 이를 활용하여 스칼라 파서에 문제가 발생하는 몇 가지 엣지 사례는 유익하며 (즉, 스칼라에 대해 배우고 피하는 방법을 배우면 스칼라에 대해 더 많이 배우게 됨) 점차적으로 수정됩니다 (예 : 접미사 표기법 ). 세미콜론을 방어 적으로 사용하면 이러한 문제에 대해 배울 필요가 없지만 실제로 이것을 좋은 것으로 간주합니까? 이러한 문제에 대한 픽스는 일반적으로 다른 의미를 갖지만 이러한 가능성을 놓치게됩니다.

킬리안이 인정한 것처럼 대부분의 스칼라 개발자는 기본적으로 세미콜론을 생략한다는 점도 고려해야합니다. 관용 스칼라를 직접 사용하지 않으면 어떻게 다른 사람의 코드로 작업 할 것으로 예상됩니까? 당신은 그것이 필요한 것보다 훨씬 더 어렵다는 것을 알게 될 것입니다.

Scala 파서의 이러한 기능이 깨끗하고 재사용 가능하며 기능적인 (fp 의미로) 코드를 장려하도록 선택되었다는 점을 강조 할 수 없습니다. 접두사 연산자 구문을 예로 들어 보자. 개발자가 함께 잘 구성된 간단한 단일 목적 메소드를 사용하여 클래스를 제공하도록 장려합니다. 스칼라의 수집 라이브러리는 그것이 얼마나 아름답게 작동하는지 보여줍니다. 이것을 받아들이는 고전적으로 훈련 된 Java 개발자는 더 나은 습관과 코드에 대한 새로운 사고 방식을 개발하는 경향이 있습니다. 친숙한 점과 괄호를 고수하는 사람들은 빠질 것입니다. 나는 너무 소심한 사람들도 세미콜론을 버리지 않는다고 주장한다.


8
-1 그렇습니다. 컴파일러로 인해 언어를 배우기 위해 "강제로"설정되면 C ++에서는 스타일이 떨어졌습니다. 또한 어설 션 뒤에 증거가 거의 없으므로 그러한 편향 된 톤으로 대답하고 싶습니다.
Telastyn

(1) @Telastyn이 말한 것-정말로 이런 식으로 언어를 배우고 싶다면 고양이를 사십시오. 그들은 교육에 관심이 있기 때문에 키보드에 앉아있는 것을 좋아합니다. (2) 생략 세미콜론이없는 것도 포기 세미콜론은 이러한 사실 숨기고, 어떤 경우 - 깨끗한 스타일 또는 격려와 함께 할을 수 있습니다 별도의 순차적으로 실행하고, 가능한 부작용을 가지고 있습니다. 세미콜론을 그대로두면이를 인식하고보다 기능적인 스타일을 선호합니다. 따라서 결정은 순전히 구문입니다 (예 : 스타일, 구문 분석 등).
Eli Barzilay

"언어를 배워야한다"는 말은 없지만, "저자가 원하는대로 언어를 사용하는 것"과 "대부분의 다른 개발자들이 사용하는 것처럼"은 중요한 참조 점입니다. 여러 개발자간에 일관된 스타일을 유지하는 것이 유용합니다. 이 답변과 @Killan Foth의 답변에서 관리자와 대부분의 개발자는 세미콜론을 외부인으로 간주합니다.
Sarah Messer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.