1 / 20

Gruppe sort

Gruppe sort. Morten, Peter, Jesper, Spencer & Støving. Item 40. Design method signatures carefully. Design method signatures carefully ! (1/3). Metoder skal gøre én ting Undgå f.eks. getNamesOfPeopleAndDropRowsWithTheNamesInIT (…) Undgå mange parametre

senwe
Download Presentation

Gruppe sort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gruppe sort Morten, Peter, Jesper, Spencer & Støving

  2. Item 40 Design method signatures carefully

  3. Design methodsignaturescarefully! (1/3) • Metoder skal gøre én ting • Undgå f.eks. getNamesOfPeopleAndDropRowsWithTheNamesInIT(…) • Undgå mange parametre • Undgå f.eks. getNamesWhere(name, grade, age, skillLevel, class, gender,…); • Brug enums i stedet for booleans som input • Thermometer.newInstance(TemperatureScale.CELSIUS) i stedet for Thermometer.newInstance(true)

  4. Design methodsignaturescarefully! (2/3) • Alle metoder skal være brugbare i flere tilfælde • Undgå f.eks. getPeopleBornIn1990(…); • Brug f.eks.: getName, getLength, getSublist(indexA, indexB); • Ved parametre, brug interfaces i stedet for klasser • Undgå f.eks. setListOfPeople(arraylistOfNames,…); • Brug: setListOfPeople(abstractlistOfNames); • Går an på hvad du har brug for af egenskaber

  5. Design methodsignaturescarefully! (3/3) • Hvad gør denne kode?

  6. Item 60 Favor the use of standard exceptions

  7. Favor the use of standard exceptions (1/3) • Stort udvalg af eksisterende exceptions • Mindre hukommelsesbrug & tid at loade klasserne • Nemmere at genbruge kode • Nemmere for andre at forstå

  8. Favor the use of standard exceptions (2/3) • IllegalArgumentExeption • IllegalStateException • NullPointerException • IndexOutOfBondsException • Eksempel:

  9. Favor the use of standard exceptions (3/3) • Lav gernespecifikkesubklasserafeksisterende exceptions • Brug de eksisterende unchecked exceptions hvordeter relevant

  10. Item 30 Use enums instead of int constants

  11. Enums, the wrong way (1/5) • public static final int APPLE_FUJI = 0; • public static final int APPLE_PIPPIN = 1; • public static final int ORANGE_NAVEL = 0; • public static final int ORANGE_TEMPLE = 1;

  12. Enums, the general way (2/5) • Fungerer i princip som egentlige klasser. • Eksporterer en enkel instans for hver enumeringskonstant. • Som altid bedst med public accessor metoder

  13. Interessantemetoder (3/5) • Generelt kald • toString() • values() • valueOf(String)

  14. Constant-specific method implementation (4/5) • Nogle gange ønsker man ikke fælles implementation for enums • Derfor kan der erklæres metoder for hver konstant

  15. Private nested enums (5/5) • ”Tvinger” enclosingclass til at vælge en implementation

  16. Item 10, 20 & 50

  17. Item 10: AlwaysoverridetoString() • Alle klasser arver toString() fra Object • Returnerer som standard navnet på klassen og objektets hukommelsesadresse • Fortæller intet om klassens indhold Print objektes værdier som klassen Person der printet navn & telefonnummer

  18. Item 20: Preferclasshierarchies to taggedclasses Giver meget ulæsbar kode og kan nemt give problemer ved udvidelse Shape Shape Kender sin egen state, om det er en cirkel, trekant eller cirkel Hver klasse arver fra Shape

  19. Item 50: Avoidstringswhereother types are more appropriate • Strings er for det meste meget langsomme at arbejde med • String id = ”#10203”, hvis man skal bruge nummeret flere gange, skal man parse id hver gang • F.eks. intidNumber = id.parse(…); kun én gang

  20. Shows over! Youcan go outside and playnow!

More Related