Recension av Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code är skriven av Robert C. Martin, även känd som Uncle Bob. Han har arbetat som mjukvaruutvecklare sen 70-talet, är engagerad i agil utveckling och en förespråkare av testdriven utveckling. På denna länk finns kod utvecklad av Uncle Bob: https://github.com/unclebob. Där finns bland annat FitNesse som tas upp som exempel i boken.

Clean Code handlar om hur man skriver ren kod, alltså kod som är lättläst, lättförståelig och möjlig att underhålla. Alla som har några års erfarenhet av att utveckla mjukvara vet att kod har en tendens att bli invecklad och svårförståelig. Det kan bero på okunnighet men det är desto vanligare att tajta tidplaner och deadlines tvingar utvecklare att stressa fram en fungerande funktion. När nästa utvecklare sen ska bygga vidare på denna funktion fortsätter det i samma onda spiral och koden blir bara värre och värre.

Boken börjar med ett antal kapitel om hur man ska tänka för att skriva ren kod. Dessa kapitel är väldigt bra och lättlästa. De tar bland annat upp delar som namngivning, funktioner, kommentarer, formatering, felhantering och tredjepartsverktyg. De flesta av reglerna är enkla så som:
– Använd självbeskrivande namn utan förkortningar
– Funktioner ska vara små och ännu mindre med så få parametrar som möjligt
– Ren kod behöver inga kommentarer
Efter kapitlen ovan kommer en del där ett program beskrivs och på vilka sätt det programmet kan brytas ner och förbättras. Det här kapitlet är också bra men lite tyngre.

Något som förespråkas i boken är att när befintlig kod vidareutvecklas ska den lämnas lite bättre och renare än den var innan. Detta är en bra tanke men problemet med detta är att det kräver att det finns test av alla funktioner. Om test saknas finns en stor risk att buggar införs vid större ändringar och omstruktureringar.

Jag skulle rekommendera den här boken till alla mjukvaruutvecklare. Exemplen är skrivna i Java men jag skulle rekommendera den även till dem utan erfarenhet av Java. Boken är lättläst, har bra exempel, innehåller mycket igenkänning och enkla tips för att skriva renare kod. Det är en rolig och intressant bok att läsa och jag lärde mig mycket.

Data validation made simple using Bean Validator

There are many validation frameworks out there. But the one that we are going talk about is Bean Validation API (JSR 303).  With Annotations and a simple API it is quite straight forward to express constraints on data; objects. The implementation’s that I have come across are from Apache and Hibernate. An example say’s more than 1000 words as mentioned on Hiberate Validator site.

public class Car {

   @NotNull
   private String manufacturer;
 Continue reading 

JFocus 2013 PM

Continued from JFocus 2013 AM

When we had attended the web sockets / web service hands-on lab, I went on to the next session, Simon Ritter had a 3½ hours session about the raspberry pi.

To sum up, the raspberry pi is a credit card sized computer with 512 MB memory, 1 GHz ARM Cortex. It has powerful (compared to its size) graphics capabilities, that makes it possible, to run HDMI. It is built to run Linux and there is a lot of different distributions, but there is an Android build in the making.

The interesting part here is the graphics processor built in the processor. Since this was a lab and everyone could not bring a screen and keyboard and mouse to the lab we used our laptops, accessing the Linux build through VNC, and in this case the VNC client was running the graphics on the CPU.

Now this is normally not a problem but since the hands-on lab was about implementing Java FX on the raspberry pi platform and learning about how to use a small powered CPU and Graphics processor with Java FX that can be quite demanding, this proved to be a minor flaw in the course.

Given that the demonstration was about how powerful the GPU was and the VNC client did not access the GPU, the demonstration failed.

The course about Java FX was rich and I learned a lot about another way of using the Java FX, but in general bad execution made several of the attendants to leave the class room.

JFocus 2013 AM

I was so fortunate to attend to jFocus this year. Though it was this sprint I wanted to wrap up the year by going through the events I attended.

The first course I attended was a Hands-on Lab where we looked through Websockets and Webservices, two subjects that I am personally interested in. The main examples lets us make and run a basic website called movieplex. The main page is a template website that is connected with basic html to a web service.

When we went through the lab, some of the technology was so new that we needed to download the newest versions of glassfish the application server we used, and the newest version of java 7.

The Lab was separated in to two parts, first part was building the web service, going through the basic of JAX-RS and the second part was connecting to the web service to the web socket.

The connection of the web socket to the web service, was painless and with minimal effort, just adding a few lines of code to the project.
I have included the project files, if you are interested in trying out the lab yourself.

javaee7-hol page_white_acrobat lab-guide page_white_acrobat

H2 Db – the Java SQL database

The outstanding features of H2 are:

  • Fast, open source, JDBC API
  • Embedded and server modes; in-memory databases [perfect as test database]
  • Browser based console application [access database via web interface]
  • Small footprint: around 1.5 MB jar file size
  • Simple and easy to implement Continue reading