Solid의 5번째 원칙 [스코클 TIL_230720 ]

7과11사이·2023년 7월 20일
0

스파르타코딩클럽

목록 보기
7/90
post-thumbnail

배운 것

어제 이어, 추가 이해가 필요한 팀원분들을 위해 코드 강의를 열었다.
오늘은 마주한 문제점이나 해결한 코드가 없지만, 조금이라도 적어보고자 한다.

  • 클래스에 대해 설명할 수 있도록 구조 파악 및 이해
    팀원 중 클래스, 특히 init에 대해서 이해를 못하는 경향이 있었다.
    나 또한 처음 코드를 배울 때 이해를 못했던 경향이 컸기 때문에 조금이라도 쉽게 전달하고 싶었는데, '사람'을 활용하면 그래도 이해하기 쉬울 것 같았다.

    class 사람 {
        var 이름: String
        var 나이: Int
        var 성격: String
    
        init(name: String, age: Int, personality: String) {
            self.이름 = name
            self.나이 = age
            self.성격 = personality
        }
    
        func greet() {
            print("제 이름은 \(이름)입니다. 나이는 \(나이)이에요.")
        }
    
        func drink() {
            print("물을 마셔요.")
        }
    
        func eat() {
            print("밥을 먹어요.")
        }
    } 
    
    let 동준 = 사람(name: "동준", age: 30, personality: INFP)

    init을 설명하기 위해서 '동준'이라는 사람을 만들었다.
    '사람' 클래스 안에 있는 init()를 보면 한글과 영어를 섞어 사용했는데, 객체를 만들어낼 때 값을 받는 역할을 하는 코드와 입력 받은 값을 저장하는 프로퍼티들에게 할당되는 모습을 보여주기 위해 저렇게 구성을 해보았다.

    다행히 모두 이해를 했다!! 🔥

  • 은닉화 및 추상화에 대한 개념 및 기본기 추가 보충
    코드 DIP를 위해 한 파일에 뭉텅이로 정리했던 코드들을 나누기 시작했다.
    이때 개인적으로 짠 코드에서 살짝 꺼림칙한 부분이 있었다.
    클래스를 변수에 직접 할당한 이유였다.

    공부를 할 때 배우길, 클래스의 역할은 객체를 생성하는 행동을 한다.
    이에 맞서, 객체는 다른 객체의 값을 직접 바꾸는게 아닌, 메시징을 통해 값을 바꾸도록 해야한다고 기억한다. 하지만 이번에 구현한 점이 다소 어긋나지 않았나 싶다... 그러다 보니 은닉화, 캡슐화, DIP 등 전반적으로 SOLID에 대해서 한번 더 찾아보고 공부하는 시간을 가졌는데, 이건 다른 글로 적어 보아야겠다.

  • 팀원 덕분에 Xcode를 활용한 커밋 기능을 알게됐다!
    오늘의 가장 큰 발견!!
    항상 터미널을 사용해서 커밋하고 푸쉬를 하던 나에게 완전 색다른 경험을 주었다.

회고

  • 클래스에 대한 강의를 진행하면서 비교적 쉽게 이해할 수 있었다는 피드백을 받았다.
    최대한 쉽게 설명하고 싶었고, 나 또한 코드를 처음 접할 때이해를 못했던 부분이다보니 어떻게 하면 간다하게 개념이라도 잡을 수 있을까 고민을 많이 했다. 다들 열심히 질문도 주시고 차근차근 알려드리다 보니 이해를 하신 것 같았다! 조금은 감사한 순간이었다.
    무엇보다 가장 중요한 건, 이분들이 포기하지 않았다는 점! 🔥🔥

    약간 덧붙이자면, 위에 정리한 '사람' 클래스는 사람을 만들어 내는 일종의 설계도라 설명했다. 맨 위에 선언된 프로퍼티들은 해당 클래스에서 가지는 값이며, 값이 있다면 init을 통해 해당 값들을 사용하기 위해 등록하는 구조라고 설명을 했다.

    더불어 왼쪽에서 오른쪽으로 계산이 되는 수학과 달리 코드 상에서는
    값이 오른쪽에서 왼쪽으로 담긴다는 점을 다시 강조하며 차근차근 설명하니
    다들 잘 이해하셨다.

    이 내용을 남기는 이유는, 수현님과 나의 도움이 다른 팀원분들에게 도움이 되었다고 느낀 가장 큰 순간이었기 때문이다! 역시 사람은 포기하지 않으면 이해할 수 있다!💪🏻

  • 나는 어떤걸 해보고 싶을까?
    이번 주는 첫 주 인만큼, 새로운 팀원분들과 조금은 친해지고, 문법 자체를 공부하는 시간으로 이해했다. 산 너머 산인 개발 공부 중 아주 빙산의 일각만 경험한 것이다! 그만큼 해야할 일이 넘쳐 나는데, 내일은 우선 기습으로 공개한 2차 과제를 조금이라도 풀어보고자 한다. 이후, 객체 지향 프로그래밍과 개발에 큰 파트를 담당한다고 생각하는 SOLID와 캡슐화, 은닉화를 정리해보고자 한다!

  • 오늘의 생각
    예전에는 화려하고 거대한 프로젝트를 해야지만 좋은 경험으로 보였다.
    취업을 하고 싶다보니 아무래도 큰 경험에서 주요 역할을 맡거나 나만의 필살기가 있는 모습이 취업에 유리할 것이라 생각했다. 여전히 맞을수도 있는 말이지만, 여러 상황과 경험을 만드는 것도 좋지 않나 싶은 생각이 들기도 하는 날이었다.

개선 방법

  • 객체에 대해서 설명을 할 때 게임 캐릭터를 언급했었다.
    대체로 남성이면 한번쯤은 이름을 들어봤을 법한 게임의 캐릭터를 활용해서 설명했지만, 생각보다 '객체'라는 것을 전달하기에는 부족했다. 범위가 너무 좁지 않는, 일상에서 쉽게 마주하는 무언가를 활용해야 한다는 생각을 가지게 됐다.

  • 부트캠프에 들어간 나에게 가장 중요한 건 무엇일까?

    1. 빠른 프로젝트 실행?
    2. 다양한 코드에 노출?
    3. 여러 동기들과 빨리 친해지기?

    모두 중요하지만, 스스로 더 중요하다 느끼는 포인트가 생기길 노력하자.

0개의 댓글