wemake-python-styleguide icon indicating copy to clipboard operation
wemake-python-styleguide copied to clipboard

Forbids classes with too high coupling

Open sobolevn opened this issue 5 years ago • 0 comments

Rule request

Thesis

Coupling is a very important concept in programming.

Currently, we don't enforce any rules about cohesion and coupling. But, we totally need to!

And while you can use https://github.com/mschwager/cohesion to measure cohesion, there's no tool to measure coupling.

I don't think that cohesion is important. Because the best class in my opinion is @dataclass:

@dataclass
def Some(object):
    field1: int
    field2: str

But, coupling is the whole other beast! High coupling makes refactoring very hard. Compare these two samples:

class SomeClass(ParentClass):
     def method(self, other):
          if other.some_field > other.other_field:
               other.first_method()
          else:
               other.other_method()

And:

class SomeClass(ParentClass):
     def method(self, other):
         other.smart_method()

The second one is way better.

Problems:

  1. I am not sure how to count coupling
  2. I am not sure about corner values

sobolevn avatar Mar 06 '20 10:03 sobolevn