Skip to main content
added 255 characters in body; added 2 characters in body
Source Link
Roman Reiner
  • 1.1k
  • 1
  • 6
  • 11

You should manage dependencies not fight them.

If class A needs to send an email and class B can send emails then class A will depend on class B and no amount of abstraction and redirection is going to make it that relationship go away.

When you write:

In My Idea approach, ProductManager and ProductService are completely independent.

I’m afraid you are mistaken. The relationship is still there you just hide it behind some porcelain. Building

You will find that building and maintaining those ports and adapters will not be any simpler than the “traditional” solution andso you will likely leadtry to come up with a system that automatically generates those adapters. Maybe even utilize some domain specific language to define the ports? Congratulations, you just invented interfaces. What you will end up with will be a prime example of the inner platform effect:

The inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using. This is generally inefficient and such systems are often considered to be examples of an anti-pattern.

You should manage dependencies not fight them.

If class A needs to send an email and class B can send emails then class A will depend on class B and no amount of abstraction and redirection is going to make it that relationship go away.

When you write

In My Idea approach, ProductManager and ProductService are completely independent.

I’m afraid you are mistaken. The relationship is still there you just hide it behind some porcelain. Building and maintaining those ports and adapters will not be any simpler than the “traditional” solution and will likely lead to inner platform effect:

The inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using. This is generally inefficient and such systems are often considered to be examples of an anti-pattern.

You should manage dependencies not fight them.

If class A needs to send an email and class B can send emails then class A will depend on class B and no amount of abstraction and redirection is going to make it that relationship go away.

When you write:

In My Idea approach, ProductManager and ProductService are completely independent.

I’m afraid you are mistaken. The relationship is still there you just hide it behind some porcelain.

You will find that building and maintaining those ports and adapters will not be any simpler than the “traditional” solution so you will try to come up with a system that automatically generates those adapters. Maybe even utilize some domain specific language to define the ports? Congratulations, you just invented interfaces. What you will end up with will be a prime example of the inner platform effect:

The inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using. This is generally inefficient and such systems are often considered to be examples of an anti-pattern.

Source Link
Roman Reiner
  • 1.1k
  • 1
  • 6
  • 11

You should manage dependencies not fight them.

If class A needs to send an email and class B can send emails then class A will depend on class B and no amount of abstraction and redirection is going to make it that relationship go away.

When you write

In My Idea approach, ProductManager and ProductService are completely independent.

I’m afraid you are mistaken. The relationship is still there you just hide it behind some porcelain. Building and maintaining those ports and adapters will not be any simpler than the “traditional” solution and will likely lead to inner platform effect:

The inner-platform effect is the tendency of software architects to create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using. This is generally inefficient and such systems are often considered to be examples of an anti-pattern.