A primitive data type is the basic data type that a language offers.
A primitive type is a type without any substructure. It is then data:
- that is not an class/object
- and has built-in operation (no object methods)
Most of the time:
- a primitive value is represented directly at the lowest level of the language implementation.
- primitives are immutable (cannot be changed).
They are also scalar.
Most primitive data type fall under one of this category:
- Character String Types: character
- Numeric types: numeric
- Date-Time Types: date
- Binary Types: Byte (Bit Octet) - Computer storage Unit (8bit)
- Spatial Types: Spatial - Geo (Map|Chart) - Topology
Primitive obsession is the overuse of primitive types to represent higher-level concepts.
Example with a bounding box represented with:
vector<pair<int, int>> polygon = ... pair<pair<int, int>, pair<int, int>> bounding_box = GetBoundingBox(polygon); int area = (bounding_box.second.first - bounding_box.first.first) * (bounding_box.second.second - bounding_box.first.seco
Polygon polygon = ... int area = polygon.GetBoundingBox().GetArea();