26 March 2019 P1.0

Final edited release.

26 February 2019 B5.0

Content-complete and heading to copy edit and indexing.

29 January 2019 B4.0

• Avoiding if-not-else • Preferring AnyObject to class in protocols • Avoiding end-of-scope defer • Extended discussion of guard self • Preferring allSatisfy based on examples in Dave Abrahams’ SE proposal • Booleans: avoiding Boolean optionals and not testing Bools against Bools • Using isMultiple(of:) • Avoiding optional collections, preferring empty collections • Using Set operations wisely • Cleaning up skeletons and using TODO marks • Expanded justification for avoiding “magic” values • Added rant about fixed and eternal enumeration cases

12 December 2018 B3.0

  • More Swift 5-specific coverage including toggle, random, new string literal delimiters, multiplicity, and more.
  • Adopted updates to reflect Swift now has native Result
  • Fixed a few typos
  • Updated strongSelf with guard self =

06 November 2018 B2.0

  • Lots of small tweaks from reader feedback and fixed a few modernization errors. Send me your particular dislikes and counterpoints and I will be happy to consider them for incorporation.

13 August 2018 B1.0

Initial beta release.