A l’occasion d’un entretient, on m’a proposé de développer une méthode simple. L’idée n’était pas tant de coder la fonctionnalité que d’expliquer le raisonnement. Dans la suite, je ne vais pas vous expliquer comment bien programmer, en partant des tests, car j’ai déjà fais un billet intitulé « Kata Digital Romain » à ce sujet. A la place, je vais vous proposer plusieurs solutions qui me semble intéressantes, en Java standard, à l’aide de Guava, ou encore grâce à une approche fonctionnelle.
Archives pour la catégorie Java
Kata Digital Romain
Pour m’amuser, je me suis intéressé à un exercice qu’on demande souvent en entretien pour tester les réflexes des candidats : la conversion d’un nombre dans sa représentation romaine, en Java.
Le sujet de cet exercice est relativement simple. On prend un nombre et on doit calculer sa représentation romaine.
Pour rappel, la représentation romaine se base sur une série de lettres : I (1), V (5), X (10), L (50), C (100), D (500) et M (1000). Pour le chiffre avant l’unité, on a une règle spéciale : IV (4), IX (9), XL (40), etc. Ainsi, on écrira « CCCLXIX » pour « 369 » et « MMDCCLI » pour « 2751 »…
Un Boolean peut prendre trois valeurs
Que ce soit dans les copies de mes élèves ou dans les programmes de mes collègues, je tombe sans arrêt sur le même bug, à savoir qu’un « Boolean », ça peut prendre trois valeurs…
Tests unitaires de la calculette des timbres Marianne de Cap Rikiki
Le module « Marimod », développé par la société « Cap Rikiki », gère une grosse partie des opérations réalisables avec les timbres de la série « Marianne ». Il fournit en particulier une calculette permettant de déterminer les timbres à utiliser pour un montant donné.
En plus de livrer ce module à son client, Cap Rikiki livre des tests unitaires pour bien montrer que cela fonctionne. C’est d’autant plus simple pour Cap Rikiki que la méthode 3T (Tests en Trois Temps), inspirée des TDD (Test Driver Developement) a été utilisée sur le projet.
Pour le fun : blanc noir gris
Pour le temps de faire une petite pause dans ma journée, je vous propose une solution à un problème simple. Il s’agit de programmer une méthode qui prend un entier N en entrée. Si N est un multiple de 3, ça renvoie « blanc ». Si N est un multiple de 5, ça renvoie « noir ». Si N est un multiple de 3 et de 5, ça renvoie « gris ». Enfin, dans tous les autres cas, ça renvoie trois petits points.
Indice pour le quizz Devoxx France 2013
Comme vous le savez, Devoxx France 2013 se déroulera à Paris du 27 au 29 mars. A cette occasion, un partenariat entre Developpez.com et la team Devoxx nous permet de vous faire gagner une entrée gratuite à la conférence, avec accès à tout durant les trois jours. Le gagnant pourra y rencontrer les membres de Développez.com, surtout l’équipe Java, mais aussi assister à de nombreuses présentations de qualité. Pour compléter le tout, le jeudi soir sera un moment privilègier pour déguster vins et fromages. Et quelques surprises vous attendent.
@ExtensionMethod de Lombok-pg
Lombok-pg, le complément idéal de Lombok, propose l’annotation @ExtensionMethod qui permet d’ajouter des petites fonctionnalités directement dans nos objets.
Je trouve mon rythme à Devoxx
Le deuxième jour de Devoxx France 2012 vient de prendre fin. C’était intense. Comme hier, la rédaction de Developpez.com était au rendez-vous. Comme hier, je ne vais pas avoir assez de temps pour détailler chaque conférence. Je le ferai dans quelques jours, lorsque l’adrénaline sera retombée. Pour le moment, je vais me contenter de décrire ma journée au Marriot.
Faire pleurer vos collègues
Voici 4 méthodes. Pour chacune il faut expliquer ce qui se passe, sans tester le code (sinon c’est trop facile).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 @Test
public void testCalcul1() {
int i;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul2() {
int i = 0;
i = i++;
System.out.println(i);
}
@Test
public void testCalcul3() {
int i = 1;
i = 1 + i++;
System.out.println(i);
}
@Test
public void testCalcul4() {
int i = 1;
i = 1 + ++i + i++;
System.out.println(i);
}
Serializable et UID
Voici une petite précision qui n’a l’air de rien mais qui a son importance.
Quand vous avez une classe qui implémente l’interface Serializable
, pensez à créer l’attribut « serialVersionUID
« .
En général Eclipse vous invite à le faire et vous propose de le générer automatiquement (ne prenez pas la valeur bidon) via le quick fix.
Je vous renvoie vers le Javadoc : http://download.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html
Lire la suite