| Just my quick list Code that relies alot on pointless abstractions (aka. bad "signal to noise ratio"). Code with lots of microdependencies to perform really trivial tasks. Code with premature "optimizations" (usually done before actual performance measurements). Code sacrificing readability (and thus maintainability) to be overly clever or to do trivial optimizations (usually with little to no impact on overall performance). And of course all the different ways to mess up comments, style and versioning (Yes, I consider the versioning part of the code): * Uncommented code
* Over-Commented code
* Comment-Banners
* Commented-Out code (git exists for a reason)
* Inconsistent naming
* entirely_too_long_variable_names for things that exist for 20 LOC
* Unhelpful commit messages (my favorite: "fixed: some issues")
* Bulk-Commits that change/fix/introduce multiple features or issues at once
* Missing tags
* No semantic versioning
|
"trivial" measure highly relies on programmer's/developer's experience and knowledge. For first developer traversing a tree and applying some updates based on nodes conditions would be "trivial" so thee places all the code in one function. For second developer the same problem would not be such trivial, so thee creates two functions "fn listFromNodes<T, U>(t: Tree<T>, pred: (fn(e: T) -> bool), map: (fn(e: T) -> U)) -> List<U>" and "fn applyUpdates(updates List<Update>)".
> Uncommented code
Why comment a code that's mapped to problem trivially observably (ex. if it's code describing some GUI component with style fields and your task is change style of its part)? I prefer commenting code that contains complex logic (which is measured through code reviews, developers skills, calls etc.) and its effects aren't observed obviously.
> Commented-Out code (git exists for a reason)
Yes and no. Commented-out code is usually in-place saved draft of old code. If some bug is encountered with new code, you can comment-out new code and uncomment-out old code quickly to discover a bug in new code later. Git is less easy to accomplish this task.
> Inconsistent naming
Some rudiment not quickly refactored, may be involved. Example, I had a project when I had type "CardRef" which initially contained only a name (string) of card which was used as a reference for it. Then I decided to include some scores for a card to selecting cards smarter. I kept a name for type the same because it was used a lot in a project for related entities.