Man skal lige vænne sig til den nye syntaks, men det tager ikke lang tid.
Synes at den er meget pænere, kortere og mere effektiv hvor at den gamle fylder ufatteligt meget.
Førhen var jeg glad for "old-school" fordi jeg nemmere direkte kunne læse hvad der skete, men nu efter jeg har vænnet mig til det synes jeg at jeg kan strukturere min kode meget bedre så den ikke fylder så meget og man dermed nemmere kan få læst pointen af koden.
BTW. det med nestede if'er er jeg imod fordi det skaber for mange niveau'er og det kræver mere fokus at se hvad der sker. Så jeg ville flytte min if på niveau 2 op i første if og sige "&&" sammen med den fordi begge er betingelser skal opfyldes for at kunne komme ind til dit inderste niveau, uden at du skal lave mellemberegninger eller andet før du kan gå længere ind.
Derudover bruger jeg ofte modsatte if's der siger hvis det her ikke er opfyldt så break, og så udfører mere og mere kode dernedaf.
Sådan at du ikke har if/else indeni if/else og sådan dernedaf.
Så kan du strukturere din kode nemmere ved at lave
- int i = 2;
- if (i > 1)
- {
- if (i%2 == 0)
- break;
-
- MaxModel max = modelListe[i].Max;
- if (max == null)
- break;
-
- bool calculated = max.calc();
- if (!calculated)
- break;
-
- double maxBelob = max.belob;
- double maxBelobMoms = maxBelob * 1,25;
- return new { Max = maxBelob, MaxMedMoms = maxBelobMoms };
- }
- return new { Max = 0, MaxMedMoms = 0 };
Et lille eksempel for at vise hvordan du kan lave dine nestede if/else pænere og mere læsbare fremfor at have rigtigt mange if'er nestede under hinanden.
Samme eksempel med nestede if'er:
- int i = 2;
- if (i > 1)
- {
- if (i%2 != 0)
- {
- MaxModel max = modelListe[i].Max;
- if (max != null)
- {
- bool calculated = max.calc();
- if (calculated)
- {
- double maxBelob = max.belob;
- double maxBelobMoms = maxBelob * 1,25;
- return new { Max = maxBelob, MaxMedMoms = maxBelobMoms };
- }
- }
- }
- }
- return new { Max = 0, MaxMedMoms = 0 };
Dog ved jeg ikke om dit eksempel kan løses direkte med en Conditional Operator fordi du har skiftende omstændigheder.
Min udgave af sin kode ville være:
- bool isZero = hoursStr.Equals("0,0") || hoursStr.Equals("0.0");
-
- if (isZero && createZero)
- {
- rn.AppendChild(n);
- }
- else
- {
- rn.AppendChild(n);
- }
Men giver det samme, og du kunne effektificere mere ved at gøre:
- (isZero && createZero) ? rn.AppendChild(n) : rn.AppendChild(n);
Men resultatet ser umiddelbart ud som om du laver det samme fordi din else alligevel appender.
Indlæg senest redigeret d. 16.04.2013 18:26 af Bruger #17215