우테코 프리코스 6기 1주차 회고
신현호
우테코 프리코스 6기
목차
서론
#당연히 작년 우테코랑 비슷하게 1주차가 간단한 알고리즘 문제.. 라고 생각했으나, 숫자야구가 저를 바로 맞아주었습니다.
숫자야구.. 작년 저한테 혼자 공부해서는 뭐 안될거라는 생각을 가지게 해주었던 문제여서 더욱 기억에 남습니다.
작년에는 부족한 실력에 기능 구현만 하기도 벅차서 힘들었는데, 이제는 완성도를 높이는게 더 힘들었던 과제였던 것 같습니다.
이번 포스트에서는 숫자야구 미션을 하면서 제가 학습한 점을 몇가지 적어보려고 합니다.
이번에 학습한 내용
#함수 선언식과 표현식
#js
const something = () => {} // 함수 표현식
function something() {} // 함수 선언식
참고 자료
메서드를 작성하면서 함수 선언식을 사용해야할까? 아니면 함수 표현식을 사용해야할까? 고민을 많이 했던 것 같습니다.
자료들을 찾아 본 결과, 함수 표현식을 권장하고 있었습니다.
함수 표현식과 함수 선언식의 차이는 다음과 같습니다.
- 함수 선언식은 호이스팅에 영향을 받지만, 함수 표현식은 호이스팅에 영향을 받지 않습니다.
- 정확히는 함수 선언식 은 함수 전체가 호이스팅되고, 함수 표현식은 선언부와 할당부로 나뉘어지는데, 선언부만 호이스팅됩니다.
따라서, 함수 표현식은 함수 선언식에 비해 다음과 같은 이점을 갖습니다.
- 함수 표현식은 클로저 생성이 가능합니다.
- 함수 표현식을 다른 함수의 인자 값으로 사용 가능합니다. (임시변수에 넣지 않고도 콜백으로 사용 가능합니다.)
따라서, 일반적인 모든 경우에서는 함수 선언식 대신 함수 표현식을 사용하는게 더 좋습니다.
다만 클래스 내부 메서드에서는 상황이 다릅니다.
참고 자료
자료를 요약하자면 다음과 같습니다.
- 프로토타입 체이닝이 정상적으로 동작하지 않아서 메소드 오버라이드 현상이 일어나게됩니다.
- 화살 함수의 특성상 prototype을 통해 공유되어야 할 메소드가 인스턴스 내에 각각 생성되어 퍼포먼스가 저하됩니다.
- 상속이 정상적으로 동작하지 않습니다.
효과적인 네이밍
#이름 짓기 기술로 유지보수 프로그래머의 정신을 혼미하게 만들 수 있다.
[유지보수하기 어렵게 코딩하는 방법, 2p]
효과적인 네이밍은 이름만 보고도 어떤 기능인지 알 수 있어야 합니다. 그래서 변수명을 지을 때 고민을 많이 했던 것 같습니다.
그리고 이에 대한 내용은 컨벤션에서도 찾아볼 수 있었습니다.
참고자료
자바스크립트의 내장 함수
#js
// ex 1.
const array = new Array(4).fill(0) // bad
const array = Array.from({ length: 4 }).fill(0) // good
// ex 2.
// bad
const array = [1, 2, 3, 4]
const res = []
for (let i = 0; i < 4; i++) {
if (array[i] > 2) res.push(array[i])
}
// good
const array = [1, 2, 3, 4]
const res = array.filter((val) => val > 2)
자바스크립트에는 많은 내장 함수들이 존재하기때문에, 내장 함수들을 활용하여 코딩하면 더욱 효과적입니다.
레포지토리
#신현호
Frontend Developer
프론트엔드 개발자를 꿈꾸고 있는 대학생입니다. 끊임없이 배우고 성장하는 개발자가 되기 위해 노력하고 있습니다.
우테코 프리코스 6기
총 5개의 포스트가 존재합니다.