Scala Design Patterns Book Review

Introduction

There are many books about scala, some are both advanced and incomprehensible to most, some are not only simple and introductory, but there is currently only one book which managed to touch the sweet spot of a balance between presenting advanced topics and being comprehensible. This book is Scala Design Patterns by Ivan Nikolov.

Scala Design Patterns

I don’t read it because of the design patterns!

I mean you can read this book in two ways. First way as a standard scala design patterns book. But the way I read it, is as a book written by an excellent writer who knows to explain himself, excellently, and as he want’s to describe the design patterns in scala language, he describes scala concepts, and he manages to do it much better than every book i have seen so far!

What the book covers

So what does the book cover, or what did I learn from it? many things I found hard to grasp by other books! here is the list:

  1. Mixin composition - Will guide you on how to compose functionality
  2. Multiple inheritance and scala - Will show you how scala solves or get’s around the multiple inheritance problem
  3. Linearization - The linearization process is the process by which scala get’s around the multiple inheritance problem, here is a clear explanation of it!
  4. Testing traits - Best practices for testing traits the scala way
  5. Traits vs classes - When do you prefer classes to traits and vice versa how to properly combine them
  6. Implicits - Advanced usage of implicits - again clear and great explanations
  7. Algebric data types and class hierarchies - An excellent explanation of ADT
  8. Polymorphiosm and scala - The way scala views polymorophism pitfalls and how to utilize it
  9. Self types and when to use - What is a self type how to use, again excellent description with real world examples
  10. On modules and objects
  11. Stackable traits
  12. Typeclasses
  13. Lazy evaluation
  14. Partial functions
  15. Implicit injection
  16. Duck typing
  17. Memoization
  18. Monoids
  19. Monads
  20. Functors
  21. Lens

Do you see the book is just amazing, and he does an excellent job describing these topics not as other books!

Conclusion

Scala Design Patterns by John Hunt is my favorite book to learn scala and functional programmning in scala!

comments powered by Disqus