Slide 30
Slide 30 text
VictorRentea.ro
96
Ugly large constructor
x = new X(1, 2, 3, false, -1, null, "X");
L .toBuilder() allows unrestricted changes
var obj2 = obj1.toBuilder().a(1).b(2)...build();
J Meaningful methods, that may guard rules
builder.fullName("First", "Last")... // manual builder
var obj2 = obj1.withFullName("First", "Last"); // wither
J Deeper model (new types)
var obj2 = obj1.withFullName(new FullName("F", "L"));
Code Smells
Fragmented Immutable Builder
>>
Named parameters
x = X(a=1,b=2,c=3,...)
data.copy(a=1, b=2)