"Fat" is too much complexity in one place for a developer to easily understand. The principle of Fat in functions is routinely applied during development - when too much code accumulates in one method, we instinctively extract out a cogent sequence of instructions into a new function with clearly identified parameters. The 2 functions working together are easier to understand than the original more complex one. Structure101 applies this simple principle to the entire codebase - as well as functions, complexity should be limited for classes, packages, module/project/JARs, etc.

Structure101 calculates the number of execution paths through a function (known as McCabe's metric, or Cyclomatic Complexity - CC) and considers it Fat when this value exceeds a defined threshold. CC recognizes that it is the complexity of control flow that makes a function hard to understand, rather than sequential lines of code. The CC principle is applied at the higher levels of composition, i.e. it is the number of inter-function dependencies that determines whether a class is considered to be Fat, as opposed to simply the count of functions it contains. Likewise a package is Fat if the number of dependencies between its child classes or sub-packages exceeds the threshold.

Fat items are often too big to understand in their entirety (this is why Fat is a problem!). Structure101 Studio helps you make sense of these by optionally organizing the items into "cohesive clusters". This automatic grouping can help to understand the complex region, and can be very helpful in the process of subdividing a Fat item into smaller entities.