일반적으로 가능한 한 가장 구체적인 데이터 형식을 사용해야합니다.
예를 들어, Entity Framework를 사용하여 데이터베이스에서 데이터를 가져 오는 경우 EF는 데이터베이스에서 사용 된 것과 가장 가까운 데이터 유형을 자동으로 사용합니다.
C #에는 두 가지 문제가 있습니다.
첫째, 대부분의 C # 개발자는을 사용해야 int
합니다 (이유가없는 한 long
). 이는 다른 개발자가 데이터 유형을 확인하지 않기 때문에 위에서 언급 한 오버플로 오류가 발생 함을 의미합니다. 두 번째, 그리고 더 중요한 문제이며, /이었다 .NET의 것을 원래의 산술 연산자가 지원되는 int
, uint
, long
, ulong
, float
, 더블, 그리고 decimal
*. 이것은 오늘날에도 여전히 적용됩니다 ( C # 5.0 언어 사양의 7.8.4 섹션 참조 ). 다음 코드를 사용하여 직접 테스트 할 수 있습니다.
byte a, b;
a = 1;
b = 2;
var c = a - b; //In visual studio, hover over "var" and the tip will indicate the data type, or you can get the value from cName below.
string cName = c.GetType().Namespace + '.' + c.GetType().Name;
우리의 결과는 byte
- byte
이다 int
( System.Int32
)을.
이 두 가지 문제는 "정수에 정수만 사용"연습을 일으켰습니다.
따라서 귀하의 질문에 대답하기 위해 C #에서는 일반적으로 다음 사항을 준수 int
하지 않는 것이 좋습니다 .
- 자동화 된 코드 생성기는 다른 값 (예 : Entity Framework)을 사용했습니다.
- 프로젝트의 다른 모든 개발자는 일반적이지 않은 데이터 형식을 사용하고 있음을 알고 있습니다 (데이터 형식을 사용했음을 나타내는 주석 포함 및 이유).
- 덜 일반적인 데이터 형식은 이미 프로젝트에서 일반적으로 사용됩니다.
- 이 프로그램은 덜 일반적인 데이터 형식의 이점을 필요로 (A의 차이 있도록, 당신은 RAM에 보관해야이 100 만 달러를 가지고
byte
하고 int
나 int
하고는 long
중요하다, 또는 부호의 산술 차이가 이미 언급).
데이터에 대해 수학을 수행해야하는 경우 공통 유형을 고수하십시오.
한 유형에서 다른 유형으로 캐스트 할 수 있습니다. CPU 관점에서는 효율성이 떨어질 수 있으므로 7 가지 일반적인 유형 중 하나를 사용하는 것이 더 나을 수도 있지만 필요한 경우 옵션입니다.
열거 형 ( enum
)은 위 가이드 라인에 대한 개인적 예외 중 하나입니다. 몇 가지 옵션 만 있으면 열거 형 을 바이트 또는 단락으로 지정합니다 . 플래그가 지정된 열거 형의 마지막 비트가 필요한 경우 uint
16 진수를 사용하여 플래그 값을 설정할 수 있도록 유형을 지정합니다 .
값 제한 코드가있는 속성을 사용하는 경우 요약 태그에 어떤 제한이 있으며 그 이유를 설명해야합니다.
* C # 별칭이므로 .NET 이름 대신 C # 별칭이 사용됩니다 System.Int32
.
참고 : .NET 개발자 (찾을 수없는)의 블로그 나 기사가 있었으므로 제한된 수의 산술 함수와 몇 가지 이유에 대해 걱정하지 않았습니다. 내가 기억하는 것처럼 그들은 다른 데이터 유형에 대한 지원을 추가 할 계획이 없다고 지적했다.
참고 : Java는 서명되지 않은 데이터 유형을 지원하지 않으며 이전에는 8 또는 16 비트 정수를 지원하지 않았습니다. 많은 C # 개발자가 Java 배경을 가지고 있거나 두 언어로 작업해야하므로 한 언어의 한계가 다른 언어에 인위적으로 적용되는 경우가 있습니다.