Split Method with Optional Parameters

 class​ Logbook {
 
 static​ ​final​ Path CREW_LOG = Paths.get(​"/var/log/crew.log"​);
 
» List<String> readEntries(LocalDate date) ​throws​ IOException {
 final​ List<String> entries = Files.readAllLines(CREW_LOG,
  StandardCharsets.UTF_8);
 if​ (date == ​null​) {
 return​ entries;
  }
 
  List<String> result = ​new​ LinkedList<>();
 for​ (String entry : entries) {
 if​ (entry.startsWith(date.toString())) {
  result.add(entry);
  }
  }
 return​ result;
  }
 }

Booleans as you’ve seen them in Split Method with Boolean Parameters aren’t the only indicators of methods that do too much. Optional parameters have the same problem, but they’re harder to spot.

This time, we’re looking at how data ...

Get Java By Comparison now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.