항해99 4기 Day 29 TIL
21.11.29 항해99 4기 29일차
주특기 심화 주차 시작
앞서 주특기 기초, 숙련 주차와 다르게 첫날인 오늘 팀원들과 함께 팀과제를 먼저 수행 후 개인 과제를 진행한다.
개인 과제는 쉬운버전, 어려운버전이 있는데 둘 다 테스트코드가 제공되며, 이를 만족하도록 구현하면 된다. (TDD)
왜 저번 주특기 3,4주차와 다르게 팀과제부터 하는지 궁금했는데 팀과제와 개인과제 내용을 보니 이유를 알 수 있었다.
개인과제는 테스트코드를 보고 동작을 하는 클래스를 만드는 것이었고, 팀과제 질문은 한가지 빼고 전부 객체지향프로그래밍(OOP)와 관련된 질문들이었다.
지금까지는 OOP에 대한 개념없이 일단 결과물을 만드는 것이 목표였다면 앞으로는 개발에 있어서 추상화를 고려해서 구현하라는 뜻을 전하고 싶은 것 같았다.
📌 TIL
✍ .toISOString()
- MDN 공식 문서
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
ISO 8601 형식의 date 문자열을 반환한다.
- 정규식 : /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
✍.startsWith()
- MDN 공식 문서
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
문자열이 다른 문자열로 시작하는지 확인할 수 있다.
var str = 'To be, or not to be, that is the question.';
console.log(str.startsWith('To be')); // true
console.log(str.startsWith('not to be')); // false
console.log(str.startsWith('not to be', 10)); // true
✍.toEqual(value)
- JEST 공식 문서
https://jestjs.io/docs/expect#toequalvalue
===과 같은 역할
✍Dependency Injection(의존성 주입)
- https://velog.io/@wlsdud2194/what-is-di
필요한(의존하는) 클래스를 직접 생성하는 것이 아닌, 주입해줌으로써 객체 간의 결합도를 줄이고 좀 더 유연한 코드를 작성할 수 있게 된다.
// 학부 때 소프트웨어공학 시간에 했던 필기
응집력은 한 모듈(클래스) 내에서
결합력은 모듈과 모듈간의 상관관계 ⇒ 간섭을 낮춰야 추상화 용이
한 모듈 내에서의 응집력(cohesion)은 높게
모듈간의 결합력(coupling)은 낮게
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
ISO 8601 형식의 date 문자열을 반환한다.
const event = new Date('05 October 2011 14:48 UTC');
console.log(event.toString());
// expected output: Wed Oct 05 2011 16:48:00 GMT+0200 (CEST)
// (note: your timezone may vary)
console.log(event.toISOString());
// expected output: 2011-10-05T14:48:00.000Z
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
문자열이 다른 문자열로 시작하는지 확인할 수 있다.
var str = 'To be, or not to be, that is the question.';
console.log(str.startsWith('To be')); // true
console.log(str.startsWith('not to be')); // false
console.log(str.startsWith('not to be', 10)); // true
https://jestjs.io/docs/expect#toequalvalue
===과 같은 역할
필요한(의존하는) 클래스를 직접 생성하는 것이 아닌, 주입해줌으로써 객체 간의 결합도를 줄이고 좀 더 유연한 코드를 작성할 수 있게 된다.
// 학부 때 소프트웨어공학 시간에 했던 필기
응집력은 한 모듈(클래스) 내에서
결합력은 모듈과 모듈간의 상관관계 ⇒ 간섭을 낮춰야 추상화 용이
한 모듈 내에서의 응집력(cohesion)은 높게
모듈간의 결합력(coupling)은 낮게
=> 난 그동안 OOP를 이렇게 알고 있어서 의존성이 낮아야만 좋다고 생각했는데, 새로운 개념을 배웠다.
정리하면, 필요한 객체를 직접 생성하는 것이 아닌 "외부로 부터" 필요한 객체를 받아서 사용하는 것이 DI(Dependency Injection)이며, 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높여준다.
📒 ...
이번 주특기 심화 주차는 학부시절 객체지향프로그래밍 시간에 배웠던 내용들이라 너무나도 익숙해서 2시간만에 개인과제(쉬운버전)을 다해버렸다. 클래스, 객체, 속성, 메소드, 인스턴스 이러한 내용들은 학교다니면서, 기사자격증 취득하는 과정에서 학습을 해서 이미 알고 들어가다보니 다른 사람들에 비해 수월하지 않았나 싶다.
테스트코드를 보고 해당 기능을 구현하는 TDD 방식은 처음해봤는데 재미있었다. 답지보고 문제푸는 느낌이라 해야되나. 물론 객체지향을 처음 접하는 사람들을 위해 과제를 쉽게 출제하신 느낌이 있다. 내일부터는 개인과제 어려운 버전을 해볼예정이다.
오늘부터 매주 알고리즘 스터디를 진행한다. 총 6주로 구성되어 있는데 1주차 기본 수학 내용부터 DFS BFS 재귀 정렬 백트래킹 등등 자료구조와 알고리즘에 대한 내용이 포함되어있다. 프로젝트 구현도 재미있는데, cs지식 관련 학습이나 알고리즘 문제 푸는 것도 재미있다. 학교다닐때 겪었던 학습방법이라 더 익숙해서 그런지 편한 느낌이다.
그리고 OOP에 대해서 충분히 알고 있다고 생각했는데 DI는 처음알았다. 아직도 한참 부족하다.
내일도 파이팅
Author And Source
이 문제에 관하여(항해99 4기 Day 29 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@point/항해99-4기-Day-29-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)