There are 5 kinds of static connascence. Recognizing them and understanding them can assist you see extra deeply into your code and the way it works. Many and maybe all of them will probably be acquainted to you, although I guess you by no means actually thought of them to be “coupling.”
Connascence of identify
Connascence of identify happens when two issues need to agree in regards to the identify of one thing. That is the weakest type of connascence, or the loosest type of coupling, and the one which we must always aspire to restrict ourselves to. In case you declare a process akin to
operate DoSomething(): void {
// Code that does one thing
}
Then you must name it utilizing its identify, on this case DoSomething
. When you select the identify, you’re caught with it. Altering the identify of one thing requires adjustments elsewhere. If you wish to change the identify of the process, it’s good to change it in every single place that you just’ve known as it. That appears apparent, and naturally this stage of connascence is unavoidable. In actual fact, it’s fascinating. It’s the bottom stage of coupling we are able to have. If we might restrict our coupling to connascence of identify, we’d be doing extraordinarily nicely.
Connascence of kind
Connascence of kind happens when two entities need to agree on the kind of one thing. The obvious instance is the parameters of a technique. In case you declare a operate as follows:
class SomeClass {
processWidget(aWidget: Widget, aAction: WidgetActionType): boolean {
// Perform logic goes right here
return false; // Instance return worth
}
}
Then any calling code should cross a Widget
and a WidgetActionType
as parameters of the processWidget
operate and should settle for a boolean
consequently kind.
Connascence of kind isn’t fairly as weak as connascence of identify, however it’s nonetheless thought of a weak and acceptable stage of connascence. Certainly, you couldn’t get alongside with out it, might you? You may have to have the ability to name a technique of a category to get something carried out, and it’s not very burdensome to make sure that your sorts match. Most code received’t even work correctly if you happen to don’t couple code through connascence of kind. The compilers of a typed language received’t even compile code that isn’t coupled with connascence of kind.
Connascence of that means
Connascence of that means happens when parts should agree on the that means of explicit values. Connascence of that means most frequently happens once we use “magic numbers,” that’s, once we use particular values which have that means in a number of locations.