-
최근 아무리 함수 분리가
@objc
func presentButtonDidTapped() {
let inviteCodePopUpViewController = InvitationCodePopUpViewController(
invitationCode: createMeetingViewModel.inviteCode.value
)
inviteCodePopUpViewController.modalPresentationStyle = .overFullScreen
inviteCodePopUpViewController.modalTransitionStyle = .crossDissolve
inviteCodePopUpViewController.view.backgroundColor = .black.withAlphaComponent(0.7)
inviteCodePopUpViewController.rootView.copyButton.addTarget(
self,
action: #selector(copyButtonDidTapped),
for: .touchUpInside
)
inviteCodePopUpViewController.rootView.inviteLaterButton.addTarget(
self,
action: #selector(inviteLaterButtonDidTapped),
for: .touchUpInside
)
inviteCodePopUpViewController.rootView.removeGestureRecognizer(
inviteCodePopUpViewController.rootView.gestureRecognizers![0]
)
createMeetingViewModel.createMeeting(
name: createMeetingViewModel.meetingName.value
)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
inviteCodePopUpViewController.rootView.setInvitationCodeText(
self.createMeetingViewModel.inviteCode.value
)
self.present(inviteCodePopUpViewController, animated: true, completion: nil)
}
}
@objc
func presentButtonDidTapped() {
let inviteCodePopUpViewController = InvitationCodePopUpViewController(
invitationCode: createMeetingViewModel.inviteCode.value
)
setupPopUpViewController(viewController: inviteCodePopUpViewController)
setupPopUpAction(view: inviteCodePopUpViewController.rootView)
removeDismissGesture(view: inviteCodePopUpViewController.rootView)
createMeetingViewModel.createMeeting(name: createMeetingViewModel.meetingName.value)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
inviteCodePopUpViewController.rootView.setInvitationCodeText(
self.createMeetingViewModel.inviteCode.value
)
self.present(inviteCodePopUpViewController, animated: true)
}
}
private func setupPopUpViewController(viewController: BaseViewController) {
viewController.modalPresentationStyle = .overFullScreen
viewController.modalTransitionStyle = .crossDissolve
viewController.view.backgroundColor = .black.withAlphaComponent(0.7)
}
private func setupPopUpAction(view: InvitationCodePopUpView) {
view.copyButton.addTarget(
self,
action: #selector(copyButtonDidTapped),
for: .touchUpInside
)
view.inviteLaterButton.addTarget(
self,
action: #selector(inviteLaterButtonDidTapped),
for: .touchUpInside
)
}
private func removeDismissGesture(view: BaseView) {
if let gesture = view.gestureRecognizers?.first {
view.removeGestureRecognizer(gesture)
}
} 제가 문제라고 생각했던 부분은 private func setupPopUpAction(view: InvitationCodePopUpView) {
view.copyButton.addTarget(
self,
action: #selector(copyButtonDidTapped),
for: .touchUpInside
) 이 부분이었는데요. 매개변수로 InvitationCodePopUpView 타입을 받고 있습니다. 저 타입을 BaseView로 설정하게 되면 BaseView가 copyButton 프로퍼티를 가지고 있지 않아서 오류가 발생합니다 ... 근데 타입을 저렇게 받게 되면 재사용성 측면에서 올바르지 않는 코드가 될 것 같다는 생각이 들었습니다. 한번 그런 생각이 드니까 함수에 매개변수가 들어있는 게 맞는지, 또 함수를 얼마나 분리해야 하는지에 대해서 생각이 많아지더라구요. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
SRP 관점에서 함수가 하나의 일만 하고 있는지 항상 생각해 보면 리팩토링의 방향성이 보일 것 같아요. |
Beta Was this translation helpful? Give feedback.
SRP 관점에서 함수가 하나의 일만 하고 있는지 항상 생각해 보면 리팩토링의 방향성이 보일 것 같아요.
다시 말해서 너무 많은 일을 하고 있지는 않은지 생각해 보면 좋겠죠?
재사용성과 SOLID 등의 내용은 그런 것은 본인의 생각하에,,
저는 누가 답을 내려주길 원치 않습니다.
항상 끝까지 탐구할 수 있도록 길만 제시하고 싶어요. 그래야 개발자가 될 수 있다고 생각합니다.