public class ExempleList1
{
public List<string> stringList = new List<string>();
}// 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 = [];
}public class ExempleList4
{
private List<string> stringList { get; init; }
public ExempleList4()
{
stringList = new List<string>();
}
}// 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 = [];
}
}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");
}
}
}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;
}
}
}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);
}
}// 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";
}// 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;
}public class ExempleInline1
{
// Auto-propriété
public string Name { get; set; } = "Unknown";
// Propriété calculée avec expression-bodied
public int NameLength => Name.Length;
}// ❌ 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 !
📘 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!