London and Detroit schools of unit tests
London and Detroit schools are two popular ways of writing unit tests for our applications. They differ in several details, notably the answer to the question “what is a unit”. It’s likely that you already know them, just not by their names. We may think that they compete with each other, however each has its […]
Building a Kotlin DSL for your automatic tests
Two weeks ago, we entered the world of building domain specific languages in Kotlin. The previous article was rather theoretical. Now it’s time to put the theory into practice. We are going to build a Kotlin DSL for automated tests. The goal is better describing business use cases in the ‘given’ section. Also, why not […]
Build a successful Kotlin DSL for your business domain
Kotlin is a great language for building custom Domain Specific Languages (DSL). Thanks to many features, building a DSL in Kotlin is a piece of cake… is it? The language is just a tool, and it is not the only tool needed to build a successful DSL. In this introductory article, I’d like to show […]
How to share Gradle version catalogs between projects
Gradle version catalogs are a new feature of Gradle build system. They help managing dependency versions in the projects. In the previous article, we explored how to use them locally. This time, we are going to learn, how to share a single version catalog between many projects. This may be useful for teams that own […]
Manage your dependencies with Gradle version catalogs
Since the very beginning, Gradle build system relied on Maven artifacts for managing dependencies and their versions. It was a good move from the adoption point of view (access to large library repositories). However, it also meant that for a long time, Gradle lacked a couple of very useful native features. A central place for […]
Avoid too many function arguments
Code maintainability is a set of guidelines that help making our software easier or cheaper to maintain in long term. It is a cognate to the clean code which is about being able to understand other’s code. Today, I’m going to talk about avoiding too many function arguments. I will show how it translates to […]