////
Search
Duplicate

12. 기본 데이터형

이 장은 기본 데이터형, 원시 데이터형을 사용할 때 발생할 가능성이 있는 기초적인 문제들의 해결 방법을 서술한다.

1. 숫자 일반

매직 넘버를 피한다.
필요하다면 0과 1은 그냥 사용한다.
0으로 나눔 오류를 미리 방지한다.
형 변환을 명시적으로 처리한다.
서로 다른 형을 비교하지 않는다.

2. 정수

정수 나눗셈을 검사한다.
정수 오버플로우를 염두에 둔다.
중간 결과에서의 오버플로우를 검사한다.

3. 부동 소수점 수

부동 소수점 수를 사용해야 할때, 많은 분수 값이 이진수로 표현될 수 없다는 한계를 이해해야 한다.
서로 크기가 매우 다른 수를 더하거나 빼지 않는다.
동치 비교를 권장한다.
라운딩 오류를 예측한다.
특정한 데이터형을 지원하는 언어와 라이브러리가 있는지 확인한다.

4. 문자와 문자열

매직 문자와 문자열을 사용하지 않는다.
자신이 사용하고 있는 언어와 환경에서 유니코드를 어떻게 사용하고 이?ㅆ는지 알아둔다.
국제화/지역화 전략을 초기에 결정한다.
다중 언어를 지원해야 한다면 유니코드를 사용한다.
문자열 형 사이에 일관된 변환 전략을 사용한다.
다중 문자열 형을 사용하는 경우, 문자열 형을 구분하기 위한 한 가지 일반적인 방법은 프로그램 내의 모든 문자열을 단일 형식으로 유지하고 입, 출력 연산에서 다른 형식으로 변환하는 것이다.

5. 불린

프로그램을 문서화하기 위해서 불린 변수를 사용한다.
불린 표현식을 사용하는 것보다 변수명으로 어떤 검사를 수행하는지 의미를 부여한다면 더 이해하기 쉽다.
복잡한 테스트를 단순화하기 위해 불린 변수를 사용한다.
필요하다면 사용자 정의 불린 형을 만든다.

6. 열거형

가독성 향상을 위해 열거형을 사용하라.
안정성을 위해 열거형을 사용하라.
변경하기 쉽게 열거형을 사용하라.
불린 변수에 대한 대안으로 열거형을 사용하라.
반복문의 범위를 지정하기 위하여 열거의 처음과 마지막 항목을 정의하라.
열거형의 첫 항목을 유효하지 않은 값으로 남겨라.
열거형의 요소에 명시적인 값을 할당할 때 발생할 수 있는 위험 요소를 고려하라.

7. 이름 상수

배열의 크기 등 데이터 선언에 이름 상수를 사용하라.
범위가 적절하게 지정된 변수나 클래스를 사용하여 이름 상수를 흉내내라.
이름 상수를 일관성있게 사용하라.

8. 배열

배열의 모든 인덱스가 배열의 경계 내에 존재할 것인지 확인하라.
배열 대신 래핑 객체 사용을 고려하거나 배열을 순차적인 구조체로 생각하라.
배열의 마지막 위치를 확인하라.
다차원 배열에서는 인덱스가 순서대로 잘 사용되는지 확인하라.
인덱스가 혼선되지 않도록 주의하라.

9. 새로운 타입

새로운 형을 만들기 위한 지침
기능 지향적인 이름으로 타입을 생성하라.
미리 정의된 타입을 가리키는 타입 이름을 조심하라.
미리 정의된 타입을 피하라.
미리 정의된 타입을 재정의하지 마라.
다른 플랫폼으로 이식하기 쉽게 대체 타입을 정의하라.
미리 정의된 타입으로 쉽게 오인할 수 있는 타입은 선언하지 마라.

요점 정리

특정한 타입을 다룬다는 것은 각 타입에 대해 많은 개별적인 규칙을 기억해야한다는 것을 의미한다.
체크리스트를 확인하고 일반적인 문제점들을 고려하자.
사용하는 언어가 지원한다면 사용자 정의 타입을 생성하여 프로그램을 변경하기 쉽고 더 많은 것을 스스로 문서화하게 만들 수 있다.
typedef나 이와 비슷한 기능을 사용하여 간단한 형을 생성할 때 새로운 클래스를 생성할 필요가 있는지 검토하라.