Une journée dans la vie d'un développeur C# : code, café et magie .NET

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : La légende du C# « mort »

Vous avez sûrement entendu dire que C# est un langage pour les « entreprises », où tout est ennuyeux, lent et recouvert d'une couche de bureaucratie d'entreprise. Mais la vérité est qu'aujourd'hui, un développeur C# est un soldat universel de l'informatique. Il écrit des microservices rapides sur ASP.NET Core, optimise les requêtes à la base de données via Entity Framework, et intègre même parfois du machine learning avec ML.NET.

Dans cet article, je ne vais pas raconter de théories abstraites. Nous allons parcourir une journée de travail typique d'un programmeur C# dans une entreprise réelle : du café du matin au push du code en production. Vous verrez des exemples de code, des outils et des astuces qui vous feront gagner des heures de travail.



08:30 — Matin : Café, emails et tableau des tâches

La journée ne commence pas par le code, mais par le contexte. La première chose que je fais est d'ouvrir Slack et Jira. Dans une équipe typique, il y a un stand-up matinal (daily stand-up). Nous répondons à trois questions :

  • Qu'est-ce qui a été fait hier ?
  • Que vais-je faire aujourd'hui ?
  • Y a-t-il des bloqueurs ?

Après le stand-up, un rapide coup d'œil aux pull requests des collègues. La revue de code en C# n'est pas une simple « formalité ». Il est important de vérifier qu'il n'y a pas de fuite mémoire (surtout avec IDisposable) et que async/await est utilisé correctement.



Exemple concret : revue de code d'une méthode asynchrone

// Mauvais : appel bloquant dans une méthode asyncpublic async Task<User> GetUserAsync(int id){    var user = _context.Users.Find(id); // .Find — synchrone !    return await Task.FromResult(user); // Enveloppe inutile}

// Bon : entièrement asynchronepublic async Task<User> GetUserAsync(int id){ return await _context.Users.FindAsync(id); // Asynchrone réelle}

Un tel détail peut tuer les performances sous charge. C'est pourquoi un programmeur C# doit surveiller l'asynchronisme à chaque étape.



10:00 — Travail sur la tâche : Écrire un nouvel endpoint API

Aujourd'hui, dans le backlog, il y a la tâche « Ajouter le filtrage des produits par prix ». C'est une histoire typique pour un développeur .NET. Je travaille dans Visual Studio 2022 avec ReSharper (oui, il ralentit, mais sans lui, je suis perdu).



Étape 1 : Modèle et DTO

D'abord, on définit le modèle de données. Supposons que nous ayons Entity Framework Core et une base de données PostgreSQL.

public class Product{    public int Id { get; set; }    public string Name { get; set; }    public decimal Price { get; set; }    public string Category { get; set; }}

public class ProductFilterDto{ public decimal? MinPrice { get; set; } public decimal? MaxPrice { get; set; } public string? Category { get; set; }}


Étape 2 : Repository avec IQueryable

L'astuce principale est de ne pas charger toutes les données en mémoire, mais d'utiliser IQueryable. Cela permet de former la requête SQL côté base de données.

public async Task<List<Product>> GetFilteredProductsAsync(ProductFilterDto filter){    var query = _context.Products.AsQueryable();

if (filter.MinPrice.HasValue) query = query.Where(p => p.Price >= filter.MinPrice.Value);

if (filter.MaxPrice.HasValue) query = query.Where(p => p.Price <= filter.MaxPrice.Value);

if (!string.IsNullOrEmpty(filter.Category)) query = query.Where(p => p.Category == filter.Category);

return await query.ToListAsync();}

Notez que nous n'appelons pas .ToList() avant la toute fin. C'est un modèle basique mais crucial pour tout développeur C#.



Étape 3 : Contrôleur ASP.NET Core

[ApiController][Route("api/[controller]")]public class ProductsController : ControllerBase{    private readonly IProductRepository _repo;

public ProductsController(IProductRepository repo) =&g

Blogs

Book Recommendations