fat struct style guide?

matheus matheus at gmail.com
Tue Feb 24 15:49:50 UTC 2026


On Tuesday, 24 February 2026 at 15:30:39 UTC, H. S. Teoh wrote:
> On Tue, Feb 24, 2026 at 03:48:46AM +0000, monkyyy via 
> Digitalmars-d-learn wrote:
>> Im going to try doing something with fat structs, what sort of 
>> syntax and api niceitys would big fat-struct advocates say are 
>> nessery?
>
> What's a "fat struct"?
>
>
> T

In programming, the term "fat struct" (or "fatty struct") refers 
to a data structure design philosophy, notably advocated by 
programmer Casey Muratori, that prioritizes data locality, 
performance, and predictability over object-oriented design 
principles like deep inheritance hierarchies. [1, 2]

Core Principles

The fat struct approach represents a fundamental difference in 
how software development priorities are ordered, focusing on 
efficiency over abstract ideals.

• Packs Related Data: It involves grouping all related data into 
a single, contiguous block of memory within one structure, rather 
than spreading it across multiple objects that require pointers 
and indirection to access.
• Prioritizes Cache Efficiency: By keeping frequently accessed 
data physically close in memory, this design makes better use of 
modern CPU caches, leading to significant performance 
improvements.
• Avoids Unnecessary Abstraction: It eschews complex 
object-oriented programming (OOP) patterns, preferring simple 
control flow and a design that more directly reflects what the 
computer hardware is actually doing.
• Uses Unions Judiciously: While the primary goal is a single 
structure, unions might be used to save space if some fields are 
mutually exclusive, though this can make debugging more complex. 
[2, 3]

Comparison to OOP

The fat struct approach is often contrasted with the traditional 
OOP paradigm where specialized classes inherit properties and 
methods from a base class.

• Inheritance vs. Type Property: Instead of creating multiple 
specialized classes (e.g.,  and  inheriting from ), a single 
"fat"  struct would contain all possible properties (like  and ) 
and use an explicit  field to determine which behaviors and data 
are relevant.
• Performance Trade-off: The OOP approach is often seen as more 
maintainable and easier to extend, while the fat struct approach 
trades some of that perceived maintainability for raw performance.
• Data-Oriented Design: The philosophy is a key component of 
data-oriented design (DOD), where the focus is on how data is 
laid out in memory and accessed, rather than modeling real-world 
entities with class hierarchies. [1, 2, 4, 5]

Practical Implementation Tips

If you are interested in applying these principles, advocates 
suggest a pragmatic approach:

1. Start with Data Access Patterns: Design your structures around 
how your code actually uses the data, not in an abstract ideal.
2. Measure Performance: The benefits of this approach should be 
measurable; benchmark before and after implementation to ensure 
the trade-off is worthwhile.
3. Document Layout Decisions: Clearly document the rationale 
behind your memory layouts for future maintainers. [6, 7]

[1] https://orangegnome.com/posts/3633/team-fat-posts
[2] https://levelup.gitconnected.com/fatty-structs-casey-muratoris-approach-to-data-structure-design-ad4753caaf6b
[3] https://www.computerenhance.com/p/q-and-a-80-2025-10-31
[4] https://www.yegor256.com/2020/02/19/fat-skinny-design.html
[5] https://www.reddit.com/r/roguelikedev/comments/1bv4k7p/any_tutorial_about_dataoriented_programming_for/
[6] https://levelup.gitconnected.com/fatty-structs-casey-muratoris-approach-to-data-structure-design-ad4753caaf6b
[7] https://levelup.gitconnected.com/fatty-structs-casey-muratoris-approach-to-data-structure-design-ad4753caaf6b

All the content above was generated by AI, I'm just annexing to 
the post to future readers.

Matheus.


More information about the Digitalmars-d-learn mailing list