본문 바로가기
좋은 개발자가 되기위한 방법들/객체지향

알아두면 굉장히 좋은 설계원칙 (1)

by chief_sac 2021. 11. 11.
반응형

저희의 선배개발자분들은 흔히 알고있는 SOLID를 제외하더라도 다양한 설계원칙들을 이야기 해왔습니다. 그냥 개발을 하고 코드를 작성하면 그것이 개발자가 아닌가 하는 생각도 안일하게 하였지만 우리가 이러한 설계원칙을 반드시 지키지 못하더라도 꾸준히 학습하고 알아야하는 이유는 개발자는 무에서 유를 창조하는 경우가 대부분이고 다른 사람들의 생각을 분석하여 컴퓨터에게 명령함으로서 생명을 불어넣습니다. 한번에 모든것이 딱딱 이루어 진다면 좋겠지만 고객의 요구사항은 언제든 변할 수 있고 우리가 요구사항을 잘못 해석 할수도 있습니다. 그러한 경우가 생길경우 우리는 유연하고 확장성 있도록 시스템의 구조를 구현하여야합니다. 그렇게하면 성공적인 소프트웨어를 작성 할 수 있는 확률이 늘어 나기 때문에 항상 학습하고 배우는 자세를 가지는 개발자가 되어야 하지 않을까 라는 생각을 해봅니다.

 

유명하고 공부하며 꼭 알아야겠다고 생각하는 개인적인 좋은 설계원칙을 정리해보려합니다.

 

 

 

DRY(Dont't Repeat Yourself, 반복하지 마라)


  • 예전에 유튜브의 유명한 개발자유튜버 엘리님의 3가지 설계원칙에 관한 영상을 보며 깊지는 않게 들었던 DRY 원칙 이전에 글에서도 정리하였지만 다시한번 복습하는 의미로 알아보았습니다.
 💡 Dont't Repeat Yourself 즉 DRY원칙은 소프트웨어 패턴의 반복을 줄이는 것을 목표로 하는 소프트웨어 개발 원칙입니다. 반복을 줄이기 위해 우리는 추상화로 그것을 대체하거나, 중복을 피하기 위해서 데이터를 정규화합니다.

 

  • 처음 이 원칙을 공식화 한 사람들은 Andy Hunt와 Dave Thomas
  • 이는 모든 지식은 시스템안에서 명확하고 권위있는 단일표현을 가져야한다. 라고 명시되어있습니다.
  • 이것을 간단하게 말하면 "중복코드를 만들지마라" 라고 생각하고 설계를 하면 될 것 입니다.
  • 아마 예상하기 쉽겠지만 해당 원칙을 지향하며 설계하게된다면 코드의 길이가 단축되어 가독성이 높아질 것이고, 정말 간단하게 재사용 함으로서 개발자의 생산성 또한 올라가게 될 것입니다.
  • 이에 반대되는 개념으로는 WET(Write Everything Twice)가 있습니다.

 

주의점


  • 모든 원칙은 상황에 따라 문제 해결에 큰 도움이 될 수 있지만 그렇지 않은 경우도 존재한다는 것을 잊으면 안됩니다.
  • 제가 실제로 작은 프로젝트를 만들며 코드를 설계할때 Dry원칙을 생각하며 중복되는 부분을 추상화 하여 사용하였습니다. 하지만 시간이 조금 지나며 확장할 때에 이전 코드와 거의 모든 것이 일치하지만 작은 부분이 달라 조건문을 이용하여 사용하게 되었는데 당장은 해결했을지 몰라도 이것은 점점 잘못된 추상화가 되어가고 있었고 이에 관련된 글을 읽고 깨닫게 된 부분이있습니다.
  • "Dry가 안될때는 WET하게" 개발함에 있어서는언제든 요구사항이 바뀔 수 있고 개발자 또한 이를 완벽하게 이해 할 수 없습니다. 그렇기 때문에 바로 추상화를 한다면 위와 같이 생기는 변화에 조건구분을하는 이상한 추상화를 만드는 딜레마에 빠지게됩니다. 그렇기 때문에 코드를 일단 복사하여 프로젝트가 이해가 가기 시작한다면 어느부분이 중복되는지를 확인 하고 이후에 멋진 추상화를 만들어 낼 수 있을거라 생각합니다!

 

 

 

바뀌는 부분은 캡슐화한다.


 

💡 바뀌는 부분은 따로 분리하여서 캡슐화 한다. 설계함에 있어서 달라지는 부분을 찾아내고 달라지지 않는 부분으로부터 분리시킨다.

 

  • 이 원칙은 모든 디자인 패턴의 근간이 되는 원칙으로 시스템의 일부분을 다른 부분과는 독립적으로 변화 시킬 수 있게 도와준다.
  • 캡슐화는 데이터를 은닉하는 것을 떠올리게 만든다. 하지만 캡슐화는 정확히 말하면 개념 자체를 감추는 것이다. 쉽게 생각하려면 객체의 public인터페이스와 구현을 분리하는 것이라고 보면된다.
  • 바뀌는 부분을 캡슐화하면 바뀌지 않은 부분 만을 이용하여 객체는 메세지로 협력을 한다.
  • 위의 원칙을 치키게 되면 조금 이상한 설계가 되어갈 지로도 이것은 전체적인 일관성을 지킬 수 있어 무결성을 유지 하는데 큰 도움이 될 것이다.
반응형