The use of `class` for things that should be simple free functions
Counter-point: while in many situations this isn't the right approach, it's worth recognizing when this <i>is</i> the right approach, because they can look awfully similar. An example of this is graph searching, e.g. BFS or Dijkstra's algorithm. The typical implementation is a function. But if you make Dijkstra a class, with (say) a function to iterate through nodes, it lets you do several things that would be difficult with a function: (a) you can now re-use the same object for computing distances to multiple vertices, which allows incremental search, (b) you can now fork/copy the object and continue searching on <i>different</i> extensions of the original graph, (c) you can now save & restore the searcher state to pause the search & continue it later, (d) you can do multiple searches across one or more graphs <i>in lockstep</i>. IMHO these are very much <i>not</i> obvious, and to someone who doesn't recognize what's going on, a class for something like BFS will look <i>exactly</i> like an "OO antipattern", when in reality it's actually providing significant additional functionality for more complicated situations.