Skip to content
This repository has been archived by the owner on Oct 8, 2021. It is now read-only.

Coding guidelines

Martijn Melchers edited this page Feb 12, 2020 · 2 revisions

Om consistent te blijven zijn er een aantal regels per taal opgesteld. Hieronder staan deze beschreven.

C#

Algemeen

  • Geen gebruik maken van this
    • Dit is onnodig en maakt de code drukker.
  • Voor controllers/services die aangemaakt worden in de constructor voeg je altijd readonly toe.
    • private readonly UserManager _userManager;
  • Voor single line if (else) statements geen haakjes gebruiken of een shorthand gebruiken.
    •    if(!isEmployee)
            return false;
    • return isEmployee ? "Je bent een werknemer" : "Je bent een inspecteur";
  • Maak bij voorkeur gebruik van properties als je iets bruikbaar wilt maken voor de buitenwereld, geen fields.

Naamgeving

  • Gebruik de volgende naming voor je classes/variablen:
    • PascalCase voor classes en public properties.
      • public class ReportGenerator
      • public string Username { get; private set; }
    • camelCase met underscore voor private fields of properties
      • private string _username;

Indeling

  • Maak altijd gebruik van de correcte namespace Festispec.[Project]
    • Festispec.UI
    • Deze komt overeen met de mappenstructuur waarin je werkt.
  • Maak goed gebruik van de verschillende projecten. Zo bevat het project Models alle modelklassen.
  • Maak ook goed gebruik van de mappen binnen deze projecten. De map Interfaces bevat alle interfaces voor dat project, plaats daar dan ook je interfaces in.
    • Wanneer veel bestanden als een groepje bij elkaar horen, maak er dan een submap voor aan. Alle OfflineServices staan bijvoorbeeld in de submap Offline.

LINQ

  • Gebruik waar mogelijk een LINQ-statement in plaats van een loop:

    •         foreach (var q in Questions)
                  q.Answers = Answers.FindAll(a => a.Question.Id == q.Id);
    • Dit wordt:
    •         Questions.ForEach(q => q.Answers = Answers.FindAll(a => a.Question.Id == q.Id));
  • Splits lange LINQ-statements op in meerdere regels:

    • Addresses = new List<Address>()
        .Concat(Customers.Select(c => c.Address))
        .Concat(Employees.Select(e => e.Address))
       .ToList();
Clone this wiki locally