Devils in Disguise, in no particular order, and in the context of Modern non-trivial Software Craft:
- Data Binding of UI Controls and Model
- Statics, which is another name for Globals
- Dependency Injection until you use a 3rd-party library you can trust to take care of it (just because that allows you to throw your hands in the air, point to their QA process and say you trust it until proven too faulty for your usage)
- Thread-Safe Singletons
- Extension Methods in .NET, as they MUST be static
- Inheritance, at least in single-inheritance languages (and no: .NET Interfaces don’t count as multiple inheritance, sorry)
- Web Browser Sessions
- Equality of Generic Data Types (in Strongly-typed languages, but not much better in weakly-typed languages)
- Public data members
- Drag-n-Drop Designers</emstrong
- Generic ‘Bags’ of data
I’m sure I’m forgetting some…
Regardless, if you encounter 3+ during a single working session, you should definitely Stop and Reconsider.
So, this may not be strictly speaking a SoftwareCraft topic, but I suspect there’s some correlation: people in our industry are possibly more likely to have encountered Video Tutorials than others – so I hope it’s ok for me to sharing a couple of thoughts on this topic in this venue.