It would be nice to recommend avoiding using "global" state in the libraries, that later is almost impossible to test and/or mock.
We tend to favor explicitly spelled-out APIs for the such state: datetime's Clock.System.now(), Okio's FileSystem.DEFAULT.read* as opposed to top-level now(), read(path) etc. (the most notable existing API that falls into this trap is coroutine's Dispatchers.Default)
It would be nice to recommend avoiding using "global" state in the libraries, that later is almost impossible to test and/or mock.
We tend to favor explicitly spelled-out APIs for the such state: datetime's
Clock.System.now()
, Okio'sFileSystem.DEFAULT.read*
as opposed to top-levelnow()
,read(path)
etc. (the most notable existing API that falls into this trap is coroutine'sDispatchers.Default
)