On 22.10.2015 17:29, Martin Basti wrote:
> Hello all,
> 
> in current master branch we have mixed usage of literals 0, 1 and constants
> MIN_DOMAIN_LEVEL, MAX_DOMAIN_LEVEL, and it is quite mess.
> 
> I suggest to use names for domain levels:
> 
> COMPAT_DOMAIN_LEVEL = 0
> PROMOTION_DOMAIN_LEVEL = 1
> UBER_NEW_FEATURE_DOMAIN_LEVEL = 2
> 
> MIN_DOMAIN_LEVEL = COMPAT_DOMAIN_LEVEL (=0)
> MAX_DOMAIN_LEVEL = UBER_NEW_FEATURE_DOMAIN_LEVEL (=2)
> 
> Benefits:
> * ability to grep it in code
> * better readability in code

I very much agree. If you want to see the reason with naked eye, see
[PATCH 0086] disable ipa-replica prepare in non-zero domain levels

Without additional constants we will end up with checks like:

+        domain_level = dsinstance.get_domain_level(api)
+        if domain_level > MIN_DOMAIN_LEVEL:
+            raise RuntimeError(

Fail if domain_level is higher than MIN_DOMAIN_LEVEL? What?

Even worse, bad things will happen in future when we decide to drop support
for domain level 0 etc.

Of course, using literals 0, 1, etc. is an option, but I do not like it very
much. Again, when we drop support for a particular level we need a way to
clean up the code, so named constant seems like a way to go.

-- 
Petr^2 Spacek

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to