Materials being read in progress are noted, otherwise finished reading.
Blog
- Just Say No to More End-to-End Tests - https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html
- Note on Java exceptions: One sure way to help in easily understanding problems is to have a well designed exception mechanism. You do not want generic exceptions like RuntimeException. You do not want badly wrapped exceptions - I've seen a string manipulation method that throws HttpInternalServerException. Ideally you need an exception stack trace that provides you context and a consistent way of reading them. And most important of all, you do not want exceptions getting lost somewhere. A big problem with a codebase that is already using badly designed exception is that it can be a risky change since it will probabably affect most of the existing code - imagine an exception class that is written in an xml config.
- Note on the linked sample source code - one design for me to adapt here is the use of precondition static methods that accept a string. com.google.common.base.Preconditions.checkNotNull is an example. Note that this method has overloaded versions.
- TestPyramid - https://martinfowler.com/bliki/TestPyramid.html
- Short blog post that reminds us of the dangers in using e2e tests. An important advise is given here - "before fixing a bug exposed by a high level test, you should replicate the bug with a unit test"
Book
- The Prargmatic Programmer, From Journeyman To Master (in progress)
Presentation (recorded video)
- Mocks & stubs by Ken Scambler - https://www.youtube.com/watch?v=EaxDl5NPuCA
- One lesson I found new and interesting is Actions just return new copies. I have not encountered this suggestion for this problem before, but it does seem a good way to achieve simplicity. The same for the concept of intent as an Optional return value on places where you'd normally call a side-effecting method.