1.7. Principles for Code Quality#
1.7.1. The Law of Demeter#
It’s also known as the Principle of Least Knowledge, saying that an object should only communicate with its immediate neighbors, avoiding to access deeper and deeper objects.
See below for a small example how we would violate and obey the Law of Demeter.
# Bad Example
class Department:
def __init__(self, manager):
self.manager = manager
def get_manager_name(self):
# Bad: Accessing a method of an object deep within the hierarchy
return self.manager.employee.name
class Employee:
def __init__(self, name):
self.name = name
class Manager:
def __init__(self, employee):
self.employee = employee
# Good Example
class Department:
def __init__(self, manager):
self.manager = manager
def get_manager_name(self):
# Good: Not going deeper
return self.manager.get_name()
class Employee:
def __init__(self, name):
self.name = name
class Manager:
def __init__(self, employee):
self.employee = employee
def get_name(self):
return self.employee.name