TIL. drf팀프로젝트(6) class vertical architecture

2023년 05월 13일 by barryjung

    TIL. drf팀프로젝트(6) class vertical architecture 목차

[오늘 한일]

  • 프로젝트 진행

 

[오늘 배운점]

 

<객체 수직구조 만들기>

당연한 생각이지만, 당연하게 떠올리지 못할때가 있다.

인식이 굳어졌을때, 그런일이 생긴다.

 

serializer 또한 객체이다.

그렇기에 상속구조를 만들수 있다.

먼저 만든 serializer가 있고 거기서 파생된 serializer가 있다면,

전자를 상속하게하여 필요한 부분을 가져오고 중복작성을 피할수 있다.

 

class ArticleSerializer(serializers.ModelSerializer):
	(중략)
    
class ArticleListSerializer(ArticleSerializer):
	(중략)

우리가 작성한 두 시리얼라이저이다.

AriticleSerializer는 아티클과 연결된 핵심적인 시리얼라이저로 필드 정의가 많이 있다.

어제 있었던 created_at이나, author에 관한 재정의도 있고,

댓글 수, 좋아요 수등 count를 가미한 요소들도 추가된다.

 

아티클 리스팅용으로 만든 AriticleListSerializer에서도 위의 요소들을 쓴다.

이럴때 중복해서 작성할 필요가 없다.

위의 시리얼라이저를 상속한다면, 본 시리얼라이저에서는 바로 사용하면된다.

(fields에 요소를 담는게 목적이다. 바로 요소를 적어주면 된다.)

 

 

결론, 이게 바로 클래스 상속 활용의 정수인것 같다.

 

만약, 트리구조가 불필요하게 길다면 구조를 파악하기 어렵겠지만,

두세단계 정도로는 그다지 가독성이 떨어지지도 않고,

중복된 작성을 피하니 간결하여 좋다.

오히려 연결성도 줄수 있어 유용할수 있겠다.