OO Design reminders
Onderstaand reminders voor OO design:
Lijsten
Komt het regelmatig voor dat er acties moeten worden uitgevoerd op lijsten, maar hiervoor dan een aparte class aan, bijv. Persons. Deze class erft dan van IEnumerable en heeft dan als extra's de methodes die vaak gebruikt worden.
Option type
Soms moet een actie op een object worden uitgevoerd, maar alleen als dat object bestaat. Om een null check uit te sluiten kan je een nieuwe class maken: Option. Vervolgens implementeert deze class IEnumerable. Dit is een manier om aan te geven dat er "niets" is zonder te hoeven checken op null. De aanroepende code kan dan altijd bijv. ForEach(o => o.DoSomething()) aanroepen zonder daarbij te hoeven checken op null. Voorbeeld implementatie van Option class:
Lijsten
Komt het regelmatig voor dat er acties moeten worden uitgevoerd op lijsten, maar hiervoor dan een aparte class aan, bijv. Persons. Deze class erft dan van IEnumerable
Option type
Soms moet een actie op een object worden uitgevoerd, maar alleen als dat object bestaat. Om een null check uit te sluiten kan je een nieuwe class maken: Option
public class Option<T> : IEnumerable<T> { private readonly T[] data; private Option(T[] data) { this.data = data; } public static Option<T> Create(T element) { return new Option<T>(new[] { element }); } public static Option<T> CreateEmpty() { return new Option<T>(new T[0]); } public IEnumerator<T> GetEnumerator() { return ((IEnumerable<T>) this.data).GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } }
Reacties
Een reactie posten