39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
![]() |
Some API, like the AWS SDK, heavily rely on the builder pattern to create different data structures. Despite all the benefits, this pattern can become really verbose,
|
||
|
|
||
|
especially when dealing with nested structures. In order to reach a more concise code, "Consumer Builders", also called "Consumer Interface" are often introduced.
|
||
|
|
||
|
The idea is to overload the methods taking others structures in a Builder with a Consumer of Builder instead. This enables the user to use a
|
||
|
|
||
|
lambda instead of nesting another Builder, resulting in more concise and more readable code.
|
||
|
|
||
|
|
||
|
This rule reports an issue when the Consumer Builder methods could be used instead of the classical ones.
|
||
|
|
||
|
|
||
|
== Noncompliant Code Example
|
||
|
|
||
|
----
|
||
|
SendEmailRequest.builder()
|
||
|
.destination(Destination.builder()
|
||
|
.toAddresses("to-email@domain.com")
|
||
|
.bccAddresses("bcc-email@domain.com")
|
||
|
.build())
|
||
|
.build();
|
||
|
----
|
||
|
|
||
|
|
||
|
== Compliant Solution
|
||
|
|
||
|
----
|
||
|
SendEmailRequest.builder()
|
||
|
.destination(d -> d.toAddresses("to-email@domain.com")
|
||
|
.bccAddresses("bcc-email@domain.com"))
|
||
|
.build();
|
||
|
----
|
||
|
|
||
|
|
||
|
== See
|
||
|
|
||
|
* https://aws.amazon.com/fr/blogs/developer/consumer-builders-in-the-aws-sdk-for-java-v2/[Consumer Builders in the AWS SDK for Java v2]
|
||
|
|