Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Lien vers la présentation du techtalk

TechTalk-CleanCode

✅ Créer une liste ou passer une liste en tant que propriété

public class ExempleList1
{
    public List<string> stringList = new List<string>();
}

✨ On peut utiliser des syntaxes plus modernes pour alléger le code

// C# 9.0 — Target-typed new
public class ExempleList2
{
    public List<string> stringList = new();
}

// C# 12.0 — Collection expressions
public class ExempleList3
{
    public List<string> stringList = [];
}

✅ Passer une liste dans un constructeur

public class ExempleList4
{
    private List<string> stringList { get; init; }

    public ExempleList4()
    {
        stringList = new List<string>();
    }
}

✨ Là aussi, les syntaxes modernes rendent le code plus concis

// C# 9.0 — Target-typed new
public class ExempleList5
{
    private List<string> stringList { get; init; }

    public ExempleList5()
    {
        stringList = new();
    }
}

// C# 12.0 — Collection expressions
public class ExempleList6
{
    private List<string> stringList { get; init; }

    public ExempleList6()
    {
        stringList = [];
    }
}

✅ Les conditions : if / else if / else

Exemple classique avec if / else if

public class ExempleSwitch1
{
    public void DisplayMenu()
    {
        string userInput = Console.ReadLine();

        if (userInput == "1")
        {
            Console.WriteLine("Choix 1");
        }
        else if (userInput == "2")
        {
            Console.WriteLine("Choix 2");
        }
        else if (userInput == "3")
        {
            Console.WriteLine("Choix 3");
        }
        else
        {
            Console.WriteLine("Choix invalide, veuillez réessayer");
        }
    }
}

🌟 Variante avec switch classique

public class ExempleSwitch2
{
    public void DisplayMenu()
    {
        string userInput = Console.ReadLine();
        
        switch (userInput)
        {
            case "1":
                Console.WriteLine("Choix 1");
                break;  
            case "2":
                Console.WriteLine("Choix 2");
                break;
            case "3":
                Console.WriteLine("Choix 3");
                break;
            default:
                Console.WriteLine("Choix invalide, veuillez réessayer");
                break;
        }
    }
}

⚡ Depuis C# 8.0 : switch expression plus concis

public class ExempleSwitch3
{
    public void DisplayMenu()
    {
        string userInput = Console.ReadLine();

        string message = userInput switch
        {
            "1" => "Choix 1",
            "2" => "Choix 2",
            "3" => "Choix 3",
            _ => "Choix invalide, veuillez réessayer"
        };

        Console.WriteLine(message);
    }
}

✅ Code abrégé : Ternaires, Expression-bodied Members & Inline

🔁 If classique vs ternaire

// Version classique
public class ExempleTernaire1
{
    public string GetStatus(bool isActive)
    {
        if (isActive)
        {
            return "Actif";
        }
        else
        {
            return "Inactif";
        }
    }
}

// Version avec opérateur ternaire
public class ExempleTernaire2
{
    public string GetStatus(bool isActive)
        => isActive ? "Actif" : "Inactif";
}

🧠 Méthodes simples : block vs expression-bodied

// Version classique
public class ExempleExpression1
{
    public int GetDouble(int number)
    {
        return number * 2;
    }
}

// Version expression-bodied (=>)
public class ExempleExpression2
{
    public int GetDouble(int number) => number * 2;
}

🪄 Propriétés auto-abstraites et calculées

public class ExempleInline1
{
    // Auto-propriété
    public string Name { get; set; } = "Unknown";

    // Propriété calculée avec expression-bodied
    public int NameLength => Name.Length;
}

💡 # ✅ Avant / Après : Transformer un code verbeux en version clean

// ❌ Exemple verbeux / old-school
public class Calculator
{
    private int _factor;

    public Calculator(int factor)
    {
        this._factor = factor;
    }

    public int Multiply(int number)
    {
        return number * this._factor;
    }
}
// ✅ Version clean moderne
public class Calculator(int factor)
{
    private int _factor = factor;

    public int Multiply(int number) => number * _factor;
}

🌟 Utiliser ces syntaxes modernes permet :

  • de réduire la verbosité inutile
  • de rendre le code plus lisible
  • d'éviter les répétitions et les blocs encombrants

Mais attention : il faut rester clair. Trop de code en ligne peut aussi nuire à la lisibilité si c’est mal utilisé.

🧼 Le clean code, c’est avant tout un équilibre entre clarté et concision !

Source "Clean Code" de Robert C. Martin

📘 Clean Code — Robert C. Martin (dit "Uncle Bob")

  • Titre complet : Clean Code: A Handbook of Agile Software Craftsmanship
  • Auteur : Robert C. Martin
  • Langue originale : Anglais
  • Traduit en français sous le titre : "Coder proprement"
  • Public visé : développeuses·eurs de tous niveaux, surtout intermédiaires et avancés!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors