2012-01-14 13 views
7

मैं अपने जावास्क्रिप्ट एप्लिकेशन में उपयोग किए गए डेटा संरचनाओं को दस्तावेज करने के लिए एक वर्णनात्मक तरीका ढूंढ रहा हूं। मुझे जावास्क्रिप्ट के गतिशील चरित्र के कारण ऐसा करना मुश्किल लगता है।जावास्क्रिप्ट/कॉफीस्क्रिप्ट डेटा संरचनाओं को कैसे दस्तावेज़ित करें

उदाहरण के लिए, क्या एक अच्छा तरीका बताने के लिए हो सकता है, कि एक प्रयोग चर दूरी लंबाई के साथ एक दो आयामी सरणी है मैं और और के बीच -1MAX_INT जे और दुकानों संख्या। मैं कुछ इस तरह के बारे में सोच सकता है:

distance[i][j] = -1 <= n <= MAX_INT 

एक दो आयामी सरणी के बारे में क्या, जहां एक सरणी के पहले तत्व अन्य को परिभाषित करता है क्या एक वस्तु है जो एक नक्शा/शब्दकोश कुछ डेटा प्रकार के लिए के रूप में प्रयोग किया जाता है, के बारे में डेटा फिर बाकी, आदि

बेशक, इन चीजों को एक पाठ में दस्तावेज करना हमेशा संभव होता है, मैंने सोचा कि शायद एक अर्धसैनिक तरीके से ऐसा करने के लिए एक प्रसिद्ध और उपयोग किया जाने वाला तरीका है।

उत्तर

3

हालांकि यह भी व्यापक रूप से अपनाया नहीं कर रहा है ट्रैक करने के लिए javascript ऑब्जेक्ट इस्तेमाल कर सकते हैं (अभी तक?), वहाँ एक draft standard for JSON schema है। मैं सिर्फ यह अपने आप सीख रहा हूँ, लेकिन आप अपने दो आयामी सरणी (एक वस्तु के अंदर लिपटे) के लिए एक स्कीमा लिख ​​सकता है के रूप में:

{ 
    "description":"Two dimensional array of numbers", 
    "type":"object", 
    "properties":{ 
     "two-d-array":{ 
      "description":"columns", 
      "type":"array", 
      "items":{ 
       "description":"rows", 
       "type":"array", 
       "items": { 
        "description":"values", 
        "type":"number", 
        "minimum":-1, 
        "maximum":Number.MAX_VALUE 
       } 
      } 
     } 
    } 
} 

या बस:

{ 
    "type":"array", 
    "items":{ 
     "type":"array", 
     "items": { 
      "type":"number", 
      "minimum":-1, 
      "maximum":Number.MAX_VALUE 
     } 
    } 
} 

कोई CoffeeScript कार्यान्वयन है जो मुझे पता है, लेकिन कई जावास्क्रिप्ट मान्यताओं की एक सूची है here। मैं उस व्यक्ति के साथ खेल रहा हूं जिसे spec लेखकों द्वारा लिखा गया है (बस पर्याप्त) json-schema और मुझे इसे कॉफीस्क्रिप्ट से काफी अच्छी तरह से कॉल करना पसंद है।

+0

नोट: संख्या .MAX_VALUE जेसन-स्कीमा द्वारा समर्थित नहीं है। आपको अपने उद्देश्यों के लिए इसे विस्तारित करने की आवश्यकता होगी। मैं अपने सच्चे "आईएनटीएस" को 2^32-1 तक सीमित करने की कोशिश करता हूं, क्योंकि बिटवाई ऑपरेटर केवल इस संख्या पर काम करते हैं, लेकिन तकनीकी रूप से जावास्क्रिप्ट में किसी भी संख्या का जिसका मंटिसा 2^53 में फिट बैठता है, उसे वैध माना जाता है। –

1

जब मैं बहुत सारे डेटा मॉडल की प्रतिलिपि बना रहा हूं, तो मुझे अपनी जावास्क्रिप्ट में क्या करना है, यह जानने के लिए कि उनकी कक्षा परिभाषा टिप्पणियों में क्या होगी। मुझे यकीन नहीं है कि क्या यह आपके प्रश्न के साथ है।

// JavaScript Class jsHomeLocation 
// jsHomeLocation{ 
// string name 
// string address 
// } 

var jsHomeLocation = {}; 
jsHomeLocation.name = "Travis"; 
jsHomeLocation.address = "California"; 

तुम भी उदाहरण के जानकारी, एक दो आयामी सरणी

var distanceData = {}; 
distanceData.type = "two-dimensional array"; 
distanceData.length = i * j; 
distanceData.min = -1; 
distanceData.max = MAX_INT; 
संबंधित मुद्दे