This repository has been archived by the owner on Jan 28, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Coding guidelines
NanoSector edited this page Jan 13, 2020
·
4 revisions
Om consistent te blijven zijn er een aantal regels per taal opgesteld. Hieronder staan deze beschreven.
- 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.
- 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;
- PascalCase voor classes en public properties.
- 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.
- Wanneer je de modelklassen hebt aangepast, maak dan ook meteen een nieuwe migratie. Geef deze ook een fatsoenlijke naam, niet "Test" of "Pending".
- Validatie plaatsen we in de modelklassen zelf. Database-specifieke definities plaatsen we in de Mapping die overeenkomt met de modelklasse.
- In de modelklasse zelf horen bijvoorbeeld de maximale lengte voor een naam of de range van een integer.
- In de Mapping klasse hoort bijvoorbeeld de definitie van een relatie tussen twee klassen.
-
HasRequired(e => e.Account).WithRequiredPrincipal(a => a.Employee);
-
- Wanneer een property required is zetten we dit in allebei de klassen. Zo is het aan allebei de kanten duidelijk dat de property ingevuld moet worden.
-
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();
-