2016-08-17 2 views
1

QML을 배우는 동안 처음부터 좋은 스타일을 배우고 싶습니다. 그러나 이름 지정과 관련하여 이미 몇 가지 문제가 발생했으며 문장의 순서뿐만 아니라 좋은 명명 규칙을 포함하는 "세계에서 인정받는"코딩 규칙을 찾을 수 없습니다 (찾을 수 있음) 여기 : http://doc.qt.io/qt-4.8/qml-best-practices-coding.html).QML의 이름 충돌 방지

내가 발견 한 문제점은 다음과 같습니다.
속성, ID, (모델) 역할 - ID와 역할이 여러 항목 레이어를 통해 존재할 때 특히 쉽게 충돌 할 수 있습니다.

  • ID를
  • 기능
  • 기능 변수
  • 구성 요소
    • 속성
    • 역할을 :

      그래서 당신의 이름을하는 방법에 대한 좋은 지침이 있습니다은 현장에서 가치가 있음을 입증 했습니까? 유형, 속성

      불행하게도, QML 요소가 그들에게 물건을 꽤 많이와 함께 등, 소문자로 시작해야 대문자로 시작해야합니다, 그것은 종종 -

    +2

    C++과 크게 다르지 않습니다. 특정 클래스에서 모든 멤버는 고유 한 이름 (과부하 제외)을 가져야합니다. 역할, 속성 및 기능을 하나의 네임 스페이스에 속하는 것으로 간주합니다. ID는 항상 독립적으로 확인할 수 있으며 자체 ID 공간을 형성합니다. –

    답변

    1

    QML은 이미 일부 명명 규칙을 적용합니다 명명 충돌이 일어나는 경우. 이 경우 "가장 안쪽에있는 선언"이 우선합니다. 즉, 자신의 선언이 주식 속성에 영향을 미칠 것이며, C++과 달리 BaseType::stuff과는 달리 더 이상 문제를 해결할 방법이 없습니다. 나는 "상속 된"회원 here을 오버라이드하고 여전히 액세스해야 할 경우에 대비하여 가능한 접근법을 설명했습니다.

    당신이 필요로하는 것은 충돌을 피하는 것입니다. 가장 기본적인 방법은 _something의 밑줄을 사용하는 것입니다. QML의 내용은 밑줄로 시작하지 않으므로 충돌 할 위험이 없습니다. 유형의 경우, 문자를 미리 추가합니다. 이는 또한 프로젝트 트리보기에서 구성 요소를 정렬/그룹화하는 데 유용합니다. UI 앞에는 U_Something - U를, 코어에는 C를, 프로토 타입에는 P를 앞에 붙입니다. 프로그래밍에서 영속성을 통해, 특히 클래스, 네임 스페이스 등이없는 언어에서 사용 된 동일한 오래된 접근 방식과 충돌을 피할 수있는 유일한 방법은 Vulkan과 같은 C API에서 매우 일반적인 이름 인 VK_ERROR_FORMAT_NOT_SUPPORTED을 사용하는 것입니다.