Flags Over Objects

Flags Over Objects

The Flags Over Objects anti-pattern occurs when behavior is written outside of an object by inspecting flags (such as status codes), rather than within the object itself. This violates the Tell, Don’t Ask principle, and results in chatty interfaces and … Continued
Copy Folder Versioning

Copy Folder Versioning

Copy Folder Versioning is a software development anti-pattern in which source code is updated by simply making copies of the folder in which the code currently resides. This results in a tangled mess of folders, usually without any clear indication … Continued
Assumption Driven Programming

Assumption Driven Programming

Assumption Driven Programming refers to the developer practice of assuming all users are like them. The best way to avoid falling into this trap is to interact with users as much as possible. It’s certainly important to dogfood your software, … Continued
Death March

Death March

The worst part of a Death March project is that virtually everybody involved with it knows it’s a death march project. The Death March refers to a project that has little or no hope of success. It’s already over-budget, over-schedule, … Continued
Death by Planning

Death by Planning

Although planning is an essential part of building quality software, keep in mind that shipping is a feature (your product must have it). Keep short term plans as close to the actual implementation of your software as possible, while keeping … Continued
Magic Strings

Magic Strings

Magic strings are string values that are specified directly within application code that have an impact on the application’s behavior. Frequently, such strings will end up being duplicated within the system, and since they cannot automatically be updated using refactoring … Continued
Found on Internet

Found on Internet

This anti-pattern refers to the practice of taking advice or code samples found on the Internet and immediately applying them to production code without taking the time to consider their effects. It’s true the Internet is a huge source of … Continued
Exposing Collection Properties

Exposing Collection Properties

Generally, exposing collection properties from domain Entities is an antipattern, because it leads to an anemic domain model and breaks encapsulation. Entities should be responsible for managing their own internal state, and this includes the contents of their related collections. … Continued
Mushroom Management

Mushroom Management

Mushroom Management refers to the practice of treating your developers like mushrooms – to wit, “keep them in the dark and feed them BS.” By introducing barriers between those who develop the software and those who use it, feedback loops … Continued
Anemic Model

Anemic Model

In object-oriented programming, and especially in Domain-Driven Design, objects are said to be anemic if they have state but lack behavior. Some kinds of objects, such as Data Transfer Objects (DTOs), are expected to simply be a collection of data. … Continued