Oğuzhan Soykan
09/02/2025, 1:06 PMcontext parameters
can help domain modelling and aggregate root design:
https://oguzhansoykan.com/posts/2025/2025-07-21-context-parameters-ddd/Arjan van Wieringen
09/02/2025, 1:15 PMwith (product) {
variant.changeSizeAndDimensions()
}
Oğuzhan Soykan
09/02/2025, 1:19 PMcontext(ar: Product, x: ProtectedComponent)
x
is a protected
component only accessible inside of the AR.
Blog post sheds small light to the usage, the rest on people’s imagination 🙂Arjan van Wieringen
09/02/2025, 1:20 PMOğuzhan Soykan
09/02/2025, 1:22 PMOkay, but code reviews will also solve the original problem then?In theory, indeed 😄
Oğuzhan Soykan
09/02/2025, 1:24 PMwith
can’t be used over ARs, etc.Arjan van Wieringen
09/02/2025, 1:32 PMArjan van Wieringen
09/02/2025, 1:32 PMpackage domain
data class Product(
val name: String,
val price: Double,
) {
fun variants(): List<Variant> = listOf(Variant("foo"))
}
data class Variant(
val name: String,
) {
internal fun doSomething() {
}
}
And in another gradle module:
fun main() {
val product = Product("Foo", 100.0)
val variants = product.variants()
variants.first().doSomething() // wont compile
}
Oğuzhan Soykan
09/02/2025, 1:36 PMArjan van Wieringen
09/02/2025, 1:37 PMOğuzhan Soykan
09/02/2025, 1:42 PM