루비에서 괄호를 안팎에 두나요? [닫은]


답변:


95

루비 스타일요소에서

루비는 일반적으로 괄호를 생략하고 이러한 유혹에 저항 할 수 있습니다.

괄호를 사용하면 코드를 더 쉽게 따라갈 수 있습니다. 일반적인 Ruby 스타일은 다음과 같은 경우를 제외하고 사용하는 것입니다.

  • 항상 빈 괄호는 생략하십시오.
  • ERb 구분 기호로 둘러싸인 단일 명령에서 괄호를 생략 할 수 있습니다. ERb 마커는 코드를 여전히 읽을 수 있는지 확인합니다.
  • 단일 명령 및 단일 단순 인수 인 행은 괄호없이 작성할 수 있습니다. 개인적으로 저는이 작업을 점점 더 적게 수행하지만 여전히 완벽하게 읽을 수 있습니다. 여러 인수가 있고 괄호가없는 일반 루비 코드에서 한 줄을 좋아하지 않는 경향이 있습니다.
  • 많은 Ruby 기반 도메인 특정 언어 (예 : Rake)는 문장에보다 자연스러운 언어 느낌을 유지하기 위해 괄호를 사용하지 않습니다.

27

나는 미래를 돕기 위해 괄호를 주석으로 사용합니다 ... 현재의 나보다 뇌 세포가 적을 가능성이 큰 사람 :-)

2 년 전에 작성한 코드를보고 오해하는 것보다 더 나쁜 것은 없습니다. 그래서 수정하는 동안 무언가를 깨뜨리는 것입니다.

괄호가 앞으로 몇 분 (또는 몇 시간) 안에 미래를 구할 수 있다면 진술을 명확하게하기 위해 필요한만큼 많은 정보를 입력 할 것입니다.


2
+1 "나는 미래를 돕기 위해 괄호를 주석으로 사용합니다 ... 현재의 나보다 뇌 세포가 적을 가능성이있는 사람 :-)"그게 정말 사실이며, 내가 왜 그렇게하는지 정확히 알고 있습니다. 또한 내 코드를 사용해야하는 나를 팔로우하는 모든 사람에게 자비를 베푸는 것입니다. 요컨대, 유지 관리입니다.
틴 맨

9

t.column 또는 has_many in rails와 같은 DSL 같은 작업을 할 때 나는 그것들을 제외합니다. 나머지 시간에는 일반적으로 명확성이 떨어지며 아마도 균등하게 분할됩니다.


8

나는 두 가지를 모두 수행한다고 생각하지만 가독성을 높이고 모호해 보이는 진술을 피한다면 확실히 유지합니다.


8

함수 호출에서 의미하는 경우 항상 읽기 쉽기 때문에 항상 괄호를 넣습니다. 조건 (if, while)을 의미하는 경우 필요한 경우에만 괄호를 넣습니다.


2
나는 동의한다. 예를 들어 PHP에서는 $ 접두사로 var를 빠르게 찾을 수 있습니다. javascript에서 괄호 ()로 함수를 재구성 할 수 있습니다. Ruby에서 var 또는 func (괄호 없음)의 차이점을 항상 쉽게 알 수있는 것은 아닙니다.

7

가능한 한 그것들을 빼내려고합니다. 나는 그것이 코드를 읽기 쉽게 만든다고 생각한다 (일반적으로 말하면).


4

일반적으로 어느 쪽이든 더 읽기 쉽습니다.

하지만 다른 매개 변수 안에 함수 호출을 중첩 할 때 항상 괄호를 사용합니다.


2

assert_equal과 같은 단언을 할 때 그것들을 제외하는 경향이 있습니다. 아마도 도메인 특정 언어와 유사하게 만드는 것입니다.


1

오랫동안 프로그래밍을 해왔다면 괄호를 추가해야하는 "가려움"이있을 것입니다. 많은 경우에 그럴만 한 이유가 있습니다.

제 생각에는 코드가 눈에 더 쉬우 며 아직 문제가 발생하지 않았습니다. 괄호가 필요하다면 디버깅 스크립트를 실행하기 전에 미리 알게 될 것입니다.


4
"선생님이 피할 수 없다고 말씀하셨습니다." 디버그하기 어려울 수 있습니다. 모호한 매개 변수 할당을 피하기 위해 사용하는 것이 좋습니다.
틴 맨

1
IMO는 함수 인수 주위에 괄호를 생략해야하는 끔찍한 이유입니다.
Marcello Romani 2015 년

2
괄호가 아닌 군중에게 말하면서 저는이 문제에 부딪 혔습니다. 요 if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine 전에 저는 루비를 몇 주 동안 배웠고 제가 일하는 곳에서는 가능한 한 적은 양의 문자를 사용하고 다른 언어에서 온 경우 학습이 있습니다. 묵시적 해시, 기호 배열, 기호를 함수에 전달할 때를 알 수있는 곡선입니다. 저는 팬이 아닙니다.
Mega Man

@MegaManif owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev는 and같은 연산자 우선 순위가없는 &&
메가 남자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.