Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian.

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
Dagens program  Emne: Tim Berners-Lees WWW koncept og deraf følgende innovationer Forbered hver for sig Præsenter og diskutér i grupper Fremlæggelse med.
Når en applikation går i fejl… … er det interessant, at vide noget om: Hvornår gik applikationen i fejl Hvilken applikation gik i fejl Hvad er fejlen.
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
Select one of the 3 title pages and delete the others. Please do not create new title pages by using the layouts Title 1 – 3 as these layouts do not contain.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
Distribueret programmering, specielt Web Services Rasmus D. Lehrmann DM
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Arkitektur Embedded SQL Tema Persistens
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Modul 1 (B) Rød løber Tid: 30 minutter. Spilleregler for dagen.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
Database Normalization without Mathmatics
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
WCF service Hostet på website x. Opret tomt web applikations projekt.
Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Introduktion til.NET- platformen og version 2.0 Michell Cronberg Microsoft MVP
Distribution af funktionalitet Webservice med WCF x.
Distribution af funktionalitet Webservice med WCF x.
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Programering af mobile enheder Windows Phone Storage.
Henrik Westergaard Hansen ISV Developer Evangelist Microsoft
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Agenda 1.Informationer 1.Excel i fb.m. projekt 2 2.Reserver tid til projekt 2 3.Øvelse: a / b = c 2.Opsamling fra sidst 3.Estimation (konfidensintervaller)
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Nyt tværfagligt innovations tilvalgskursus på DTU Diplom Vil du bruge din faglighed i tværdisciplinært samarbejde med ingeniørstuderende fra andre retninger?
Reliable Architecture Ved Henrik Bærbak Christensen Reflective Architectures Emne: reflective architecture overview 11 december 2009.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Efteruddannelse Embedded C Modul 3 (Onsdag den 13/1-2010)
Paradigmer i Programmering 4. IO + oversigt over udtryk.
MEC, DAIMIIntroJava AAU1 Crayon-objekter nu med loops og metoder.
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
Repetition: Introduktion til OOP med C# og .NET
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Blå gruppe: Søren, Alexander, Torben, Lasse. De 4 vigtige items: - Singelton - Override clone judiciously - Use interfaces only to define type - Prefer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Præsentationens transcript:

Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian

Item 22 - Favor static members classes over nonstatic 1/2 Item 22 diskuterer hvornår og hvilke af de 4 forskellige typer nested classes man skal bruge og at man generelt burde foretrække static over nonstatic. De 4 typer: – Static member classes – Nonstatic member classes – Anonymous classes – Local classes.

Item 22 - Favor static members classes over nonstatic 2/2 Static member classes – Bruges til at være en “hjælper” klasse, som er til gavn i forhold til sin ydre klasse. Den har ikke brug for adgang til sin ydre klasse og spilder ikke plads på at have en ekstra og unødig reference til dens ydre klasse, f.eks: public class NestedClassTip { private String name = "instance name"; private static String staticName = "static name"; public static void main(String args[]) { NestedClassTip nt = new NestedClassTip(); NestedClassTip.NestedOne nco = nt.new NestedOne(); NestedClassTip.NestedTwo nct = new NestedClassTip.NestedTwo(); } class NestedOne { NestedOne() { System.out.println(name); System.out.println(staticName); } } static class NestedTwo { NestedTwo() { System.out.println(staticName); } } }

Item 30 – Brug enums i stedet for int konstanter 1/4 I gamle dage… Nu bruger man Enums Public static final int SEASON_WINTER = 0; Public static final int SEASON_SPRING = 1; Public static final int SEASON_SUMMER = 2; Public static final int SEASON_FALL = 3; public enum Seasons { WINTER, SPRING, SUMMER, FALL; }

Item 30 – Brug enums i stedet for int konstanter 2/4 Enum-værdier med forskellig adfærd er ikke godt public enum TrafficLight{ RED, YELLOW, GREEN; void light(){ switch(this){ case RED: stop(); case YELLOW: lowerSpeed(); case GREEN: go(); } throw new AssertionError(“unknown color: ”+this); }

Item 30 – Brug enums i stedet for int konstanter 3/4 Brug i stedet konstant-specifik metodeimplementationer public enum TrafficLight{ RED{ void light(){ stop(); } }, YELLOW{ void light(){ lowerSpeed(); } }, GREEN{ void light(){ go(); } }; abstract void light(); }

Item 30 – Brug enums i stedet for int konstanter 4/4 Hvorfor så bruge switch? – “Switches on enums are good for augmenting external enum types with constant- specific behavior.” // Switch on an enum to simulate a missing method public static Operation inverse(Operation op) { switch(op) { case PLUS: return Operation.MINUS; case MINUS: return Operation.PLUS; case TIMES: return Operation.DIVIDE; case DIVIDE: return Operation.TIMES; default: throw new AssertionError("Unknown op: "+op); }

Item 38 – Check parameters for validity 1/2 Hvad vil det sige? – At tjekke at alle parametre givet til konstruktorer og metoder er gyldige for at resultatet bliver korrekt. – Fx vil man ofte tjekke at at der ikke er angivet nogen null-pointere, da det vil give runtime fejl senere i metoden hvis der kaldes metoder på objektet. – En int parameter skal ofte have en værdi inden for et vist interval, eller fx bare være ikke-negativ (et index fx). Hvorfor er det vigtigt? – Jo tidligere man kan opsnappe fejl, jo nemmere bliver det at finde årsagen til fejl. – Værre er det hvis der ikke opstår nogen direkte fejl, og metoden returnerer et forkert/ugyldigt resultat. Således vil problemet blive kastet videre. – Værst er det hvis man efterlader et objekt i en ugyldig tilstand. Fx kan et Month objekt pludselig have værdien 13. Hvornår behøver man ikke gøre det? – Hvis tjekket er unødvendigt upraktisk. – Eller hvis selve udførslen af metoden vil opfange fejlen. – Hvis en metode fx sammenligner en række objekter, kræves det at objekterne er sammenlignelige. Der vil blive kastet en ClassCastException hvis der sker en ugyldig sammenligning.

Item 38 – Check parameters for validity 1/2 To eksempler på gyldighedstjek af parametre: /* IndexOutOfBoundsException if index is out of bounds */ public ListItem getItemAt(int index) { if (index this.size()) { throw new IndexOutOfBoundsException(); } …continue method } /* IllegalArgumentException if one of the objects are null */ public double calculateDistance(Point p1, Point p2) { if (p1 == null || p2 == null) { throw new IllegalArgumentException(); } …continue method }

Item 62 – Dokumenter alle exceptions kastet af hver metode 1/2 Dokumenter altid checked exceptions og unchecked exceptions individuelt ved hver metode ved brug af tag. – Programmøren bliver kendt med de fejl der kan laves og kan hermed undgå dem. Samme exception i flere metoder, så er det fint nok bare at skrive i kommentarerne: – Fx NullPointerException, “All methods in this class throw a NullPointerException if a null object reference is passed in any parameter,” eller lign.

Item 62 – Dokumenter alle exceptions kastet af hver metode 1/2 Eksempel på dokumentation af exceptions

Item 6 - Eliminate obsolete object references Aka unintentional object retention Hvad er det ? – a reference which “is no longer reachable by the program, but still considered reachable by the garbage collector” Eks. pop() Hvornår skal man være opmærksom på memory leak? Hvordan eliminerer man obsolete object referencer? – Nulling – Minimaliser scope (Item 45 – gruppe rød) Other sources for memory leak: caches, listeners and other callbacks

Item 14 - In public classes, use accessor methods, not public fields Jævnfør 1. forelæsning i Bosk om indkapsling Hvornår er det mere i orden at bruge public felter? – Immutable felter – Package-private klasser – Private nested klasser

Item 46 - Prefer for-each loops to traditional for loops Hvorfor? – Pladsbesparelse og mindre mulighed for fejl Hvorfor ikke? – Mindre fleksibilitet – Filtrering – Transformering – Parallel iteration

Item 54 - Use native methods judiciously Hvad er det? – “Special methods written in native programming languages such as C or C++” Hvorfor bliver de brugt? – Adgang til platform-specifikke faciliteter (registries og file locks). – Adgang til libraries of legacy code – Forbedret performance. Hvorfor skal man ikke bruge dem? – Mindre sikkerhed -> memory corruption errors. – Mindre transportable – Svære at debugge – Det koster performance at gå ind og ud af native code – Kræver “glue code”