본문 바로가기

전체 글81

3. 언어의 기초 다루는 내용 문법 데이터 타입 제어문 함수 1. 문법 대소문자를 구분 식별자 -> 변수, 함수, 프로퍼티, 함수 매개변수의 이름으로 관습적으로 카멜 케이스를 사용 camelCase 스트릭트 모드 (엄격하게 체크하는? 것으로 자바스크림트가 실행되는 방식이 매우 많이 바뀜) 'use strict' 문장 마지막에 세미콜론을 꼭 써야 하는 건 아니지만, 세미콜론을 쓰길 권장 제어문에서 문장 하나만 실행하더라도 항상 코드 블록을 쓰길 권장if(test) { console.log(test); } 키워드 : 특정 조작 목적 (ex. break, case etc) 예약어 : 키워드로 쓸 가능성이 있음 (ex. abstract, enum etc) 키워드와 예약어는 식별자든 프로퍼티 이름에든 쓰지 않는 편이.. 2022. 7. 13.
2. HTML 속의 자바스크립트 다루는 내용 type language 대체, 콘텐츠 타입(마임 타입) 지정 application/javascript, text/javascript(생략가능, default값) 사이에 스크립트 코드가 있고 src 속성을 사용하고 있다면 인라인 코드는 무시됨 일반적으로 자바스크립트 코드를 모두 요소 안에 페이지 콘텐츠 마지막에 쓰는데, 자바스크립트 파일을 전부 defer 속성을 설정하면 해당 요소를 만나는 즉시 코드를 내려받지만 실행은 지연한다. 외부 스크립트를 불러올 때만 유효하며, 인라인 스크립트의 defer 속성은 무시한다. async 속성은 defer 와 같이 외부스크립트에만 적용된다는 점은 비슷하나, 스크립트가 순차적으로 실행된다는 보장이 없다. 비동기는 페이지의 load 이벤트 전에는 실행되지만,.. 2022. 7. 13.
13. 동시성 동시성이 필요한 이유? 동시성은 커플링(결합)을 없애는 전략이다, 즉 무엇과 언제를 분리하는 전략이다 단일 스레드의 경우 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 응답 시간과 작업 처리량 혹은 한 번에 한 사람만 처리하는 경우, 정보를 대량으로 분석하는 경우, 이런 경우를 위해 동시성이 필요하다 할 수 있다. 미신과 오해 동시성은 성능을 높여준다 (때때로 높여준다, 각 스레드가 독립적인 행동을 취할 때) 동시성을 구현해도 설계가 바뀌지 않는다 (단일과 다중 스레드 시스템은 설계가 판이하게 다름) 웹 또는 EJB 컨테이너를 사용하면 동시성을 이해할 필요가 없다 (오히려 더 알아야 한다. 동시 수정, 데드락 등을 피하기 위해) 타당한 생각 동시성은 다소 부하를 유발한다 (성능 측면에서 부하가 .. 2022. 7. 13.
12. 창발성 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 제시한 단순한 설계 규칙 4가지 모든 테스트를 실행하라 무엇보다도 먼저 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다. 테스트가 불가능한 시스템은 검증도 불가능하며, 검증이 불가능한 시스템은 출시하면 안된다고 생각한다. 테스트 케이스를 만들고 계속 돌려라 라는 단순한 규칙을 따르면 시스템은 낮은 결함도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성한다. 중복을 없애라 우수한 설계에서 중복은 커다란 적이다. 똑같은 코드는 당연히 중복이고, 비슷한 코드는 더 비슷하게 고쳐주면 리펙토링이 쉬워진다. 구현 중복도 중복의 한 형태이다. 소규모 재사용은 시스템 복잡도를 극적으로 줄여주고, 추후 대규모 재사용을 가능토록 한다. 프로그래머 의.. 2022. 7. 13.
11. 시스템 시스템 제작과 시스템 사용을 분리하라 제작과 사용은 다르다. 체계적이고 탄탄한 시스템을 만들고 싶다면 흔히 쓰는 손쉬운 기법으로 무듈성을 깨서는 안된다. 설정 논리는 일반 실행 논리와 분리해야 모듈성이 높아진다. Main 분리 시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main 이나 main 이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 팩토리 때로는 객체가 생성되는 시점을 애플리케이션이 결정할 필요도 생긴다. 이럴 때는 추상 팩토리 패턴을 사용하여 결정은 애플리케이션이 하지만, 생성 코드는 애플리케이션이 모르게 할 수 있다. 의존성 주입 제어의 역전(IoC) 기법을 사용하는데, 한 객체가 맡은 보조 책임.. 2022. 7. 13.
10. 클래스 클래스 체계 공개에서 비공개 형식으로 진행되어 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 테스트에서 사용한다면 protected 도 고려할만하다. 하지만, 그 전에 비공개 상태를 유지할 온갖 방법을 강구한다. 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야 한다. 클래스는 작아야 한다. 클래스를 설계할 때도 함수와 마찬가지로 '작게' 가 기본 규칙이다. 그렇다면 얼마나 작아야 할까? 함수는 물리적인 행 수로 크기를 측정했다. 클래스에서는 클래스가 맡은 책임을 센다. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. 간결한 이름.. 2022. 7. 13.