Swift में Clean Code: सिद्धांत और उदाहरण
Clean Code (स्वच्छ कोड) सिर्फ एक फैशनेबल शब्द नहीं है, बल्कि एक डेवलपमेंट दर्शन है जो सीधे फीचर्स बनाने की गति, बग्स की संख्या और काम के आनंद को प्रभावित करता है। iOS और macOS ऐप्स पर काम करने वाले Swift डेवलपर्स के लिए ऐसा कोड लिखना विशेष रूप से महत्वपूर्ण है जिसे पढ़ना और बनाए रखना आसान हो, क्योंकि प्रोजेक्ट वर्षों तक चलते हैं और टीमें बदलती रहती हैं। इस लेख में हम Swift पर लागू Clean Code के मुख्य सिद्धांतों को समझेंगे और विशिष्ट उदाहरण देखेंगे।
1. नामकरण: डोमेन भाषा में बोलें
सही नामकरण पढ़ने योग्य कोड का आधार है। वेरिएबल्स, फंक्शन्स और क्लासेस के नाम "क्या?" और "क्यों?" सवालों का जवाब देने चाहिए। संक्षिप्ताक्षरों और एक-अक्षर वाले नामों से बचें (छोटे लूप्स में i को छोड़कर)।
खराब उदाहरण:
func calc(a: Int, b: Int) -> Int { return a * b + 10}अच्छा उदाहरण:
func calculateTotalPriceWithShipping(itemPrice: Int, shippingCost: Int) -> Int { return itemPrice + shippingCost}बूलियन वेरिएबल्स के लिए is, has, should प्रीफिक्स का उपयोग करें:
var isUserLoggedIn: Bool = falsevar hasCompletedOnboarding: Bool = trueक्लासेस के नाम संज्ञा होने चाहिए ( UserManager, NetworkService ), और फंक्शन्स क्रिया या क्रिया वाक्यांश ( fetchData(), validateEmail() )।
2. फंक्शन्स: छोटे और एकल जिम्मेदारी वाले
प्रत्येक फंक्शन को केवल एक काम करना चाहिए और उसे अच्छी तरह करना चाहिए। आदर्श फंक्शन की लंबाई 10-20 लाइनें है। यदि फंक्शन 30 लाइनों से अधिक है, तो इसे छोटे भागों में विभाजित करें।
खराब उदाहरण: एक फंक्शन जो वैलिडेट करता है, सेव करता है और नोटिफिकेशन भेजता है।
func processUser(_ user: User) { // वैलिडेशन guard !user.name.isEmpty else { return } guard user.age > 18 else { return } // सेविंग CoreDataManager.shared.save(user) // नोटिफिकेशन NotificationCenter.default.post(name: .userDidRegister, object: nil)}अच्छा उदाहरण: तीन अलग-अलग फंक्शन्स में विभाजन।
func processUser(_ user: User) { guard isValid(user) else { return } saveUser(user) notifyUserRegistration()}
private func isValid(_ user: User) -> Bool { return !user.name.isEmpty && user.age > 18}
private func saveUser(_ user: User) { CoreDataManager.shared.save(user)}
private func notifyUserRegistration() { NotificationCenter.default.post(name: .userDidRegister, object: nil)}साथ ही, बड़ी संख्या में पैरामीटर्स से बचें। यदि तीन से अधिक हैं, तो उन्हें एक स्ट्रक्चर में संयोजित करें।
struct SearchConfig { let query: String let category: String? let page: Int let pageSize: Int}
func search(with config: SearchConfig) -> [Result] { ... }3. Swift में SOLID: व्यावहारिक उदाहरण
SOLID सिद्धांत ऑब्जेक्ट-ओरिएंटेड भाषाओं में स्वच्छ कोड की आधारशिला हैं। आइए Swift उदाहरणों के साथ दो प्रमुख सिद्धांतों पर विचार करें।
एकल जिम्मेदारी का सिद्धांत (SRP)
एक क्लास के पास बदलाव का केवल एक कारण होना चाहिए। नेटवर्क लॉजिक और UI को मिक्स न करें।
// SRP का उल्लंघनclass UserViewController: UIViewController { func fetchUser() { URLSession.shared.dataTask(with: URL(string: "...")!) { ... } } func updateUI() { ... }}
// सुधारclass UserNetworkService { func fetchUser(completion: (User) -> Void) { ... }}
class UserViewController: UIViewController { let networkService = UserNetworkService() func loadUser() { networkService.fetchUser { [weak self] user in DispatchQueue.main.async { self?.updateU
```