Antipatterns

Fat Interface

This anti-pattern applies to modules/classes which have a large interface with too many exposed functions/methods Impact As the interface of these modules/classes is large, it violates the interface segregation principle (no client should be forced to depend on methods it does not use). Often these modules/classes have many incoming dependencies…

0
Read More

Solution Sprawl

This anti-pattern applies to classes or modules which have the implementation spread across multiple files. Impact As the implementation is spread across multiple files, these modules/ classes tend to be large and often violate the single responsibility principle. The module/ class often grows over time and ends up becoming a…

0
Read More

Data Class

Data classes are “dumb” data holders without complex functionality. Other classes strongly rely on them. Related data and behavior is not kept in one place, which is a violation of OO design principles and shows lacking encapsulation. Impact Data classes violate data-operation proximity by isolating data from associated functionality Low…

0
Read More

Brain Class

Brain Class is a class that is complex partly because it implements a significant amount of system intelligence and partly because it holds one or more Brain methods. Impact Low cohesion impacts understandability, maintainability and testability. Since a Brain Class becomes less cohesive or non-cohesive, refactoring becomes painful. Moreover, refactoring…

0
Read More

Intensive Coupling

When methods of a class excessively access operations of one or a few other classes, it is said that the class is intensively coupled with those one or few provider classes. Impact Understanding the relation between the client method & the classes providing services becomes difficult. Characteristics Methods of affected…

0
Read More

Local Butterfly

This anti-pattern is on the lines of Global Butterfly but differs in its scope of dependents. As per IBMSP, Local Butterfly is a structural pattern for a component that has many immediate dependents. The scope of dependents is limited to immediate dependents that directly access, use, reference, or contain the…

0
Read More

Brain Method

Brain method is a method that tends to centralize the functionality of its owner class (very much in a way a God Class tends to centralize a system’s intelligence). It tends to be long as it carries out most of the tasks of the class that are supposed to be…

0
Read More

Dispersed Coupling

When methods of a class access (depend on) many operations across an excessive number of classes, it is said that the class is dispersedly coupled with those provider classes. Impact A change in a dispersively coupled method leads to changes in all the dependent (coupled) classes. Characteristics Methods of affected…

0
Read More

Global Breakable

The Global Breakable is a structural anti-pattern for a system component that is often affected when any other component is changed. It has too many global outgoing dependencies (transitive dependencies). The analogy is similar to Global Butterfly in the case of dependencies. The main difference is that here there are…

0
Read More

Local Breakable

The Local Breakable component has many immediate outgoing dependencies. Such a component carries excessive responsibility and is typically identified by many long methods. It represents too many local outgoing dependencies. The analogy is similar to Local Butterfly in the case of dependencies. The main difference here is that, there are…

0
Read More