Integer Data Type

Identifies obsolete 16-bit integer variables.

Reasoning

Modern processors are optimized for processing 32-bit integers; internally, a 16-bit integer is still stored as a 32-bit value. Unless code is interacting with APIs that require a 16-bit integer, a Long (32-bit integer) should be used instead.

Default severity

Hint

Inspection type

CodeQualityIssues

Examples

This example should trigger a result

MyModule (StandardModule)
Public Sub DoSomething() Dim rowCount As Integer rowCount = Sheet1.Rows.Count ' overflow: maximum 16-bit signed integer value is only 32,767 (2^15-1)! End Sub

This example should NOT trigger a result

MyModule (StandardModule)
Public Sub DoSomething() Dim rowCount As Long rowCount = Sheet1.Rows.Count ' all good: maximum 32-bit signed integer value is 2,147,483,647 (2^31-1)! End Sub

Rubberduck.CodeAnalysis.Inspections.Concrete.IntegerDataTypeInspection.cs (Prerelease-v2.5.9.6289)