Paste any identifier, pick the source format, and get a proper Ada‑case result in one click.
Ada case is a naming convention that originated in the Ada programming community. It uses underscores (_) to separate words and applies capitalization rules to distinguish identifier types. Unlike camel case, Ada case makes word boundaries crystal clear, which greatly improves readability—especially for longer names.
Ada itself doesn't enforce a strict naming standard, but over decades the community has refined a set of practical guidelines. These guidelines have since been adopted in many other languages and projects. Developers often choose Ada case because it balances compactness with outstanding clarity.
The rules for Ada case are straightforward and easy to remember. Here’s the breakdown:
In Ada case, every word boundary is marked by an underscore. This applies to all kinds of identifiers—types, variables, functions, constants, packages, you name it. For example: Employee_Record, calculate_tax, MAX_BUFFER_SIZE. The underscore acts like a visual spacer, making multi‑word names effortless to parse.
Ada case uses letter case to signal what kind of identifier you're dealing with:
User_Account, Order_Item.user_age, order_total.MAX_RETRY_COUNT, DEFAULT_PORT.get_employee_data, validate_input.Database_Connector, File_System_Utils.These case conventions let you glance at an identifier and immediately know its role—a huge help for code maintainability.
Ada case restricts identifiers to letters, digits, and underscores—no leading or trailing underscore allowed. Digits are permitted but rarely placed at the start. Consecutive underscores (like User__Profile) are discouraged because they hurt readability and can cause confusion.
Ada case is a great fit for projects where clarity and consistency matter most.
Because Ada itself is used in aviation, aerospace, and railway systems, its naming style carries that same rigorous mindset. Many C++, Python, and Java projects adopt Ada case when they need to interface with Ada code or simply want a uniform, disciplined style across the board.
In databases, Ada case works beautifully for table names, columns, and stored procedures. For instance, User_Accounts for a table and account_balance for a field. Since many databases are case‑insensitive, the underscores in Ada case prevent ambiguity that would otherwise arise from lost capitalisation.
When your codebase spans multiple languages, Ada case can act as a universal naming standard. It reduces the mental overhead of switching between different styles—everyone on the team reads and writes identifiers the same way, regardless of the language they're currently working in.
Understanding how Ada case differs from its cousins helps you pick the right tool for the job.
Camel case (both lower and upper) uses capital letters to mark word boundaries, without separators. Ada case takes a different approach—underscores are explicit delimiters. For long names like get_current_user_session_token, Ada case is noticeably easier to read than getCurrentUserSessionToken, because each word stands alone rather than blending into a long string of capitals.
Snake case also uses underscores but is typically all lowercase (user_profile). Ada case builds on that by adding capitalisation rules that encode type information. So you get the same visual clarity, plus extra semantic cues—a more refined system.
Macro style (USER_PROFILE) is all‑caps with underscores, commonly used for C/C++ macros and constants. Ada case uses that same form for constants, but distinguishes variables, functions, and types with different capitalisation. This makes Ada case far more versatile—it covers the full spectrum of identifiers, not just a single category.
Every naming scheme has trade‑offs. Here's a balanced look at Ada case.
Api_Key), but teams sometimes prefer all‑caps (API_KEY). You'll need a consistent team rule.To get the most out of Ada case in your projects, keep these guidelines in mind:
employee_salary over vague abbreviations like emp_sal.User_Id vs. User_ID) and stick to it.| Style | Example | Key Feature |
|---|---|---|
| Ada Case | User_Profile |
Underscores + mixed case for type hints |
| camelCase | userProfile |
No separators, first word lowercased |
| PascalCase | UserProfile |
No separators, every word capitalised |
| snake_case | user_profile |
Underscores, all lowercase |
| kebab‑case | user-profile |
Hyphens, all lowercase |
| MACRO_STYLE | USER_PROFILE |
Underscores, all uppercase |
Ada case traces its roots to the 1980s, when the U.S. Department of Defense commissioned a new language for embedded systems—Ada. One of its core goals was to improve software maintainability and reliability, and the naming conventions naturally reflected that ambition. Over time, the Ada community built a rich set of naming practices, which later became known collectively as Ada case.
As Ada gained traction in safety‑critical domains, the clarity and rigour of Ada case earned respect far beyond its original language. Today, many other projects and languages borrow from this style, making it a truly cross‑cutting naming standard.
Ada case is a mature, disciplined naming convention that combines clear underscores with thoughtful capitalisation rules. It gives developers a high‑quality framework for naming identifiers, whether you're writing Ada, working in a mixed‑language environment, or designing database schemas.
It may not be the most trendy choice everywhere, but its practical benefits and rigorous nature have earned it a loyal following. If you value long‑term code maintainability and team consistency, Ada case is definitely worth a serious look. Give it a try—you might be surprised how much it helps.