C# डेवलपर के जीवन का एक दिन: कोड, कॉफी और .NET का जादू

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: "मृत" C# की कथा

\n

आपने शायद सुना होगा कि C# "कॉर्पोरेट" लोगों की भाषा है, जहाँ सब कुछ उबाऊ, धीमा और एंटरप्राइज़ नौकरशाही की परत से ढका होता है। लेकिन सच्चाई यह है कि C# डेवलपर आज IT का एक सर्व-उपयोगी सैनिक है। वह ASP.NET Core पर तेज़ माइक्रोसर्विसेज़ लिखता है, Entity Framework के माध्यम से DB क्वेरी को ऑप्टिमाइज़ करता है, और कभी-कभी ML.NET के साथ मशीन लर्निंग भी एम्बेड करता है।

\n

इस लेख में मैं अमूर्त सिद्धांत नहीं बताऊँगा। हम एक वास्तविक कंपनी में C# प्रोग्रामर के एक सामान्य कार्य दिवस से गुज़रेंगे: सुबह की कॉफी से लेकर प्रोडक्शन में कोड पुश करने तक। आप कोड के उदाहरण, उपकरण और ऐसे हैक्स देखेंगे जो काम के घंटे बचाएँगे।

\n\n

08:30 — सुबह: कॉफी, ईमेल और टास्क बोर्ड

\n

दिन कोड से नहीं, बल्कि संदर्भ से शुरू होता है। सबसे पहले मैं Slack और Jira खोलता हूँ। एक सामान्य टीम में सुबह का स्टैंडअप (daily stand-up) होता है। इसमें हम तीन सवालों के जवाब देते हैं:

\n
    \n
  • कल क्या किया गया?
  • \n
  • आज क्या करूँगा?
  • \n
  • कोई बाधाएँ हैं?
  • \n
\n

स्टैंडअप के बाद — सहकर्मियों के पुल-रिक्वेस्ट की त्वरित समीक्षा। C# पर कोड-रिव्यू सिर्फ एक "टिक" नहीं है। यहाँ यह जाँचना महत्वपूर्ण है कि कहीं मेमोरी लीक तो नहीं है (विशेषकर IDisposable के साथ) और async/await का सही उपयोग हो रहा है या नहीं।

\n\n

जीवन का उदाहरण: एसिंक्रोनस मेथड का कोड-रिव्यू

\n
// बुरा: async मेथड के अंदर ब्लॉकिंग कॉल\npublic async Task<User> GetUserAsync(int id)\n{\n    var user = _context.Users.Find(id); // .Find — सिंक्रोनस!\n    return await Task.FromResult(user); // बेकार रैपर\n}\n\n// अच्छा: पूरी तरह से एसिंक्रोनस\npublic async Task<User> GetUserAsync(int id)\n{\n    return await _context.Users.FindAsync(id); // वास्तविक एसिंक्रोनसी\n}\n
\n

इस तरह की छोटी सी बात लोड के तहत प्रदर्शन को खत्म कर सकती है। इसलिए C# प्रोग्रामर को हर कदम पर एसिंक्रोनसी पर ध्यान देना चाहिए।

\n\n

10:00 — टास्क पर काम: नया API endpoint लिखना

\n

आज बैकलॉग में एक कार्य है — "मूल्य के अनुसार उत्पाद फ़िल्टरिंग जोड़ें"। यह .NET डेवलपर के लिए एक सामान्य कहानी है। मैं ReSharper के साथ Visual Studio 2022 में काम करता हूँ (हाँ, यह धीमा है, लेकिन इसके बिना काम नहीं चलता)।

\n\n

चरण 1: मॉडल और DTO

\n

पहले डेटा मॉडल को परिभाषित करते हैं। मान लीजिए, हमारे पास Entity Framework Core और PostgreSQL डेटाबेस है।

\n
public class Product\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public decimal Price { get; set; }\n    public string Category { get; set; }\n}\n\npublic class ProductFilterDto\n{\n    public decimal? MinPrice { get; set; }\n    public decimal? MaxPrice { get; set; }\n    public string? Category { get; set; }\n}\n
\n\n

चरण 2: IQueryable के साथ रिपॉजिटरी

\n

मुख्य ट्रिक — सभी डेटा को मेमोरी में न खींचें, बल्कि IQueryable का उपयोग करें। यह डेटाबेस साइड पर SQL क्वेरी बनाने की अनुमति देता है।

\n
public async Task<List<Product>> GetFilteredProductsAsync(ProductFilterDto filter)\n{\n    var query = _context.Products.AsQueryable();\n\n    if (filter.MinPrice.HasValue)\n        query = query.Where(p => p.Price >= filter.MinPrice.Value);\n\n    if (filter.MaxPrice.HasValue)\n        query = query.Where(p => p.Price <= filter.MaxPrice.Value);\n\n    if (!string.IsNullOrEmpty(filter.Category))\n        query = query.Where(p => p.Category == filter.Category);\n\n    return await query.ToListAsync();\n}\n
\n

ध्यान दें: हम अंत तक .ToList() नहीं बुलाते। यह किसी भी C# डेवलपर के लिए एक बुनियादी लेकिन महत्वपूर्ण पैटर्न है।

\n\n

चरण 3: ASP.NET Core कंट्रोलर

\n
[ApiController]\n[Route("api/[controller]")]\npublic class ProductsController : ControllerBase\n{\n    private readonly IProductRepository _repo;\n\n    public ProductsController(IProductRepository repo) =&g                

ब्लॉग

पुस्तक अनुशंसाएँ