PHP Class Trismegiste\Mondrian\Analysis\SpaghettiCoupling
How ?
This analyser searches path between two classes through calls of public
methods, inheritance or instanciation.
The language I used for representing source code into a digraph was
created especially to show that.
Note 1 : This service creates a new digraph by selecting only the class
vertices because with the implementations, there are too many vertices.
The goal of the digraph is the "search for bridges". This is a concept
in graph theory where two highly connected graphs are linked by only one
edge. By cuting this edge (by adding an interface for example), you can
easily break your "monolith of code" into two pieces.
Note 2 : since I only analyse public methods, I knowingly miss some
connections. I state that it is not an issue now. If there is a new
instance in a protected method, this an "inner refactoring" not a refactoring
of the structure of public implementations.
In a second time, you can refactor this coupling later because you have
more freedom to change that : you are in a class, there is no coupling outside,
or perhaps it's ok (factory method pattern for example). Remember, the purpose
of this service is to help you to "break a monolith" you barely know,
not to replace your coding skills. There is no magic for that.
There are more immportant issues with cycles of components for example.
显示文件
Open project: trismegiste/mondrian
Class Usage Examples
Protected Properties
Public Methods
Method |
Description |
|
generateCoupledClassGraph ( ) |
Generate a digraph reduced to all concrete coupled classes |
|
setFilterPath ( Trismegiste\Mondrian\Analysis\Strategy\Search $strategy ) |
Set the strategy to reduce the graph by shortening a path between 2
components |
|
Method Details
generateCoupledClassGraph()
public method
Generate a digraph reduced to all concrete coupled classes
setFilterPath()
public method
Set the strategy to reduce the graph by shortening a path between 2
components
public setFilterPath ( Trismegiste\Mondrian\Analysis\Strategy\Search $strategy ) |
$strategy |
Trismegiste\Mondrian\Analysis\Strategy\Search |
|
Property Details
$strategy protected_oe property