दायरे वाले API और पठनीयता के पैटर्न
DSL के लिए दायरे वाले API और नामकरण पैटर्न अपनाइए: नेमस्पेस टोकन रखिए, सहायक विधियों से समूह बनाइए और ब्लॉक्स को छोटा व स्पष्ट रखिए।
दायरे वाले API और पठनीयता के पैटर्न, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 3 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
DSL का दायरा क्यों तय करें?
पढ़ने योग्य DSL यह सीमित करते हैं कि आप किसी ब्लॉक में क्या कर सकते हैं और चीज़ों को स्पष्ट नाम देते हैं। आशय को स्पष्ट रखने के लिए नेमस्पेस, छोटे सहायक और समूहों का उपयोग करें।
नेमस्पेस पैटर्न
टोकनों को R के अंतर्गत रखने से सार्वजनिक सतह सीमित होती है और ऐप प्रतीकों के साथ टकराव रुकता है; कॉल छोटे और आसानी से पढ़े जाने योग्य रहते हैं।
struct Route { let method: String; let path: String }
// Namespace instead of global free functions
enum R {
static func GET(_ path: String) -> Route { Route(method: "GET", path: path) }
static func POST(_ path: String) -> Route { Route(method: "POST", path: path) }
}
@resultBuilder
struct RoutesBuilder {
static func buildBlock(_ parts: Route...) -> [Route] { parts }
}
func routes(@RoutesBuilder _ content: () -> [Route]) -> [Route] { content() }
let table = routes {
R.GET("/home")
R.POST("/upload")
}
for r in table { print("\(r.method) \(r.path)") }समूह बनाने वाला सहायक
खुद को दोहराए बिना संदर्भ (prefix, टैग) जोड़ने के लिए छोटे समूह बनाने वाले सहायक का उपयोग करें; ब्लॉक व्यवस्थित रहता है।
// Group routes by a shared prefix using a helper
func section(_ prefix: String, @RoutesBuilder _ content: () -> [Route]) -> [Route] {
content().map { Route(method: $0.method, path: prefix + $0.path) }
}
let grouped = routes {
R.GET("/health")
section("/admin") {
R.GET("/dashboard")
R.POST("/upload")
}
}
for r in grouped { print("\(r.method) \(r.path)") } // /admin/* prefixedचिंताओं को अलग रखें
अलग-अलग चिंताओं (रूट्स बनाम middlewares) के लिए छोटे बिल्डरों को प्राथमिकता दें। प्रत्येक ब्लॉक केवल वही उजागर करता है जिसकी उसे आवश्यकता है।
// A separate builder for middlewares (keeps concerns isolated)
struct Middleware { let name: String }
@resultBuilder
struct MiddlewareBuilder {
static func buildBlock(_ parts: Middleware...) -> [Middleware] { parts }
}
enum M {
static func log(_ name: String) -> Middleware { Middleware(name: "log:\(name)") }
static func auth() -> Middleware { Middleware(name: "auth") }
}
func middlewares(@MiddlewareBuilder _ content: () -> [Middleware]) -> [Middleware] { content() }
let mw = middlewares {
M.log("requests")
M.auth()
}
print(mw.map(\.name))पठनीयता संबंधी सुझाव
पैटर्न:
- छोटी क्रियाओं का उपयोग करें: GET, POST, auth।
- प्रति पंक्ति एक क्रिया रखें।
- समतल ब्लॉकों को प्राथमिकता दें; केवल संदर्भ जोड़ने के लिए नेस्ट करें।
- सहायकों में स्पष्ट लेबल दें (जैसे, prefix:)।
सत्यापन सहायक
ब्लॉकों को सही रखने के लिए छोटे validation सहायक उपलब्ध कराएँ। उपयोगी messages के साथ तुरंत विफल हों।
// Add a simple validator to catch mistakes early
func validate(_ routes: [Route]) -> [String] {
var issues: [String] = []
let seen = Set(routes.map { $0.method + " " + $0.path })
if seen.count != routes.count { issues.append("Duplicate route detected") }
if routes.contains(where: { !$0.path.hasPrefix("/") }) {
issues.append("Paths must start with /")
}
return issues
}
let issues = validate(grouped)
print(issues.isEmpty ? "OK" : "Issues: \(issues)")सीमित एपीआई पैटर्न
त्वरित जाँच: कौन-सा विकल्प DSL ब्लॉक को अधिक सुरक्षित और स्पष्ट बनाता है?
पुनरावलोकन
पुनरावलोकन: अपने DSL का दायरा नेमस्पेस से तय करें, छोटे समूह बनाने वाले सहायकों का उपयोग करें, ब्लॉकों को केंद्रित रखें और अधिक सुरक्षित, पठनीय कोड के लिए जल्दी सत्यापन करें।
एआई शिक्षक के साथ Swift सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 122
- पाठ
- 409
अक्सर पूछे जाने वाले प्रश्न
क्या “दायरे वाले API और पठनीयता के पैटर्न” पाठ निःशुल्क है?
हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “दायरे वाले API और पठनीयता के पैटर्न” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“दायरे वाले API और पठनीयता के पैटर्न” में मैं क्या सीखूँगा?
DSL के लिए दायरे वाले API और नामकरण पैटर्न अपनाइए: नेमस्पेस टोकन रखिए, सहायक विधियों से समूह बनाइए और ब्लॉक्स को छोटा व स्पष्ट रखिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 2वाँ पाठ है।
“दायरे वाले API और पठनीयता के पैटर्न” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- result builders से छोटे DSL बनाना
- दायरे वाले API और पठनीयता के पैटर्न
- UI फ़्रेमवर्क के बिना व्यावहारिक उदाहरण