누에고치 표기 법

누에고치 표현법 (Cocoon Notation) 은 '누에고치 법' 이 라 고 부 르 며 인 터 페 이 스 를 설계 하거나 인터페이스 문 서 를 쓸 때 강력 한 도구 로 간단 한 설명 으로 정확 한 정 의 를 얻 을 수 있다.원문 참조 Github:https://github.com/skyshore2001/cocoon-notation
이해 하기 쉽 고 쓰기 쉬 운 데이터 구조 표현 방법 은 실 을 뽑 아 고 치 를 벗 기 는 것 처럼 다 차원 적 인 누에고치 와 같은 복잡 한 대상 을 층 층 이 벗 겨 내 고 데이터 모델 링, 인터페이스 설명, 코드 주석 등에 자주 사용 된다.
다음은 실례 적 인 방식 으로 규칙 을 설명 하고 자 바스 크 립 트 와 C + + 두 가지 실현 을 참고 로 제공 합 니 다.
개체
구조 체 (structure) 또는 클래스 (class) 라 고도 부른다.
하나의 대상 Customer, 두 필드 (또는 속성) id 와 name 이 있 으 면
Customer: {id, name}

왼쪽 은 형식 명 (type name) 으로 대문자 로 시작 합 니 다.오른쪽 은 유형 설명 이 고 괄호 로 대상 유형 을 설명 하 며 형식 은 {field1, field2, ...} 이 며 괄호 안 은 각 속성 명 으로 소문 자로 시작한다.
Javascript 에서 이 대상 은 다음 과 같 습 니 다:
var customer = {id: 100, name: "john"};

C + + 에 서 는 이렇게 구 조 를 정의 합 니 다.
struct Customer 
{
    int id;
    string name;
};

대상 에 복잡 한 유형의 속성 을 포함 할 수 있 습 니 다. 속성 명 에 접두사 '%' 를 사용 하여 구조 체 나 사전 을 표시 하고 접두사 '@' 로 배열 을 표시 합 니 다. 예 를 들 어:
Customer: {id, name, %address, @orders}
Address: {country, city}
Order: {id, total, @lines=[OrderLine]}
OrderLine: {itemId, qty, price}

Customer 대상 의 속성 address 는 하나의 구조 체 로 접두사 '%' 로 표시 합 니 다.속성 orders 는 하나의 배열 입 니 다. 접두사 '@' 으로 표시 합 니 다.이 속성 address 와 orders 는 형식 명 을 정의 하지 않 았 습 니 다. 이것 은 형식 명 과 속성 명 이 같은 이름, 즉 속성 address 의 유형 은 address 이 고 orders 의 유형 은 Orders 입 니 다.형식 Orders 가 정의 되 지 않 았 지만 단수 형식 Order 형식 을 정 의 했 습 니 다. 이것 은 Orders 가 Order 인 배열 을 포함 하고 있 습 니 다.완전 하 게 쓰 려 면 이렇게 설명해 야 합 니 다.
Customer: {id, name, %address=Address, @orders=[Order]}

Order 를 괄호 안에 넣 으 면 속성 orders 가 Order 형식의 배열 임 을 나타 낸다.Order 형식의 속성 lines 설명
@lines=[OrderLine]

Order Line 의 배열 임 을 나타 낸다.
속성 은 절약 할 수 있 고, 절약 값 도 지정 할 수 있 습 니 다. 예 를 들 어:
Address: {country?=CN, city?}

이것 은 속성 country 가 없 을 수 있 음 을 나타 내 고 없 으 면 값 으로 'CN' 을 표시 합 니 다.
사전 (dictionary)
그것 은 집합 입 니 다. 그 중 하 나 는 키 쌍 (key - value pair) 입 니 다.해시 표 (hash table) 나 맵 표 (map) 라 고도 합 니 다.
괄호 로 사전 을 설명 하 는데 형식 은 {key => value} 이 고 그 중에서 value 는 기본 유형 이나 복잡 한 유형 일 수 있 습 니 다.사전 형식의 이름 은 복수 형식 을 사용 하거나 "List", "Map" 으로 끝내 야 합 니 다. 예 를 들 어:
Customers: { id => name }

위의 정 의 는 customers 는 하나의 사전 형식 으로 각 항목 의 메 인 키 는 id 필드 를 표시 하고 값 은 name 필드 (기본 형식) 를 표시 합 니 다.
Javascript 의 사전 형식 은 다음 과 같 습 니 다:
var customers = {100: "john", 101: "bella"};

주의: 대상 유형 과 형식 은 같 지만 의 미 는 완전히 다르다.그것 은 대상 의 집합 이 고 이름 도 복수 형식 이다.
C + + 에서 일반적으로 이렇게 정의 합 니 다.
typedef map<int, string> Customers;

사전 의 모든 항목 의 값 도 하나의 대상 일 수 있 습 니 다.
Customers: {id=>Customer}
Customer: {id, name}

병합 가능:
Customers: { id=> {id, name} }

Javascript 에서 사용:
var customers = {
    100: {id: 100, name: "john"},
    101: {id: 101, name: "bella"}
};

C + + 에서 종 류 를 이렇게 정의 할 수 있 습 니 다.
struct Customer 
{
    int id;
    string name;
};
typedef map<int, Customer> Customers;

배열 (배열)
순서 표 나 목록 이 라 고도 부른다.
중 괄호 로 배열 을 설명 합 니 다. 형식 은 [ element ] 입 니 다.이름 을 지 을 때 복수 형식 을 사용 하거나 'List', 'Arr' 로 끝내 야 합 니 다.
간단 한 목록 IdList 를 표시 하려 면 모든 요 소 는 id 입 니 다.
IdList: [id]

Customers 는 Customer 의 배열 로 다음 과 같이 표시 할 수 있 습 니 다.
Customers: [Customer]
Customer: {id, name}

병합:
Customers: [ {id, name} ]

자바 script 에서 배열 형식의 변수:
var customers = [ {id: 100, name: "john"}, {id: 101, name: "bella"} ]

C + + 에서 형식 은 다음 과 같이 정 의 됩 니 다.
struct Customer 
{
    int id;
    string name;
};
typedef vector<Customer> Customers;

Customer 를 정의 하고 복수 형식 Customers 를 정의 하지 않 으 면 기본 Customers 는 배열 입 니 다.반대로 복수 형식 customers / customer List / customer Map / customerArr 를 정의 하면 customer 는 정의 하지 않 고 전자 집합 에서 의 값 요소 임 을 기본 으로 설정 할 수 있 습 니 다.
때로는 대상 유형 을 배열 로 대체 할 수 있 습 니 다. 예 를 들 어 Customer 는 두 가지 요소 가 있 습 니 다. 첫 번 째 는 id 이 고 두 번 째 는 name 이 며 다음 과 같이 표시 할 수 있 습 니 다.
Customer: [id, name]

배열 로 대상 을 정의 할 때 형식 은 [ field1, field2, ... ] 이 고 적어도 두 개의 필드 가 있어 야 한다.
Javascript 의 예:
var customer1 = [100, "john"];
var customer2 = [101, "bella"];

C + + 에 서 는 일반적으로 이렇게 디자인 하지 않 습 니 다. 굳이 사용 하지 않 으 면 Variant 와 같은 일반적인 유형 을 사용 할 수 있 습 니 다.
typedef Vector<Variant> Customer; // [id, name]
Customer customer1 = {Variant(100), Variant("john")};

기본 형식 설명
복잡 한 유형 은 최종 적 으로 모든 속성 으로 분해 되 어야 한다. 기본 유형 이 든 기본 유형 으로 분 해 된 복잡 한 유형 이 든.
속성 을 정의 할 때 속성 명 을 통 해 유형 을 암시 하거나 접미사 식별 자 를 통 해 표시 해 야 합 니 다.규칙 은 다음 과 같 습 니 다.
  • Integer: 접미사 식별 자 는 '&' 또는 'Id', 'Cnt' 등 으로 끝 납 니 다. 예 를 들 어 customerId, age &
  • Double: 접미사 식별 자 는 "\ #" 입 니 다. 예 를 들 어 avgValue \ #
  • 통화: 접미사 식별 자 는 "@" 또는 "Price", "Total", "Qty", "Amount" 로 끝 납 니 다. 예 를 들 어 unitPrice, price 2 @.
  • Datetime / Date / Time: 각각 'Tm' / 'Dt' / 'Time' 으로 끝 납 니 다. 예 를 들 어 tm 는 '2010 - 1 - 19: 00' 과 같은 날짜, comedt 는 '2010 - 1 - 1' 과 같은 날짜 만 표시 하고 comeTime 은 '9: 00'
  • 과 같은 시간 만 표시 합 니 다.
  • Boolean / TinyInt (1 - byte): 플래그 로 끝나 거나 is 로 시작 합 니 다.
  • String: 표시 되 지 않 은 것 은 일반적으로 문자열 형식 입 니 다.

  • 디자인 에 따라 실 현 될 때 상기 유형 을 사용 하 는 프로 그래 밍 언어 가 지원 하 는 실제 유형 에 대응 해 야 한다.
    예 를 들 어 다음 과 같은 정의:
    Customer: {id, name, age&, score#, balance@, specialPrice, createTm, isNew}
    

    Customer 각 속성의 기본 유형 을 간단명료 하 게 정 의 했 습 니 다. C + + 로 유형 을 정의 할 때 이 럴 수 있 습 니 다.
    class Money {};
    
    struct Customer
    {
        int id;
        string name;
        int age;
        double score;
        Money balance;
        Money specialPrice;
        time_t createTm;
        bool isNew;
    };
    

    좋은 웹페이지 즐겨찾기