본문 바로가기
2장. 개발기법 (#2) 이전 내용과 이어지는 글 입니다. 1장 크로스 플랫폼으로 개발하라. C++ 언어가 어려운 이유, 개발자에게 여러 운영체제 자원들(CPU, 메모리, 디스크)을 자유롭게 이용할 수 있는 C언어를 탑재하고 있기 때문이다. C언어는 어셈블리를 내장한 극단적인 최적화도 가능 time-for-us-to-shine.tistory.com 모듈 트리 "규모가 큰 모듈의 종속성 문제" 크로스 플랫폼 핵심 모듈을 개발하다 보면 생각보다 코드의 규모가 커지는 것을 알 수 있다. 그 이유는 일반적인 경우에는 구현하지 않는 기저 함수들 부터 각 플랫폼에 맞는 함수들까지 모두 개발되어야 하기 때문이다. 이렇게 되면 각 파일들의 종속 관계도 복잡해지는 일이 빈번하게 발생한다. 이런 코드들은 기존 코드를 수정, 삭제 해야할 일이 있을.. 2023. 6. 17.
2장. 개발기법 (#1) 코드는 개발의 산물이다. 양질의 코드를 생산하기 위해 여러 가지 개발 기법을 아는 것이 중요한 이유이다. 개발기법은 컴파일러나 링커 같은 외부 툴을 이용하는 경우도 있고, 모듈 설계나 표준 헤더 및 대표 헤더를 이용한 코드 작성 요령에 따른 것도 있다. 또한 이 코드의 동작 여부를 판단하기 위한 테스트 기법도 이에 포함된다. 설계를 위한 코딩을 하라. 명확하지 않은 주요 지점을 미리 프로토타이핑 하면서 구조를 좀 더 명확하게 가다듬어 가면서 코딩을 해야 한다. 처음 부터 완벽한 설계 후에 코딩을 시작할 수 없기 때문이다. 대부분의 개발은 그 상황에 맞는 특화된 방법을 찾아나가는 과정이기에 코딩과 설계를 반복하는 경험들을 많이 쌓아나가야 한다. 코드는 작성하는 것도 어렵지만 제대로 동작하는지 확인하는 것은.. 2023. 6. 16.
1장 크로스 플랫폼으로 개발하라. C++ 언어가 어려운 이유, 개발자에게 여러 운영체제 자원들(CPU, 메모리, 디스크)을 자유롭게 이용할 수 있는 C언어를 탑재하고 있기 때문이다. C언어는 어셈블리를 내장한 극단적인 최적화도 가능하며 커널 레벨의 함수도 사용할 수 있다. 그 이유는 운영체제의 코드 또한 C언어로 작성되어 있기 때문이다. C언어로 개발된 모듈은 라이브러리화되어 자바, C#, 스크립트 언어들과 결합할 수 있으며 플랫폼 간 호환성도 좋다. C언어의 생산성을 보완하고 기존의 막강한 기능을 지원하기 위해 개발된 언어가 C++ 이므로, C++은 C언어의 장점ㅇ를 가진 채 생산성을 확보하기 위한 많은 기능을 탑재한 언어가 되었다. 기능이 많아졌다 = 많은 것을 알아야 한다. -> 어렵다. C++ : C언어 * [예약어 문법] * [.. 2023. 6. 13.
2부 코드설계 > 5장 객체 생성 2부 코드설계 > 5장 객체 생성 > 생성자 대신 팩토리 함수를 사용하라. 2부 코드설계 > 5장 객체 생성 > 기본 생성자에 이름 있는 옵션 아규먼트를 사용하라. 2부 코드설계 > 5장 객체 생성 > 복잡한 객체를 생성하기 위한 DSL을 정의하라. 오늘의 TIL 3줄 요약 팩토리 함수에 대하여 named argument에 대하여 DSL에 대하여 1. 책에서 기억하고 싶은 내용 코틀린으로 더 좋은 코드를 작성하기 위한 내용. 팩토리 함수 클라이언트가 클래스의 인스턴스를 만들게 하는 가장 일반적인 방법은 기본 생성자(primary constructor)를 사용하는 것이다. 하지만 생성자가 객체를 만들 수 있는 유일한 방법은 아니며, 디자인 패턴으로 다양한 생성 패턴(creational pattern)들이 .. 2022. 9. 27.
2부 코드설계 > 4장 추상화 설계 2부 코드설계 > 4장 추상화 설계 > 함수 내부의 추상화 레벨을 통일하라. 2부 코드설계 > 4장 추상화 설계 > 변화로부터 코드를 보호하려면 추상화를 사용하라. 2부 코드설계 > 4장 추상화 설계 > API 안정성을 확인하라. 2부 코드설계 > 4장 추상화 설계 > 외부 API를 랩(wrap)해서 사용하라. 2부 코드설계 > 4장 추상화 설계 > 요소의 가시성을 최소화하라. 2부 코드설계 > 4장 추상화 설계 > 문서로 규약을 정의하라. 2부 코드설계 > 4장 추상화 설계 > 추상화 규약을 지켜라. 1. 책에서 기억하고 싶은 내용 추상화 : 컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 조금 간단하게 표현하.. 2022. 9. 27.
2부 코드설계 > 6장 클래스 설계 > equals, hashCode, compareTo / 확장함수 2부 코드설계 > 6장 클래스 설계 > equals의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > hashCode의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > compareTo의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > API의 필수적이지 않는 부분을 확장 함수로 추출하라. 2부 코드설계 > 6장 클래스 설계 > 멤버 확장 함수의 사용을 피하라. 오늘의 TIL 3줄 요약 equals, hashCode, compareTo 메서드의 기본 사용법 확장 함수를 사용하는 방법과 활용하는 방법 1. 책에서 기억하고 싶은 내용 equals 구조적 동등성 (structural equality) : ==, != 으로 확인하는 동등성. 레퍼런스적 동등성 (referential equa.. 2022. 9. 27.
728x90
반응형