🐣 정주는 회고 중 :]/네이버 부스트캠프 웹・모바일 8기

[회고] 네이버 부스트캠프 웹・모바일 8기 멤버십 3주 차 회고 & 기술적 고민

유정주 2023. 9. 17. 13:43
반응형

서론

이번 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 공고는 어째서...

아무튼 파이팅 해야겠습니다.

중걍마... (중요한 건 꺾여도 그냥 하는 마음...)

 

감사합니다.

 

반응형