인프런 커뮤니티 질문&답변

이민혁님의 프로필 이미지

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

ISP: Interface Segregation Principle

코드 작성 시 SOLID 원칙을 처음부터 준수해가며 작성하시는지, 아니면 개발 후 리팩토링을 통해 점진적으로 변경해 나가시는 편인지 궁금합니다.

24.08.24 15:32 작성

·

247

0

안녕하세요, 강사님.

강의 정말 유익하게 잘 듣고 있습니다.

 

강의를 보면서 기존에 작성된 로직에서 SOLID 원칙을 위반하는 코드들을 점진적으로 개선해 나가시는걸 보고 한가지 궁금한게 생겼는데요.

 

강사님께서는 코드를 작성할 때 위 원칙들을 처음부터 준수해 가시면서 작성을 하시는 편인지, 아니면 기능 구현에 우선 초점을 맞춰 코드를 작성하신 뒤 강의처럼 점진적으로 리팩토링을 해나가시는 편인지 궁금합니다.

 

이 원칙들을 준수해가면서 코드를 작성하는 버릇이 생기게 되면 전자의 방식이 가능해지는건가요? 지금 당장 생각했을 때는 아무리 원칙을 잘 이해한다고 하더라도 쉽지는 않을 것 같아서요. ㅜ

 

그리고 혹시 다음 강의 계획하고 계신게 있으신가요? ㅎㅎ

 

답변 1

2

박우빈님의 프로필 이미지
박우빈
지식공유자

2024. 08. 25. 17:10

안녕하세요, 이민혁 님!

SOLID 원칙을 이해하고 적용하는 것은 중요하지만, 코드를 작성할 때 원칙을 우선 시 하는 것은 권장하지 않습니다.
코드를 작성할 때에는, 원칙에 앞서 "도메인 이해" 과정이 가장 중요한데요.

한 번에 모든 원칙을 다 지키는 완벽한 코드, 완벽한 설계를 하기란 사실 불가능에 가깝습니다.
처음 작성하는 코드는 도메인에 대한 이해가 부족할 가능성이 높기에, 얕은 지식을 기반으로 편향적 사고를 하기가 쉽습니다. (그리고 자연스러운 과정입니다.)
더 나은 설계가 존재한다는 사실을 깨닫는 시점은 코드를 작성하는 후반부, 작성이 완료된 이후, 혹은 시간이 한참 지나서 다른 기능이 추가되었을 때 등 내가 작성한 코드를 다른 시각으로 바라볼 때인데요.
이때도 '모든 원칙을 반드시 완벽하게 적용해야지!' 하는 접근보다, 이해한 도메인의 특성을 고려하여 객체의 역할과 책임을 재설정하고, 리팩토링하고, 그에 맞게 필요한 원칙이 있다면 적용하겠다 라는 접근이 더 낫습니다.
때로는 트레이드오프로 원칙을 위배하는 방식을 선택하는 경우도 있을 수 있습니다. (성능 등의 이유로)

정리하면, 원칙은 더 나은 설계를 찾기 위한 도구라고 보시면 되고요.
내가 해결하려고 하는 문제상황, 도메인에 집중하는 것이 가장 우선이라고 이해하시면 되겠습니다.

+) 다음 강의는 여러모로 고민하고 있습니다 ㅎㅎ

감사합니다. 🙂