[ovirt-devel] Removing boilerplate code in engine
Yair Zaslavsky
yzaslavs at redhat.com
Mon Jul 14 06:16:18 UTC 2014
Good job.
In general, we have a uutils module for utils that can serve other projects, not just engine (i.e - we can have a separate artifact that does not depend on common for example).
IMHO, 2 is a good candidate to go to uutils.
Yair
----- Original Message -----
> From: "Mike Kolesnik" <mkolesni at redhat.com>
> To: devel at ovirt.org
> Sent: Sunday, July 13, 2014 9:15:06 PM
> Subject: [ovirt-devel] Removing boilerplate code in engine
>
> Hi,
>
> I recently introduced 2 changes for removing boilerplate code:
>
> 1. http://gerrit.ovirt.org/29414 - Fluent syntax for writing validations
> 2. http://gerrit.ovirt.org/29617 - Wrapper for locks to use with
> try-with-resources
>
> By removing boilerplate code we're making the code less error prone and
> easier to read (and maintain).
> I've already sent some simple refactors to use these new styles of writing,
> but more work is necessary to apply to the whole project.
>
> I urge all engine developers that need to write such code to use the new
> styles of writing.
>
> Below are examples for each change.
>
> 1. When expecting a negative outcome, instead of using:
> return getVds() == null
> ? new
> ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NOT_EXIST)
> : ValidationResult.VALID;
>
> use:
> return
> ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NOT_EXIST)
> .when(getVds() == null);
>
>
> When expecting a positive outcome, instead of using:
> return
> FeatureSupported.nonVmNetwork(getDataCenter().getcompatibility_version())
> ? ValidationResult.VALID
> : new
> ValidationResult(VdcBllMessages.NON_VM_NETWORK_NOT_SUPPORTED_FOR_POOL_LEVEL);
>
> use:
> return
> ValidationResult.failWith(VdcBllMessages.NON_VM_NETWORK_NOT_SUPPORTED_FOR_POOL_LEVEL)
> .unless(FeatureSupported.nonVmNetwork(getDataCenter().getcompatibility_version()));
>
>
> 2. To lock a block of code, instead of using [1]:
> lock.lock();
> try {
> // Thread safe code
> } finally {
> lock.unlock();
> }
>
> use:
> try (AutoCloseableLock l = new AutoCloseableLock(lock)) {
> // Thread safe code
> }
>
> [1] This is best used with locks from java.util.concurrent.locks package.
> For regular thread safe blocks it's best to use the standard synchronized
> block.
>
> Regards,
> Mike
> _______________________________________________
> Devel mailing list
> Devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/devel
>
More information about the Devel
mailing list