2013-01-15 4 views
-1

더 나은 코드가되고 싶습니다. 코드를보다 명확하고 읽기 쉽게 만들어야합니다.루비/레일에 const 변수를 선언하는 방법

내가 c/C++에서 본 한 가지는 로컬 변수에 const를 사용하는 것입니다. 나는 일단 변수가 설정되면 함수/메소드에서 변경되지 않는다는 것을 독자에게 알려주는 데 많은 가치가 있다고 생각합니다.

궁금한데 .... 지역 변수가 const임을 나타내는 방법이 있습니까?

#for example 
sql = "select * from table1 where status = #{iStatusId}" 
connection.execute(sql) 

SQL은이 방법에서 변경되지 않습니다. 그것을 표시 할 수 있습니까? 나는 희망을 ...

확인은 .. 그 나쁜 예,하지만 나는 포인트가되어 생각 :)

편집 : 은 내가 iStatusId 비트는 매개 변수입니다 ..는 SQL 동적 약간의 추가 메서드에 전달됩니다.

EDIT2 : 나는 Google에서이 모든 작업을 마술 번호 교체에 대해 이야기합니다. 그건 생각할 것도없고 내가 MACRO라고 생각하는 것입니다. 접촉이 쉽습니다 ... 나는 const를 찾고 있습니다. 그들은 매우 다른 것들입니다.

MY_CONSTANT = 1234 

을 그러나 경고를 발행합니다하지만, 일정이 가능 덮어 쓰기 : 다음은 잘 작동 할 수 있도록

+0

당신이 인터넷 검색을 시도 했습니까? – rudolph9

+0

방법의 크기가 적절하면 검사를 통해 분명해질 것입니다. 나는 목표에 대한 동정심을 갖고 있지만, IMO는 다른 많은 것들이 훨씬 더 중요합니다. –

+0

무엇처럼 @DaveNewton? – baash05

답변

-1

상수는, 대문자로 시작합니다.

-2

루비의 Const은 엄격하게 논리적이지 않습니다. "모든"변수는 실제로는 객체에 대한 포인터를 가리기위한 것이므로 const의 c 패러다임으로 캐스팅하는 것은 의미가 없습니다.

과 같습니다. const void * value = 'bla';

여전히 값 [1]을 (를) 변경할 수 있습니다.

나는 여기에서 틀리게 입증되고 싶다.

1

이 같은 것을 사용하여, 당신이 설명하는 논리를 요리만큼 쉬운 것입니다 : 나는,하지만, 데이브 뉴턴에 동의하는 경향이

class Thing 

    def unchangeable_attribute 
     @unchangeable_attribute 
    end 

    def unchangeable_attribute=(value) 
     raise SomeError if @unchangeable_attribute 
     @unchangeable_attribute = value 
    end 

end 

을 나는 힘든 시간을 좋은 상상을 가지고 이런 경우에 사용 사례 ...

+0

다른 언어에서는 const가 작고 빠른 코드로 컴파일됩니다. 그들은 당신의 변수를 사용하여 다른 사람들이 혼란에 빠지게 만듭니다. 대부분의 동료들이 "젊다"는 것이 나를 도와줍니다. – baash05

+0

http://www.gamedev.net/topic/276374-c-why-use-const/ – baash05

+0

맞습니다 ... "더 작고 빠른 코드로 컴파일 된"가능성이있는 예외를 제외하고는이 역시 마찬가지입니다. 예를 들어, 강력한 테스트 스위트와 같이 달성하려는 목표를 달성하는 데 더 좋은 방법이있을 수 있습니다. 그러나 속성을 정확히 한 번만 설정할 수 있습니다. –

0

Ruby 객체에 정의 된 obj.freeze 메서드는 어떻게됩니까? docs :

obj의 추가 수정을 방지합니다. 수정을 시도하면 RuntimeError가 발생합니다. 고정 된 개체를 고정 해제 할 방법이 없습니다.

관련 문제