알고리즘
코딩 문제를 풀어나가는 방식의 핵심은 '문제를 분해하는 것'에 있다.
보통 어떤 자료구조에 새로운 요소를 추가하거나, 삭제, 변경, 접근 하는 등의 문제들이 복합화되어 있는데, 이를 적절히 분해하고 순서대로 작동되도록 해야한다.
이를 위해 필요한 논리를 '의사코드(pseudocode)로 적어보는 것'은 생각의 정리에 도움이 된다.
그 다음으로 필요한 것은 '알고 있는 개념으로 pseudocode를 실현할 수 있는지 구체화하는 것' 이다.
-문제 분해, 의사코드 작성
예를 들어서, 어떤 문자열 에서 'a'라는 단어를 찾아서 'b'라고 전부 바꿔주고 싶다면,
1. 'a'라는 문자의 입력을 받아온다.
2. 'a'라는 문자가 문자열에 있는지 확인한다.
3. 'a'를 'b'로 바꾼다.
이다.
-실현 가능하게 구체화
이를 구체화 해보면,
1. for문을 이용해서 입력받아온 'a'가 문자열 상에 있는지 문자열의 끝까지 살펴본다.
2. 'a'라는 문자의 index가 '-1'이 아니면 문자를 찾은 것이다.
3. 만약, 'a'라는 문자를 찾았으면,
3-1. index를 이용해서 'a' 문자 앞의 문자들을 얻어낸다.
3-2. 해당 문자들 뒤에 'a' 대신 'b'를 넣는다.
3-3. 다음 'a'가 올때까지의 문자들을 얻어낸다.
3-4. 원래 생성한 새로운 문자열에 계속해서 문자들을 넣어준다.
라고 할 수 있다.
코드 작성 팁
코드는 목적이 뚜렷하고, 구조가 일관적이며 예측 가능하게 작성해야 한다.
이를 위해 지켜야하는 내용은 아래와 같다.
1. 들여쓰기는 Space로 2칸 쓴다.
논쟁이 있으나, Javascript 프로젝트의 85% 이상이 스페이스 들여쓰기를 사용하고 있다.
2. 변수나 함수 등의 이름은 한 단어(Descriptive word)로 표현하는 것이 좋으며, 구조적인 부분보다는 존재하는 목적을 고려해서 이름을 지어야 한다.
(O) Books = ["총균쇠", "노인과 바다", "제3의 침팬지"]
(X) Inputs = ["총균쇠", "노인과 바다", "제3의 침팬지"]
3. Boolean의 이름은 관련 변수의 이름 앞에 is 혹은 are을 붙인다.
ex) isValid, areExist
4. 함수의 이름은 동사로 시작하고, 객체의 이름으로 끝나도록 한다. {VerbObject}
(O) let countCupsInCupboard = function(){ ...
(X) let CupsInCupboard = function(){ ...
5. 변수 이름에서의 대문자는 아래와 같은 경우에 사용한다.
- 보통, 변수가 포함한 class를 지시하기 위해서 변수 이름의 첫 글자를 대문자로 쓴다.
- 프로그램 전체에서 일정한 값을 가지는 상수(constant)의 이름을 정할 때는 그 변수의 이름은 전체를 대문자로 쓴다.
6. 주석
- 주석을 최소화 한다.
- 주석은 코드의 목적을 설명해야 한다. 어떻게 작동하는지 설명하면 안된다.
관련문서 : https://github.com/rwaldron/idiomatic.js/tree/master/translations/ko_KR
'Programming-[Frontend] > Javascript' 카테고리의 다른 글
Javascript / Closure Function (Currying, Closure module pattern) (0) | 2020.08.04 |
---|---|
JavaScript / Rest Parameter, Spread Operator (0) | 2020.08.04 |
Javascript / 기초 / 객체(Object) (0) | 2020.07.30 |
Javascript / 기초 / 배열, 반복문 (0) | 2020.07.29 |
Javascript / 기초 / 변수, 자료형, 조건문, 연산자, 문자열 (0) | 2020.07.27 |