nullstack-developer / python_clean_code

0 stars 0 forks source link

p57 코드 예시 #2

Closed castedice closed 2 years ago

castedice commented 2 years ago

Boundary가 존재해야하는 이유가 무엇인지

원문

class Boundaries:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def __contains__(self, coord):
        x, y = coord
        return 0 <= x < self.width and 0 <= y < self.height

class Grid:
    def __init__(self, width, height):
        self.width = width
        self.height = height
        self.limits = Boundaries(width, height)

    def __contains__(self, coord):
        return coord in self.limits

def mark_coordinate(grid, coord):
    if coord in grid:
        grid[coord] = MARKED

내가 생각한 것

class Grid:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def __contains__(self, coord):
        x, y = coord
        return 0 <= x < self.width and 0 <= y < self.height

def mark_coordinate(grid, coord):
    if coord in grid:
        grid[coord] = MARKED

코드를 돌려보면 if문 분기로 들어가는 것도 동일한 조건에서 들어가는 것 같아서 같은 결과가 나올 것 같은데, boundary를 왜 만든건지 이해할 수 없음 if 문의 반복 호출을 피한다는데 저렇게 분리한다고 그게 되는지도 이해가 안됨

castedice commented 2 years ago

논의 내용 요약: 해당 예시가 작은 기능만을 가지고 있기 때문에 쪼개는 것이 비효율적이라고 생각할 수 있지만, 추가로 다른 기능들이 개발된다면 책에 소개한 것처럼 쪼개는 것이 효율적일 것. 처음에는 아래처럼 짜고 추 후 위처럼 리펙토링을 할 수도 있고, 경험적으로 미리 예상할 수 있다면 바로 위처럼 짤 수도 있을 것.