2013-04-02 2 views
6

Rebol 3 (posix/fann/math)에 대한 일부 확장 작업을하고 있습니다.Rebol, 확장명 및 함수 명명

글로벌 네임 스페이스 오염을 피하기 위해 간단한 접두어 소스 식별자를 사용하여 함수를 내보내고 있습니다. 예 : fork의 경우 POSIX-FORK 또는 nanosleep의 경우 POSIX-NANOSLEEP입니다.

더 나은 방법이나 공식 Rebol 명명 규칙이 있습니까?

답변

6

물론 Rebol 내보내기의 이름 지정 규칙은 꽤 표준이지만 소문자 여야합니다. 모든 대문자는 채팅 클라이언트 또는 웹 사이트에서 this과 같은 코드를 표시 할 수없는 기능을 언급 할 때의 명명 규칙입니다. 일반적으로 Rebol 코드의 단어는 대문자로 쓰이지 않습니다.

그러나 글로벌 네임 스페이스 오염을 방지하려면 options: [private] 헤더가있는 확장 모듈을 선언하십시오. 이렇게하면 모듈의 내보내기가 import 또는 needs 헤더로 명시 적으로 요청하는 모듈이나 스크립트에 의해서만 가져 오게됩니다. 이것은 특히 상위 레벨 래퍼를 구현하는 모듈에 의해서만 가져 오는 것이 가장 좋은 하위 레벨 C와 유사한 API를 내보내는 모듈 또는 확장 모듈에 해당됩니다. 확장 모듈 부분은 완전한 Rebol 모듈이라는 것을 기억해 두는 것이 좋습니다. 상위 수준의 래퍼 코드를 거기에 놓고 C와 유사한 함수를 내보내지 않고 내부 용도로 사용하는 것이 가장 좋은 경우가 종종 있습니다.

추가 트릭은 상수 또는 enum 값을 내보낼 때 모듈의 개체에 넣고 개체를 내보내는 것이 가장 좋습니다. 이렇게하면 전역 네임 스페이스로 내보내지 않고 단어를 수정하지 못하게 할 수 있습니다.

또 다른 속임수는 물건을 전혀 내 보내지 않고 사람이 import 기능을 사용하여 모듈을 가져 오도록 설정하는 것입니다. 모듈의 단어를 숨김으로 표시하지 않는 한, 모듈의 단어를 내보낼 수 없더라도 여전히 사용할 수 있습니다. 그러나 이것은 대부분의 경우에 약간 불편합니다. 따라서 개인 모듈을 대신 사용하는 것이 좋습니다. 또한 상위 API를 내 보내서 이 아니고이 낮은 수준의 API를 내보낼 수 없으므로 하위 수준의 API를 사용하여 다른 사람이 사용하려는 경우 가져올 수 있습니다. 모듈 및 확장을 사용하는 방법에 대한보다 철저한 대답 여기

확인 : How are words bound within a Rebol module?

+0

귀하의 링크는 잘 쓰여진 좋은 읽기되고, 설명 주셔서 감사합니다. – TomBon