본문 바로가기

우아한테크코스

(7)
우아한테크코스 / 글쓰기 미션 / 우테코에서 찾은 나만의 효과적인 공부법 우하한테크코스에서는 코딩뿐만 아니라 글쓰기 미션도 함께 합니다. 이번에는 '우테코에서 찾은 나만의 학습법'이라는 주제로 미션이 주어졌는데 그 내용을 공유해보려고 합니다. 우테코에서 찾은 나만의 효과적인 공부법 학창 시절, 저는 과학실험실이 좋았습니다. 교실에서 배운 내용들은 어떻게 보면 가슴에 와닿지 않는 내용들이었습니다. 하지만 실험실에서는 배운 것을 실험해보며 직접 눈으로 과학 현상을 확인할 수 있었고, 덕분에 추상적인 것들이 구체화되면서 그제서야 수업시간에 배운 것들을 이해하곤 했습니다. 우아한테코코스(이하 우테코)에서의 시간은 학창시절 저의 모습을 떠올리게 해 주었습니다. 학교에서 경험해왔던 학습방식은 교육자가 가능한 한 세세하게 설명해주고 이해시키는 방식, 즉 교육자가 이해한 대로 학생들에게 주..
준 강의 - 프론트엔드 기본 꿀팁 ⚙️ 1. 네이밍 컨벤션 및 포매팅 자바스크립트는 유연한 성격을 가지고 있어서 팀마다, 개인마다 컨벤션이나 스타일이 많이 다를 수 있다. 프론트엔드 진영에서 프론트엔드 팀이 유명한 NHN Ent의 Toast UI에서 정리해준 코딩컨벤션을 참고해보자! 🎨 2. 코드를 자신있게, 아름답게! eslint, prettier 1) eslint 린트(lint)는 소스 코드에 문제가 있는지 탐색하는 작업을 의미하며, 린터(linter)는 이 작업을 도와주는 소프트웨어를 말한다. 자바스크립트와 같이 컴파일 과정이 없는 인터프리터 언어의 경우, 런타임 에러가 발생할 확률이 높기 때문에, 이 린트 작업을 통해 사전에 에러를 최대한 잡아줄 수 있다. 그 중 eslint는 자바스크립트진영의 오픈소스로 확장되고 있는 정적 분석..
api 설계 리소스 타입(resource archetypes)별 표현 document collection store controller Document 객체 인스터스와 유사한 단일 개념 단수개의 리소스를 표현 /resources/{id} /resources/{id}/sub-resources/{id} Collection 리소스의 디렉토리를 의밈 복수를 사용하여 표현 /resources /resources/{id}/sub-resources Store 서버가 아닌 클라이언트가 관리하는 리소스 document와의 차이는 고유식별자가 없음 복수를 사용하여 표현 /resources/{id}/path Controller 절차라는 개념의 리소스 실행가능한 함수와 유사 매개 변수와 반환 값이 존재 동사를 사용해도 좋음 /resour..
데이터 베이스 a. 필요한 데이터가 어떤 것인지 모른다면 DB 설계는 할 수 없다. - 응용 프로그램에 대한 이해는 필수이며, 그 외에도 자료형은 어떤 것인지, 자릿수와 같은 표시상 사용자 편리성 데이터도 저장해야 하는지 등도 고려해야 한다. b. 중복으로 저장된 데이터 항목을 제거하자 - 데이터를 중복으로 저장하면 일관되지 않은 데이터, 비정상적인 삽입/갱신/삭제 처리, 디스크 공간 낭비 등의 문제가 발생한다. - 정규화는 중복을 줄이고 무결성을 향상하는 데 초점을 둔 작업이다. 중복을 해결함으로써, 데이터간의 모순을 방지할 수 있어, 질의해야할 대상이 명확해진다. - DB 역시 데이터의 본질을 표현하는 적절한 네이밍이 중요하다. '명명 규칙을 통일'하지 않아 각 속성의 의미가 모호할 경우, 잘못된 설계를 할 수 있..
테스트하기 어려운 코드 요구사항 1 - 테스트를 위한 메소드 제거 chess.Board 객체는 체스판을 추상화한 객체이다. 이 객체를 보면 체스판을 초기화하기 위해 initialize(), initializeEmpty()가 존재한다. initialize()는 체스 게임을 시작하기 위해 체스판을 초기화하는 메소드이고, initializeEmpty()는 테스트를 위한 목적으로 구현했다. 테스트를 위한 initializeEmpty()가 Board에 있는 것이 적합하지 않다. 구조를 변경해 테스트 목적으로 추가한 initializeEmpty() 없이도 테스트 가능하도록 리팩토링한다. 힌트: 인터페이스를 활용한다. 요구사항 2 - 테스트하기 어려운 코드를 테스트 가능한 구조로 변경 다음 Car 객체의 move() 메소드의 이동/정지를 ..
람다와 스트림 함수형 프로그래밍 함수 함수는 같은 인수값으로 함수를 호출했을 때 항상 같은 값을 반환한다. (Random, Scanner 등은 함수가 될 수 없다) 함수형 프로그래밍 함수나 메서드는 지역 변수만을 변경해야 함수형이라 할 수 있다. side-effect가 발생하지 않음 그리고 함수나 메서드에서 참조하는 객체가 있다면 그 객체는 불변객체여야 한다. 즉, 객체의 모든 필드가 final이어야 하고 모든 참조 필드는 불변 객체를 직접 참조해야 한다. 함수나 메서드가 어떤 예외도 일으키지 않아야 한다. 이점 멀티코어와 동시성 제어 캐싱 입력에 따른 출력 결과가 같기 때문에 캐싱을 하여 다시 계산하지 않고 저장하는 최적화 기능을 제공한다. 꼬리호출 최적화 람다표현식 람다표현식 람다 표현식은 메서드로 전달할 수 있는..
클래스와 인스턴스 다음 내용은 우아한테크코스에서 클래스와 인스턴스를 주제로 수업한 내용을 정리한 것이다. 클래스 클래스는 일종의 '객체의 팩토리' 로 볼 수 있다. 아쉽게도 Java에서 제공하는 new 연산자는 충분히 강력하지 않아 유사한 객체가 존재하거나 재사용 가능한지 확인하지 않는다. 클래스를 객체를 반환할 수 있는 웨어하우스로 바라봐야 한다. 응집도가 높고 견고한 클래스에는 적은 수의 메서드와 상대적으로 더 많은 수의 생성자가 존재한다. ex) 3 ~ 5의 public 메서드, 7 ~ 10개의 생성자 초기화 로직을 오직 하나의 생성자에만 위치시키고 이 생성자를 '주 생성자(primary constructor)'라고 부른다. 부 생성자(secondary constructor)라고 부르는 다른 생성자들이 주 생성자를 ..