Agile Software Craftsman
Software Anarchist
blog : https://blog.crafting-labs.fr
twitter : @avernois
#ISpeakForFood
Vous attendez quoi de cette formation ?
Une attention continue à l'excellence technique et au bon design améliore l'agilité.
Manifeste Agile, 9è principe
Répondre au changement plutôt que la poursuite d'un planManifeste agile, 4è valeur
Any fool can write code that a computer can understand. Good programmers write code that human can understand.Martin Fowler
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.Martin Golding
...if you're afraid to change something it is clearly poorly designed.Martin Fowler
Un logiciel est de bonne qualité si le coût d'ajout d'une fonctionnalité est constant dans le temps.Jérôme Avoustin
Clean code is not about beautifullness,
it's about goodness.Rebecca Wirfs-Brock
- testé !
- sans duplication
- révèle son intention
- facile à lire
B. Stroustrup, R. Jeffries, K. Beck, M. Feathers, W. Cunningham, ...
- les tests passent
- clair, expressif et consistent
- sans duplication
- méthodes, classes, modules minimaux
Extreme Programming, Kent Beck
Ils vous donnent confiance pour modifier le code.
Généralement, sources de problèmes et d'incompréhension
Généralement, sources de collaboration
1 exemple = 1 test
écrit avant, il guide le développement
spécification exécutable
feedback continu
non-régression permanente
plus fiable qu'un test manuel
permet aux testeurs d'utiliser au mieux leurs compétences
un test qui vérifie un comportement d'un morceau de code isolé du reste.
C'est bon ça marche, pas besoin de test.
Je suis à la bourre, et j'ai du fonctionnel plus important. J'écrirai les tests plus tard.
Les tests c'est pour ceux qui savent pas coder.
First make it works, then make it rightLe code n'est ajouté que pour répondre à la nécessité de faire passer un test.Kent Beck
entre developpeurs
quelques minutes
aussi souvent que nécessaire
au tableau
CRC : Class, Responsability, Collaboration
YAGNI : You aren't gonna need it
les décisions sont prises au dernier moment responsable
Acceptance Test Driven Developpement
Behaviour Driven Developpement
- les tests passent
- clair, expressif et consistent
- sans duplication
- méthodes, classes, modules minimaux
Extreme Programming, Kent Beck
a.getB().getC().doThings(); // NO !
class A {
B b;
doThings() {
b.doThings();
}
...
}
class B {
C c;
doThings() {
c.doThings();
}
...
}
a.doThings();
public class A {
private B b;
public void execute(int i) {
b = new B();
C c = new C();
if (i <= 3) {
b.executeB();
} else {
c.executeC();
}
}
}
public void main(){
A a = new A();
a.execute();
}
public class A {
private B b;
public A(B b) { this.b = b; }
public void execute(int i, C c) {
if (i <= 3) {
b.executeB();
} else {
c.executeC();
}
}
}
public void main(){
B b = new B();
A a = new A(b);
a.execute(3, new C());
}
Comments are always failureUncle Bob
Don't comment bad code. Rewrite it.Brian W. Kernighan, P.J. Plaugher
/*
* A comment to please checkstyle
*/
/*
* Set the port
*
* @params port
*/
public void setPort(Port port) {this.port=port}
...
} /* end for */
dao.flush();
default :
break;
} /* end switch */
} /* end if */
} /* end if */
} catch ...
Ne pensez pas héritage, pensez polymorphisme
Ne pensez pas if/switch, pensez polymorphisme
Any fool can write code that a computer can understand. Good programmers write code that human can understand.Martin Fowler
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.Martin Golding
...if you're afraid to change something it is clearly poorly designed.Martin Fowler