섹션7 뷰 리팩토링 질문있습니다.
ViewBuilder를 활용해서 리팩토링하여 중복되는 코드를 줄이는것에 대해서.. 실제로 현업이나 개발할때 강의처럼 일단 뷰를 전체적으로 다 만들어놓고 중복되어보이는 코드를 리팩토링하면서 common으로 분리하나요 ? 아니면 처음부터 중복되는것처럼 보이면 바로 common으로 분리하면서 하나요? 아무래도 후자이려나요 ?
답변 2
0
안녕하세요 승현님
2가지 상황 다 존재하는 것 같아요.
만약에 코드를 작성하기 전부터, 이게 다른곳에서도 쓰일것 같으면 바로 따로 빼내서 별도로 뷰를 만들기도 하고요.
처음에는 한곳에서만 쓰일것 같아서 굳이 빼내지 않았는데, 나중에 다른곳에서 쓰일것 같아서 빼내는 경우도 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 이승현님.
질문 주신 내용은 많은 개발자들이 개발 과정에서 마주치는 중요한 주제입니다. 실제로 “중복 코드 리팩토링”에 대해서는 두 가지 접근 방식을 사용할 수 있습니다:
전체 구현 후 리팩토링:
- 이 방법은 처음에는 빠르게 프로토타입을 만들거나 제품의 전체적인 모양과 기능을 확인할 때 유용합니다. 뷰를 전반적으로 구현한 후, 어떤 코드가 반복적으로 사용되는지 식별하고 그 뒤에 해당 부분을 리팩토링하여 공통 모듈로 분리합니다. 이는 전체 흐름을 쉽게 볼 수 있어, 리팩토링 시 어떤 부분을 재사용할 수 있는지 명확하게 알 수 있다는 장점이 있습니다.
- 이 방법은 처음에는 빠르게 프로토타입을 만들거나 제품의 전체적인 모양과 기능을 확인할 때 유용합니다. 뷰를 전반적으로 구현한 후, 어떤 코드가 반복적으로 사용되는지 식별하고 그 뒤에 해당 부분을 리팩토링하여 공통 모듈로 분리합니다. 이는 전체 흐름을 쉽게 볼 수 있어, 리팩토링 시 어떤 부분을 재사용할 수 있는지 명확하게 알 수 있다는 장점이 있습니다.
중복 발견 시 즉시 리팩토링:
- 처음부터 중복을 발견하면 바로 코드를 분리하여 재사용할 수 있는 컴포넌트를 만드는 방식입니다. 이는 장기적으로 코드의 가독성과 유지보수성을 높이기 위한 방법입니다. 하지만 지나치게 세세한 단위로 분리하게 되면 오히려 코드 복잡성이 증가할 수 있습니다.
- 처음부터 중복을 발견하면 바로 코드를 분리하여 재사용할 수 있는 컴포넌트를 만드는 방식입니다. 이는 장기적으로 코드의 가독성과 유지보수성을 높이기 위한 방법입니다. 하지만 지나치게 세세한 단위로 분리하게 되면 오히려 코드 복잡성이 증가할 수 있습니다.
현업에서는 프로젝트의 성격이나 팀의 코딩 스타일에 따라 다르게 접근할 수 있으며, 두 접근 방식을 병행하여 사용하는 경우도 많습니다. 즉, 상황에 따라 유동적으로 대처하는 것이 중요하며, 대체로 “중복되는 코드 발견 시 점진적 리팩토링”을 선호하는 경향이 있습니다.
관련하여 리팩토링 팁에 대한 추가적인 정보가 필요하시다면, “코드 리팩토링 팁 공유” 같은 기존 포럼 및 질문을 살펴보는 것도 좋은 방법이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
searchable이 화면 하단에 위치해요
0
60
2
warning 하나가 있는 것 같습니다. 해결방법좀 알려주세요
0
79
2
설계 관련하여 참고할 문서나 예제 공유가 가능할까요?
1
71
2
Thread number가 다 1로 나옵니다
1
69
2
'loadAllPosts' 를 매번 사용해야 하나요?
1
69
2
75강 실시간으로 팔로우수 안늘어나는 이유?
1
135
3
예전코드도 배워야 할까요?
1
137
1
ProfileView에서 toolbar이용시 문제점 발생, 로직이 이해가 되지 않습니다.
0
161
1
62강 Follow, Unfollow기능구현에서,,
0
107
2
애구마선생님, 다음 프로젝트 강의는 언제 올려주세요???
0
108
2
51강 10:22에서 이미지 여러장이 나오지 않아요;;
0
108
2
52강 post데이터가 불러와지지 않아요,,,
0
135
2
ViewModel과 Model 구분 (30강)
1
133
2
바인딩하는 이유
1
94
2
75강 까지 마무리후 소스 오류 사항 문의
0
109
1
SwiftUI main actor 관한 경고 계속 뜹니다.
1
245
2
45강의 에서 Kingfisher 사용후 발생하는 swift6 이슈
1
152
2
19강에서 Encoder()를 사용할 수 없습니다.
1
135
2
40. 강에서 정상작동 안합니다.
0
168
3
프로필 수정 후 변경된 내용을 피드에 바로 반영되도록 하고 싶습니다.
1
134
2
15강에서 발생한 문제에 대해서 질문이 있습니다!
1
301
3
13강 코드 작성 후 피드의 유저 데이터가 보이지 않는 문제
1
217
3
혹시 다음 강의 대략 언제쯤 완료되시는지 알 수 있을까요??
1
166
2
firebase에서 데이터를 불러오는데 오류가 발생합니다.
1
296
2





