Backend/Javascript (35) 썸네일형 리스트형 [Javascript] - Optimization Optimization (최적화) - 성능 오늘날의 기기들은 빠르고, 성능은 고려할 대상이 아닌 것처럼 보입니다. 우리가 필요로 하는 것 이상의 프로세서를 갖고 있으며 프로세서 대부분은 많은 시간 동안 놀고 있습니다. 하지만 어떤 것은 아직 충분히 빠르지 못한데, 일부의 경우 프로그램의 크기가 증가하는 속도를 용량이 따라가지 못하기 때문입니다. 자바스크립트가 지배하고 있는 사용자와의 상호 작용 영역에서는 아무리 빨라도, 느리다고 느껴질 수 있습니다. 성능에 대해 여전히 관심을 가져야 하지만, 적절한 수준을 유지해야 합니다. 최적화는 상황을 더 악화시킬 수 있습니다. 괄목할 만한 향상이 있는 최적화만 해야 합니다. (최적화를 최적화할 필요가 있습니다) - 측정 프로그램을 실행하고, 실행하는 데 얼마나 많은.. [Javascript] - Testing Testing (테스팅) - 프로그램이 완벽하다고 검증할 수 있는 테스트는 없습니다. 프로그램에 결함이 있다고 증명할 수는 있지만, 프로그램에 결함이 없다고 증명할 수는 없습니다. 테스트가 실패하는 것은 테스트 자체가 프로그램이 올바르다는 것을 증명하려고 만들어졌기 때문입니다. - 버그 프로그램의 버그는 대부분 사람에 의해 만들어집니다. 프로그램에서 혼란이 발생할 만한 부분은 최대한 없어야 합니다. 버그는 혼란의 또 다른 말로, 혼란을 없애는 것이 테스트하는 것보다 훨씬 더 생산적입니다. 그렇게 하기 위해 프로그램을 최대한 단순 명료하게 만들어야 합니다. - 소프트웨어의 비대함 비대함이라는 것은, 프로그램이 그냥 크기만 한 것입니다. 규칙 없이 기능을 마구 추가하거나, 잘못된 구조로 인해 비대해질 수 있.. [Javascript] - JSON JSON - 표준화 JSON 의 기본 철칙은 텍스트 형태를 유지하고, 최소한으로, 자바스크립트의 일부로 유지하는 것이었습니다. 표준은 간단하고 완전해야 하며, 동의해야 하는 부분이 적을수록 상호 운용하기도 쉽습니다. - 따옴표 자바스크립트는 문자열에 홑따옴표나 겹따옴표 둘 다를 허용합니다. 속성 이름은 따옴표로 둘러싸게 했습니다. ES3 의 예약어 목록은 집어넣지 않았습니다. JSON 에선 둘 다 허용할 필요가 없는데 이렇게 한 이유는, 사람들이 자바스크립트로 개발하도록 만들고 싶었기에, JSON 표준이 자바스크립트의 나쁜 부분을 들춰선 안 된다고 생각해서 입니다. - 주석 JSON 은 네트워크 상에서 서로 다른 언어들로 만들어진 프로그램들을 연결하는 것이 목적이었습니다. 주석은 항상 무시당하기ㄷ 때문에.. [Javascript] - Date Date (날짜) - 자바스크립트의 Date 자바스크립트는 자바의 Date 클래스를 거의 그대로 가져다 써서 Date 객체를 만들었습니다. 때문에 클래스 프로그래밍의 최악의 디자인 패턴을 그대로 보여줍니다. 자바스크립트의 Date 객체는 상당히 많은 메서드들을 제공합니다. (대부분은 getter / setter 입니다) getDate getDay getFullYear getHours getMilliseconds ... 일부 메서드들을 살펴보면, getMonth 메서드는 월의 시작 값을 0 으로 만들어 0 ~ 11 사이의 값을 반환하지만, getDate 는 1 ~ 31 사이의 값을 반환합니다. 이런 일관성 없는 구현은 에러를 발생시킬 확률을 높입니다. getYear 와 setYear 메서드는 1999년 이.. [Javascript] - Asynchronous Programming Asynchronous Programming (비동기 프로그래밍) - 기존의 순차적 프로그래밍 처음에 있었던 순차적 프로그래밍은 한 번에 하나만 실행하는 방식은 계산이나 대규모 데이터 처리에 적합했습니다. 현대 프로그래밍 언어의 대부분은 순차적 프로그래밍에 그 뿌리를 두고 있습니다. - 순차적 언어는 입출력을 블록 방식으로 처리합니다 프로그램이 파일을 읽거나 네트워크에서 데이터를 가져오려 하면, 데이터를 다 가져올 때까지 프로그램은 실행을 멈춥니다. 하지만 자바스크립트는 탄생 목적이 사용자와의 상호 작용이었기 때문에 더 나은 모델을 따르고 있어 다른 언어보다 순차적 모델에 영향을 덜 받습니다. - 동시성 순차적 모델은 컴퓨터가 사용자와, 그리고 다른 컴퓨터와 상호 작용하면서 무너지기 시작했고, 동시에 여.. [Javascript] - Purity Purity (순수함) - 함수형 프로그래밍은 함수로 프로그래밍하는 것을 뜻합니다. 하지만 조금은 정의가 모호한게, 특정 도메인의 값을 다른 값과 연관짓는 수학적인 함수로 프로그래밍한다는 뜻일 수도 있고 대부분의 프로그래밍 언어가 의미하는 매개변수를 사용하는 소프트웨어 함수로 프로그래밍한다는 뜻일 수도 있습니다. - 순수 함수는 변경을 초래하지 않습니다. 순수 함수는 변경에 영향을 받지도 않습니다. 순수 함수의 결과 값은 오직 함수의 입력 값에 의해서만 결정됩니다. 결과를 만드는 것 외엔 다른 어떤 행동도 하지 않습니다. 동일한 입력을 주면 항상 동일한 출력을 냅니다. (반면 자바스크립트의 17개에 달하는 할당 연산자는 순수함과 거리가 멀어 보입니다) - 순수함의 몇 가지 중요한 가치 순수함은 아주 훌륭.. [Javascript] - this this - 자바스크립트의 프로토타입 모델 자바스크립트에선 객체가 생성되면 새로운 객체 콘텐츠의 일부 혹은 전체를 가지는 프로토타입이 지정됩니다. const newObject = Object.create(oldObject); 객체는 속성만 저장하며, 메서드는 객체에 저장된 함수에 불과하고 프로토타입은 객체일 뿐입니다. 객체가 가지고 있지 않은 속성의 값을 얻으려고 하면 그 값은 undefined 입니다. 하지만 객체가 위의 newObject 처럼 프로토타입을 갖고 있는 경우 결과 값은 프로토타입의 속성 값이 됩니다. 이렇게 체인 형식으로 프로토타입이 더 이상 없을 때까지 반복됩니다. - 프로토타입을 사용하는 가장 큰 이유 중 하나는 메서드를 저장하는 공간으로 쓰기 위함입니다. 비슷한 객체들이 전부 비슷한.. [Javascript] - Exception Exception (예외) - 호출한 함수는 개발자가 예상하지 못한 방식으로 문제를 일으킬 수 있습니다. 프로그램에서 문제가 발생했을 때 다루는 가장 보편적인 방법은 예외 처리입니다. 예상하지 못한 일이 발생하면, 현재 하고 있는 일을 전부 멈추고 예외 핸들러가 프로그램이 무엇을 해야 할지 알려 줄 것입니다. - 문제가 생기면 throw 문을 통해 신호가 발생됩니다. throw new Error('critical error'); throw 'critical error'; 위 예시처럼 자바스크립트는 throw 에 어떤 값이든 허용합니다. throw 로는 Error 생성자로 만들어진 값을 던지는 것이 일반적이지만 필수는 아닙니다. try { ... } catch (e) { ... } try 문 내에서 예외가.. 이전 1 2 3 4 5 다음