Depuis longtemps fascinés par l’expressivité et l’élégance de ces langages, nous cherchons à comprendre comment articuler les pratiques XP - TDD, Binômage, remaniement du code, itérations - et le paradigme fonctionnel; à identifier les points faibles et forts de ces langages par rapport au paradigme dominant - l’objet - dans le cadre de processus de développement agiles; à convaincre le plus grand nombre, enfin, de la pertinence de modifier nos modes de pensée dans le sens où ces langages nous y invitent.
Using simple but proven design principles, this presentation explains the “Layered Module” architecture style, an approach to manage dependencies between the modules which compose a program. We will discuss the single responsibility principle. We will see how to use abstract classes and interfaces as a mean to reduce dependency surface. In the same way, we will present the techniques of dependency injection and inversion of control to reduce the coupling between classes. Lastly, we will discuss benefits to modularize and decouple with layers using namespaces (packages).