Milo van der Zee https://vanderzee.org/java/article-161125-155014 DevOxx Antwerpen 2016 Milo van der Zee https://vanderzee.org/java/article-161125-155014
Externe services Korte ontwikkel tijden Integratie met bijvoorbeeld mobiel Service degradatie ipv uitval
Code schuld Weet jij waar je schuld zit?
TDD is slecht Je maakt iets om een functie te vervullen. Niet om een test te laten slagen. Tests zijn nooit compleet dekkend Tools als Cucumber kunnen wel als communicatiemiddel helpen
Verminder garbage variabelen Gebruik geen i of n maar zinvolle namen Lambda’s helpen om garbage variabelen te voorkomen
Liever simpel dan slim Als je trots bent op je slimme oplossing moet je opnieuw beginnen en een simpele oplossing bedenken. Anderen moeten het snel kunnen snappen
Javadoc beschrijft ‘wat’ niet ‘hoe’ Javadoc moet omschrijven ‘wat’ er gebeurt, Niet ‘hoe’ het gebeurt.
Javadoc betekent code schuld Als je javadoc nodig hebt dan is de methode naam of de code niet duidelijk. Zorg dat de code wel duidelijk wordt ipv er een uitleg bij te zetten.
Korte methode kan lang zijn Kort is belangrijk om leesbaar te blijven. Maar een enorme switch kan best leesbaar zijn. Inspringen is veel meer een indicatie van een ‘lange’ methode. Inspringen geeft complexiteit aan.
Zinvolle variabele namen Als je geen naam kunt bedenken dan klopt je algoritme niet
Schrijven doe je voor je opvolgers Schrijven doe je eenmalig en met volledig begrip van de materie. Neem de tijd om duidelijke code te schrijven zodat opvolgers het ook snappen. Code wordt veel vaker gelezen dan geschreven
Group code review Doe code reviews op de beamer. Kijk met de groep naar je code en 10-tegen-1 dat je tips krijgt en wat leert. Meteen goed voor de overdracht
Voeg fouten toe Maak expres wat foutjes om de rest van het proces te controleren Zie het als een brandoefening Borg wel dat je fout er wel weer uit gaat!
Copy-Paste programming is top Kopieren van code uit Stack-Overflow leidt tot goede code
Gebruik geen eigen libraries Kopieer de code uit de library en pas deze aan waar nodig. Dit voorkomt coupling.
Optimaliseer L0 en L1 gebruik Houdt loops klein voor optimaal L0 gebruik Houdt data bij elkaar voor optimaal L1 gebruik
Iterators zijn zooooo 2014 Gebruik lambdas met streams. Denk aan collection.removeIf().
Collection naar stream en terug traag Probeer niet alles naar streams om te zetten. Dat kan heel veel performance kosten. Herschrijf echt naar streams.
Remove elements ArrayList size: 10.000 ArrayList size: 200.000
Berekeningen 100.000.000 integers:
Gebruik primitives 10.000.000 elementen: Int[] = 40MB Integer[] = 160MB ArrayList<Integer> = 215MB
Vragen?