코드 작성 시 SOLID 원칙을 처음부터 준수해가며 작성하시는지, 아니면 개발 후 리팩토링을 통해 점진적으로 변경해 나가시는 편인지 궁금합니다.
435
작성한 질문수 2
안녕하세요, 강사님.
강의 정말 유익하게 잘 듣고 있습니다.
강의를 보면서 기존에 작성된 로직에서 SOLID 원칙을 위반하는 코드들을 점진적으로 개선해 나가시는걸 보고 한가지 궁금한게 생겼는데요.
강사님께서는 코드를 작성할 때 위 원칙들을 처음부터 준수해 가시면서 작성을 하시는 편인지, 아니면 기능 구현에 우선 초점을 맞춰 코드를 작성하신 뒤 강의처럼 점진적으로 리팩토링을 해나가시는 편인지 궁금합니다.
이 원칙들을 준수해가면서 코드를 작성하는 버릇이 생기게 되면 전자의 방식이 가능해지는건가요? 지금 당장 생각했을 때는 아무리 원칙을 잘 이해한다고 하더라도 쉽지는 않을 것 같아서요. ㅜ
그리고 혹시 다음 강의 계획하고 계신게 있으신가요? ㅎㅎ
답변 1
4
안녕하세요, 이민혁 님!
SOLID 원칙을 이해하고 적용하는 것은 중요하지만, 코드를 작성할 때 원칙을 우선 시 하는 것은 권장하지 않습니다.
코드를 작성할 때에는, 원칙에 앞서 "도메인 이해" 과정이 가장 중요한데요.
한 번에 모든 원칙을 다 지키는 완벽한 코드, 완벽한 설계를 하기란 사실 불가능에 가깝습니다.
처음 작성하는 코드는 도메인에 대한 이해가 부족할 가능성이 높기에, 얕은 지식을 기반으로 편향적 사고를 하기가 쉽습니다. (그리고 자연스러운 과정입니다.)
더 나은 설계가 존재한다는 사실을 깨닫는 시점은 코드를 작성하는 후반부, 작성이 완료된 이후, 혹은 시간이 한참 지나서 다른 기능이 추가되었을 때 등 내가 작성한 코드를 다른 시각으로 바라볼 때인데요.
이때도 '모든 원칙을 반드시 완벽하게 적용해야지!' 하는 접근보다, 이해한 도메인의 특성을 고려하여 객체의 역할과 책임을 재설정하고, 리팩토링하고, 그에 맞게 필요한 원칙이 있다면 적용하겠다 라는 접근이 더 낫습니다.
때로는 트레이드오프로 원칙을 위배하는 방식을 선택하는 경우도 있을 수 있습니다. (성능 등의 이유로)
정리하면, 원칙은 더 나은 설계를 찾기 위한 도구라고 보시면 되고요.
내가 해결하려고 하는 문제상황, 도메인에 집중하는 것이 가장 우선이라고 이해하시면 되겠습니다.
+) 다음 강의는 여러모로 고민하고 있습니다 ㅎㅎ
감사합니다. 🙂
[강의 질문] 메서드 선언부
0
90
1
[강의 질문] 메서드와 추상화
0
61
2
DIP 개념에 대한 질문입니다.
0
64
1
만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민
0
86
2
DIP 설명 후반부에 IOC에 대한 질문 드립니다.
0
80
2
안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!
0
71
1
안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.
1
64
2
자바 record 사용에 대해서 질문 드립니다!
0
128
2
강의 내용 정리 및 자료 제작 툴 문의 드립니다.
0
136
2
사용할 변수 가깝게 선언하기 질문
0
93
1
오버 엔지니어링
0
151
2
학습용 java/spring 오픈소스 추천
1
368
2
중복된 메서드 줄이는 방법
0
185
2
MarketPlace에서 Sonarlint 검색이 안됩니다.
0
417
3
isLandMineCell() 메서드 질문
0
210
1
Cell[][]BOARD 매개변수받기
0
153
2
ConsoleInputHandler에서 왜 final붙여야 하는지
0
194
1
정적 생성자 메서드 of, from
0
266
2
Getter관해서
0
148
3
이름 바꾸기
0
129
2
stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??
0
164
2
현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.
0
209
2
null을 가질 수 있는 값을 인자로 넘겨야 하는 경우
0
253
3
리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..
0
255
2





