서론
이번 3주 차는 정말 너무너무 힘들고 어려웠습니다.
다형성이 어렵다고 생각은 했는데 이 정도일 줄은...
이번 회고도 쓸까 말까 고민했는데 짧게라도 남기기 위해 작성합니다.
이왕 시작한 거 빼먹으면 아쉬우니까요.
프로토콜과 다형성
Swift의 POP와 객체지향 OOP 사이에서 고민하는 주차였습니다.
특히 프로토콜에 프로퍼티를 넣는 것은 객체지향에 어긋나느냐? 하는 주제로 다른 캠퍼들과 의견을 나눴던 거 같아요.
1. Swift의 프로토콜에는 프로퍼티를 넣어도 자연스럽다. 프로토콜에 프로퍼티를 넣지 않으면 getter/setter 메서드를 넣어야 하는데 이건 Swift 스럽지 않다.
2. 프로토콜에 프로퍼티를 넣으면 객체지향의 캡슐화, 은닉화가 약해진다. 따라서 최대한 프로퍼티를 넣지 말아야 한다.
위 두 개의 의견이 주를 이뤘는데요.
혹시 글을 읽고 계신 분이 계신다면 여러분도 어떻게 생각하시는지 댓글로 알려주시면 도움이 많이 될 거 같습니다.
물론 정답은 상황에 따라 적용해야 하는 진리의 케바케겠지만요 ㅎㅎ..ㅋㅋ
프로토콜
저는 1번 의견에 승차해서 다형성을 개선 중입니다.
프로토콜에 프로퍼티를 넣고 getter/setter를 사용하지 않는..?
근데 이 과정에도 문제가 있더라고요.
(*아래 예시는 실제 미션 내용과 상관없습니다.)
protocol Animal {
var count: Int { get set }
}
이런 프로토콜이 있다고 합시다.
프로토콜을 작게 분리하자! 하는 마음에 "먹이의 개수가 바뀔 수 있는"이라는 프로토콜로 나눠봤어요.
protocol CountChangable {
func change(count: Int)
}
그러면 이건 setter의 역할만 하는 거잖아요?
그럼 프로토콜 안에 프로퍼티도 있고, setter도 있는... 위에서 말한 1, 2번 의견에서 나쁜 점만 채택한 구조가 되더라고요.
이에 질문을 드리니 "충분히 고민 후 필요하다고 느꼈다면 크게 문제가 있진 않다."라고 말씀을 해주셔서 조금은 안심을 했는데,
부스트캠프를 진행하면서 경험을 쌓고 계속 고민을 해야겠다고 느꼈습니다.
지금까지는 너무 하던 대로, 편한 대로 코드를 작성했던 거 같아요 ㅠㅠ
반성합니다..
스터디
딥다이브 스터디 2회 차가 끝났습니다.
아직 초반이라 어떤 방식이 가장 유익할지 자리를 찾는 단계예요.
지금까지는(한 번 밖에 안 했지만) 1인 1 주제로 각자 딥다이브 후 공유하는 방식이었는데요.
딥다이브가 목적인 스터디인데 내용이 얕다는 의견이 지배적이라
1~2개의 주제를 함께 조사하고 공유하는 방식으로 바꿔봤습니다.
내일은 바뀐 방식으로 스터디하는 첫날인데 어떻게 될지 궁금하네요.
좋은 방향으로 갔으면 좋겠습니다.
마무리
왜 벌써 9월 달인 지... 심지어 곧 9월이 끝난다는 게 너무 놀랍습니다.
하반기 시작이라는데 iOS 공고는 어째서...
아무튼 파이팅 해야겠습니다.
중걍마... (중요한 건 꺾여도 그냥 하는 마음...)
감사합니다.