Tijdens een smalltalk code review werd ik gewezen op mijn gebruik van OR:
1 | (value = #one) :or (value = #two) ifTrue: [doIt] |
Een betere manier is om een array literal te creeren en dan includes te gebruiken:
1 | (#(#one #two) includes: value) ifTrue: [doIt] |
In java is de OR versie als volgt:
1 2 3 | if ("one".equals(value) || "two".equals(value) ) { doIt(); } |
Er is niet zo een simpele manier om arrays in java te definieren, maar wel een array list:
1 2 3 | if (Arrays.asList("one", "two").contains(value)) { doIt(); } |
Met een static import:
1 2 3 | if (asList("one", "two").contains(value)) { doIt(); } |
De array list oplossing kost wel wat performance, maar het is in mijn ogen leesbaarder, zeker als je nog meer cases toevoegt. En met een een introduce variable refactoring kun je het zelfs nog duidelijker maken:
1 2 3 4 | String[] numbersToProcess = asList("one", "two"); if (numbersToProcess.contains(value)) { doIt(); } |
Probeer eens de versie met || luidop te lezen en vervolgens de laatste versie.
