1. @를 이용한 로컬 변수와, 인스턴스 변수의 구분
루비는 변수 이름에 @를 붙이면 인스턴스 변수로 동작한다.
이러한 강제적인 컨벤션은 완벽한 인텔리센스가 제공되지 못하는 루비 특성 상 굉장히 유용하며, 코드를 보았을 때 어떠한 변수가 인스턴스인지, 로컬인지를 한눈에 파악할 수 있도록 해준다.
C++등에서 쓰이는 이름 앞에 m_를 붙이는 컨벤션보다 깔끔하다는것은 말할 것도 없다.
2. !, ? 를 접미사로 가지는 네이밍 규칙
메소드 뒤의 ? 는 이 메소드가 bool 값을 리턴함을 의미한다,
메소드 뒤의 ! 는 메소드가 자기 자신을 변경함을 의미한다, 예를들어 vector의 reverse 같은 메소드들은 reverse되는 결과를 리턴하는지, 자기 자신을 reverse하는지가 굉장히 애매하다, 다른 정적 언어는 IDE의 도움을 받아, 리턴값이 void인지 어떤것인지를 보고 대충 파악을 할 수 있지만, 메소드 정의 시 명시적으로 리턴값을 지정하지 않는 루비에서는 그런 도움을 받을 수 없어 판단이 애매하다, 이 때 ! 가 출동하면 이러한 문제를 깔끔하게 해결할 수 있다.
사실 ! 에 대해서는 깔끔한 문법이라고 하기에는 애매한 부분이 많다,
pop, clear처럼 자기 자신을 변경하면서도 ! 가 붙지 않는 메소드가 있는가 하면, 몇몇 라이브러리에서 ! 는 다른 의미로 사용된다.
하지만 위에 적어놓은 용례에 한정해서는 메소드의 동작을 굉장히 명확하게 알려주는 효과가 있기 때문에 이곳에 적어놓았다.
'Ruby' 카테고리의 다른 글
[Ruby] SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) (2) | 2015.12.16 |
---|---|
[Ruby] 로 jenkins & LINE 원격 환경 구성하기 (4) | 2015.12.07 |
[Ruby] binding_of_caller (0) | 2015.11.27 |
[Ruby] select, map, collect (0) | 2015.10.16 |
[Ruby] deep_merge (0) | 2015.10.14 |