알고리즘은 문제를 해결하기 위한 절차를 만들어내는 과정을 뜻한다.
큰 문제를 작은 문제로 분해하고, 절차를 추론하며, 반복되는 패턴을 찾는 과정으로 알고리즘 문제를 해결한다. 문제를 풀기 전에 의사코드(pseudocode)를 작성할 수 있어야 한다. 프로그램의 절차를 일반적인 언어로 작성할 수 있어야 한다.
양의 정수가 주어졌을 때, 주어진 수의 각 자리의 숫자를 곱했을 때 한 자릿수가 될 때까지 계산 횟수를 반환하는 코드를 작성하라.
ex) input: 39, output: 3
234 -> [2,3,4]
)[2,3,4] -> 2 * 3 * 4 = 24
)num
을 입력받는 multiplicativePersistence
함수를 작성한다.num
의 각 자릿수를 한 자릿수로 분할한다.num
을 toString
메서드를 이용해 문자열로 변환한다.split
메서드를 이용해 한 자릿수로 분할해서 배열로 만든다.num
에 저장한다.자릿수 분할한다.
let separatedNumbers = num.toString().split('');
배열의 요소를 모두 곱한다.
num = separatedNumbers.reduce((acc, val) => acc * val);
그 값이 10 이상이면 자신을 호출하고, 아니면 1을 반환한다.
return num > 10 ? multiplicativePersistence(num) + 1 : 1;
복잡한 형태가 요구된다면 함수로 분할해 모듈화할 수 있다.
function multiplicativePersistence(num) {
let separatedNumbers = num.toString().split('');
num = separatedNumbers.reduce((acc, val) => acc * val);
return num > 10 ? multiplicativePersistence(num) + 1 : 1;
}
console.log(multiplicativePersistence(39)); // 3
Style Guide 항목과 관련해서 가장 많이 하는 실수는 indentation, spacing, semicolon, and variable naming
이다. 이런 부분에서 발생하는 실수는 일반적인 언어에서 문법을 틀리고 잘못된 표현을 여기저기 사용하는 것과 비슷하다. 작은 문제를 해결할 때는 별로 상관없지만 큰 프로젝트에서 점점 쌓이다보면 생산성이 낮아지고, 개발속도가 더뎌지는 원인이 된다.
코드 가독성을 높이려면, 코드의 목적이 뚜렷하고 자명해야 한다. 또한, 구조가 일관되고, 예측 가능해야 한다. 코드의 일관성이 부족하면 코드를 해석하는데 어려워진다. 다른 사람은 물론이고, 시간이 지나 자신이 작성한 코드를 보는데도 난감해질 수 있다. 해석하기 쉬운 코드를 작성하자.
종속되어 있는 코드를 작성할 때, 자식 코드 블록은 부모 코드 블록보다 두 칸 들여쓰기를 해야 한다.
이 때 가장 중요한 점은 tab
이 아닌 space
를 사용해야 한다.
JavaScript에서 변수의 이름은 모두 카멜 표기법을 사용한다. 클래스 이름은 파스칼 표기법을 사용한다.
변수 이름은 한 단어로 표현하는 것이 가장 이상적이다. 특히 포괄적인 의미의 단어보다. 핵심을 잘 담은 특정한 의미를 가지는 단어를 사용하는 것이 좋다. 변수가 존재하는 목적을 고려서해서 지어야 한다.
배열과 같이 여러 항목을 담을 수 있는 변수는 복수 명사를 사용한다. 단순히 List
를 붙이는 것은 지양된다.
Boolean에 관한 변수 이름은 형식을 가지고 있다. 변수의 앞에 is
혹은 are
를 붙인다. be
동사가 들어가는 만큼 뒤에는 형용사가 많이 온다.
함수 이름을 지을 때는 동사로 시작해야 한다. 함수의 동작을 가장 잘 표현해줄 수 있는 동사가 있다면 함수의 목적이 명확한 것이다. 코드를 읽는 사람 입장에선 함수의 이름만으로 동작을 파악하기 쉬워진다.
class
와 Constructor function
의 이름을 지을 때는 변수 이름 첫 글자를 대문자로 한다.
const
를 이용한 상수의 이름을 지을 때는 변수 이름 전체를 대문자로 하고 띄어쓰기는 _
로 구분한다.
JavaScript에서 문자열을 쓸 때는 "
큰 따옴표를 사용하지 말고 '
작은 따옴표를 사용한다. 섞어 쓰는 것은 좋지 않다. HTML에서는 큰 따옴표를 사용한다. Backquote(`)도 좋은 선택이다.
===
, !==
)를 사용해야 한다.3항 연산자는 if/else 문 대신 작성하기 적합하다. 그러나 긴 코드의 경우 읽기 어렵게 만들 수 있으므로 아주 짧고 명확하게 작성할 수 있을 것 같을 때만 사용해야 한다.
=
연산자로 줄맞춤한다고 들여쓰기를 사용하지 말아야 한다.