Skip to content

Forbids classes with too high coupling #1242

@sobolevn

Description

@sobolevn

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    level:advancedNeeds a lot of carequestionFurther information is requestedrule requestAdding a new rule

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions