4 ms·
Readable to me, and I assume most other Java programmers. Here's an example I recently came across [0]: Option A: static <X, Y, Z> Map<X, Z> transform(Map<
by MarkMc 8y ago
Readable to me, and I assume most other Java programmers. Here's an example I recently came across [0]:
Option A:
static <X, Y, Z> Map<X, Z> transform(Map<? extends X, ? extends Y> input,
Function<Y, Z> function) {
return input.keySet().stream()
.collect(Collectors.toMap(Function.identity(),
key -> function.apply(input.get(key))));
}
Option B:
static <X, Y, Z> Map<X, Z> transform1(Map<? extends X, ? extends Y> input,
Function<Y, Z> function) {
Map<X, Z> result = new HashMap<>();
input.forEach((k, v) -> result.put(k, function.apply(v)));
return result;
}
Personally I find Option B more readable. Another example:
Option A:
protected boolean isCashBasis(CalendarDate effectiveDate) {
return priorVatReturns.stream()
.filter(r -> r.period.contains(effectiveDate))
.findFirst()
.map(r -> r.basis == AccountingBasis.CASH_BASIS)
.orElseGet(() -> super.isCashBasis(effectiveDate));
}
Option B:
protected boolean isCashBasis(CalendarDate effectiveDate) {
for (VatReturn r : priorVatReturns) {
if (r.period.contains(effectiveDate)) {
return r.basis == AccountingBasis.CASH_BASIS;
}
}
return super.isCashBasis(effectiveDate);
}
Again I would choose Option B, although I suppose Option A isn't too bad.
[0] https://stackoverflow.com/a/25905196/76295 https://stackoverflow.com/a/25905196/76295
- agumonkey 8y agoeverytime I use generic statically typed oop I can't stop thinking about clojure or ml languages.. The amount of noise is deafening.