드디어 프리코스의 마지막이다.
늘 무엇이든 마지막은 오지 않을 것 같다가도 훌쩍 와있고는 한다.
4주차는 엄청나게 어려운 것은 아니었는데 여러 파일을 연결하는 것이 고민스러웠다.
input, output을 각기 파일을 기능별로 나누어 제시되었는데,
이렇게 하니 정리가 잘 되어 보기가 편했다.
왜 클래스를 나누고 함수를 나누라고 이해되는 부분이었다.
프리코스를 하며 스트레스를 받은 건 맞지만 내가 3개월 공부했던 것보다
이번 1개월 공부한 것이 더 많다고 할 수 있을 정도로 많은 것들을 배울 수 있었다.
떨어지게 된다고 하더라도 다음 프리코스도 참여해보고 싶을 만큼 고마운 과정이었다.
다만, 이전에도 언급했지만 아쉬운 것은 내 할일에 급급해서 커뮤니티를 잘 이용하지 못했다는 것이다.
다음이 있다면 커뮤니티를 많이 이용해봐야겠다.
4주차 배운점
- 1순위는 피드백, 미션을 읽었을 때 이해되지 않는 개념, 설명, 요구사항 등을 이해하기
- “getter을 사용하는 대신 객체에 메세지를 보내자”, 디미터의 법칙을 읽고 객체지향 프로그래밍를 처음부터 찾아봄. 객체지향 프로그래밍이란 무엇인지, 장단점이 무엇인지, 그 특징이 무엇인지 이해하며 왜 디미터의 법칙 등을 고려하는 것의 중요성에 대해 인지함. 저번 과제에서 getter을 알게되면서 private변수를 변경 불가하게, 보일수만 있게 하는 방법이 좋은 방법이라고 느꼈는데, 이를 넘어 private은 가능한 그 안에서만 처리하여 밖으로 내용을 내보이지 않는 것이 좋다는 것을 알게됨. 그동안 절차적 프로그래밍으로 코드를 구성했는데, 앞으론 객체지향에 대해 더 공부하고 객체지향을 고려하여 코드를 짜는 방법을 생각해봐야겠음.
- 피드백에서 단일책임의 원칙을 읽고 객체지향 5원칙에 대해 찾아봄. 그 중 상속과 인터페이스라는 개념을 추가적으로 알게 됨. 아직 객체에 대해 잘 모른다는 생각이 많이 들음. 인터페이스와 클래스, 객체 등 개념을 알게 되었어도 이를 적절한 곳에 적절하게 사용하는 것은 아직 미숙하다고 느낌. 자유자재로 사용할 수 있도록 다양하게 응용해보는 것이 필요.
- 저번주에 배운 부분 응용하기
- export/require을 이용하여 파일간에 객체나 클래스를 연결해서 사용하는 것이 자연스러워졌음. 특히 App.js를 중심으로 BridgeGame.js 변수를 다루는 것이 새로웠음. 조금씩 익숙해지며 응용해가며 그 개념에 대해 이해할 수 있었음.
- 기능을 구현하며 고심한 부분
- 파일이 전보다 많아져서 각자 어느기능을 수행해야 하는지를 구상하는 것이 오래걸렸음. 각 파일에 가이드라인이 있어서 각 메서드에 무슨 기능을 넣고, 이걸 어떻게 유기적으로 연결해야 할지를 생각했음. README에 기능을 차례대로 작성하고 각 기능이 어느 파일에서 어느 메서드를 이용해서 구현되어야 하는지를 입력함. 그리고 이 과정에서 파일별로 기능이 분산되어있는 것이 굉장히 유용하다고 생각했음. 특히 이번에 input, output을 따로 파일로 작성해서 예외처리나 출력형식 등을 다듬는 것이 편리했음. 만약 하나의 파일이었다면 습관처럼 군데군데에 배치해서 찾는 것도, 수정하는 것도 어려웠을 것 같음. README를 자세하게 작성하고 각 파일, 메서드의 역할을 정하고 코드를 짜기 시작하는 것이 덜 혼란스럽고, 쉽게 코드를 짤 수 있다는 것을 한번 더 느낌.
- 저번 오류와 같이 중단하는 것이 아닌 메세지를 던지고 해당부분을 다시 실행해야 한다는 것을 고려해야 했음. 그래서 try…catch를 사용해서 오류를 잡고, 스스로를 불러와 다시 readline하는 방식으로 코드를 짬. 스스로를 다시 불러오는 것에서 this.함수명을 사용했는데 이렇게하면 실행이 되지 않았음. 객체.함수 형태로 실행하니까 실행됨. 처음 try…catch를 배웠을때 오류가 발생할 것 같은 부분에 사용한다는 말이 이해가 잘 되지 않았었는데, 이런방식으로 오류처리를 할 수 있다는 점을 배움.
- 느낀점
- 저번주 과제는 두 파일에 나누어서 진행을 했지만, 기능적으로 파일을 분리했다기보다는 랜덤로또 객체를 생산하는 파일과 게임을 주관하는 파일로 나눈 느낌이 강했음. 이번에 파일을 여러개로 나누면서 기능별로, 입력, 출력, 다리만들기 등 분리하는 것에 대한 이점을 알게 됨. 더불어 파일과 데이터가 비교적 복잡하게 연결되면서 이전처럼 적당히 기능을 나누고 이를 파일에다가 입력해가며 구체화하는 방법이 더 혼란스러울 수 있다고 느낌. 처음부터 잘 구상하고 계획하는 것이 중요하다고 느낌.
- 객체라는 것이 보다 다양하게 활용할 수 있고, 그래서 더 원칙들을 고려해서 짜야겠다고 생각함. 복잡하면 끝도없이 얽혀 수정도, 삭제도 어려워질 것 같다고 느낌. 그렇기 때문에 기능에 따라 분화시키고, 각 객체의 독립성을 높여야 한다고 느낌. 알아볼수록 모르는 개념이 나오고, 그만큼 많이 검색하고 찾아봐야 할 필요성을 느낌. 한번 읽는다고 단번에 이해가 가는 것은 아니지만 처음 1주차보다 지금 객체에 대한 이해도가 높다는 점에서 더 접하고 찾는다면 언젠가 글을 읽을 때 완전히 이해할 수 있는 때가 오지 않을까 싶음.
- 우아한 테크코스 4주간 느낀점
- 그동안 내가 해온 것들이 아니라 아예 처음 접하는 개념, 원칙들이 많았음. 때문에 새로운 것을 처음부터 찾아보고 이해하고 응용해야한다는 점이 어려운 점이었음. 하지만 어려운 만큼 1주차에 접한 깃, 깃허브부터 4주차의 객체지향 프로그래밍의 여러 원칙까지 많이 배운 것을 느낌. 여러 함수로 기능을 분화하고, 클래스를 분화하고, 파일 간에 데이터를 주고 받고 하는 방식은 코딩을 할 때 고려해본 적 없는 부분이었는데, 규칙을 지키고자 노력하면서 왜 이런 방식을 해야하는지 의문을 가지고 답을 찾고, 답을 내리는 과정이 되었음. 이처럼 홀로 공부할 때는 생각하지 않았던 부분을 생각해보게 되고, 또 다른 부분에서 내가 놓치는 것이 있지는 않을까 공부의지를 높인 것만으로도 좋은 학습이었음. 더불어서 모르는 것이 정말 많다는 것을 다시끔 느끼면서 다양한 사람들과 이야기하고, 찾고, 배워야겠다고 생각함.
- 사람들이 좋은 코드는 무엇인가, 어떤 방식이 더 좋은 것인가, 어떤 방향으로 공부하는 것이 좋은가를 토의하는 것을 보며 한번도 가져본 적 없는 의문을 가지기도 하고, 그걸 검색해보기도 하며 커뮤니티를 통해 배운 것들도 있음. 그동안 혼자 공부해왔는데, 그래서 얻을 수 없던 다양한 자극들, 의문, 열정, 동질감 등을 얻을 수 있어서 좋았음. 느낀 개발자 문화 중 제일 좋은 건 서로 많이 지식을 나누고 배우려고 한다는 점임. 그런 문화를 체험해볼 수 있어서 정말 좋은 경험이었음.
https://github.com/woowacourse-precourse/javascript-bridge/pull/231
[다리 건너기] 최수현 미션 제출합니다. by chsua · Pull Request #231 · woowacourse-precourse/javascript-bridge
github.com
참고 사이트:
- 데메테르의 법칙: https://prohannah.tistory.com/204
- 데메테르 법칙_2: https://mangkyu.tistory.com/147 (요게 더 읽기 좋음)
- getter 대신 메세지를 보내자: https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-getter/
- 객체지향 5원칙: https://blog.itcode.dev/posts/2021/08/13/single-responsibility-principle
- 오버라이딩/오버로딩: http://www.tcpschool.com/java/java_inheritance_overriding
- 인터페이스: https://velog.io/@devgosunman/인터페이스Interface란
- 객체지향프로그래밍이란: https://velog.io/@khy226/객체지향-프로그래밍-OOP-이란
- try…catch : https://ko.javascript.info/try-catch#ref-1956
'2022우아한형제들_우테코' 카테고리의 다른 글
[우테코] 코딩테스트 (1) | 2022.12.21 |
---|---|
[우테코] 프리코스를 마치고 코테를 준비하며 (1) | 2022.12.21 |
[우테코] 프리코스 3주차 (0) | 2022.12.19 |
[우테코] 프리코스 2주차 (0) | 2022.12.19 |
[우테코] 프리코스 1주차 (0) | 2022.12.19 |