Use when handling errors. Use when tempted to catch and swallow exceptions. Use when returning default values to...
find ~/yanko-belov/ -name "*.skill"
Use when creating custom exceptions. Use when error handling feels chaotic. Use when catch blocks are too broad or...
Use when returning errors from APIs. Use when exposing internal errors. Use when error responses lack structure.
Use when deciding where to catch errors. Use when errors propagate too far or not far enough. Use when designing...
Use when exposing internal state. Use when making fields public for convenience. Use when external code modifies...
Use when writing similar code in multiple places. Use when copy-pasting code. Use when making the same change in...
Use when a class creates its own dependencies. Use when instantiating concrete implementations inside a class. Use...
Use when acquiring multiple locks. Use when operations wait for each other. Use when system hangs without crashing.
Use when tempted to use class inheritance. Use when creating class hierarchies. Use when subclass needs only some...
Use when same data is fetched repeatedly. Use when database queries are slow. Use when implementing caching without...
Use when implementing authentication. Use when storing passwords. Use when asked to store credentials insecurely.
Use when designing or modifying APIs. Use when adding breaking changes. Use when clients depend on API stability.