Jeg er igang med et nemt opstartsprojet i C# - Test af cprnr. I den forbindelse er jeg lidt i tvivl om, hvordan jeg skal forholde mig ved en evt. fejl i koden. F.eks. har jeg lave en IsValid funktion, som tester om et cprnr er validt. Hvis ikke cprnr er validt, så returneres false, eller true. Så langt så godt. Så har jeg også en IsMale funktion, som returnerer true hvis det er en mand og false hvis det er en kvinde. Men hvis cprnummeret ikke er validt, så har jeg nu to muligheder - returner false (hvilket jo faktisk betyder at det ikke er en mand), eller kaste en fejl (hvilket jo så skal fanges af det kaldende program)
Men er det "best practices" at kaste en fejl, hver gang der sker en fejl i en dll, og så lade det være op til det kaldende program at gribe den fejl? I så fald, så skal man jo næsten pakke alle sine funktionkald ind i en try/catch. Men er det blot fremgangsmåden, hvis man vil lave sitn program "fejlfrit"?
Du bør lave en exception, hvis du modtager invalide data i andre metoder end IsValid. Kaldende programmer bør så til gengæld kalde IsValid, hvis der er tvivl om rigtigheden af data i programmet.
Tak for det. Er også den løsningsmetode der lyder mest fornuftigt, og sikre bedste kode. Men var ikke 100% sikker, da det jo også er et spøgsmål om holdning og kodestandard. Så hvis du sender et svar.... :-)
Tjah... Sådan som du beskriver din struktur er jeg nok enig med sherlock, men jeg tror nu at jeg selv ville gribe det lidt anderledes an. Det lyder som om at du er interesseret i at behandle cpr numre som objekter du kan udføre en række tests op imod og jeg tror derfor at jeg ville define en cpr nummer klasse hvis constructor tager et cpr nr. Du kan således allerede ved oprettelse af dit objekt sikre dig at data er valide og du skal således kun håndtere exceptions et sted.
class CprNummer { public CprNummer(string cpr) { if (!this.IsValid(cpr)) { throw new ArgumentException("Supplied cpr is not valid"); } this.cpr = cpr; }
if (cpr.IsMale) { //Do something to show that person is male }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.