[TIL] C# 코드 리팩토링

Wendy·2020년 7월 15일
1

학습기록

목록 보기
3/20

개요

리팩토링 대상 - TeamCenter(저장소)와의 통신 library(SOA)를 사용하는 Class

Original Code

  • 확장성 고려 X - 한 개 화면 / 한 개 모델 / 일회적 통신으로 사용을 목적으로 작성
  • 통신기능이 ViewModel 클래스에 존재
  • ViewModel 생성자에서 connection을 맺어, 통신용 메소드에 connection을 던져줌
  • 메소드에서 데이터를 반환하지 않고, ViewModel 변수에 저장 (read와 write가 한 메소드 내에서 수행됨)
  • DAO와 DTO가 혼재된 사용

Refactorying

. 통신 기능을 별도의 클래스(Manager)로 분리
. Manager의 클래스 변수로 Connection을 넣고, 메소드에서 가져다 사용하도록 작성
. Manager 생성자에서 connection을 맺고, 소멸자에서 logout
. IDisposable을 상속받아 Dispose()에 logout 기능 추가하여 using()을 사용할 수 있게 됨 (소멸자에서 logout 해주지만, 수동으로 연결 종료가 가능)
. DAO, DTO 분리 - Manager 내에서는 DAO, DTO를 모두 사용하나, 외부에서 Manager를 호출 할 때에는 DTO만 사용해, 통신과 관련 없는 클래스에서는 통신이나 DAO의 존재를 알지 못하도록 처리

학습 / 참고

https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/
. DAO (Data Access Object) : DB와 통신
. DTO (Data Transfer Object) : 계층(Controller, View, BusinessLayer등)간의 데이터 교환을 위한 객체
. VO (Value Object) : DTO와 동일 개념이나 read only 속성

profile
개발 공부중!

0개의 댓글