element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Code Exchange
  • Technologies
  • More
Code Exchange
Blog sensible C++ coding convention - µOS naming standard
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Code Exchange to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Jan Cumps
  • Date Created: 1 Sep 2024 6:35 PM Date Created
  • Views 733 views
  • Likes 4 likes
  • Comments 7 comments
  • c++23
  • teseo_c++
Related
Recommended

sensible C++ coding convention - µOS naming standard

Jan Cumps
Jan Cumps
1 Sep 2024

When writing reusable code, I like to be consistent and use standards. For C++, there are many flavours out there.

I've been looking around for guidance on writing modern C++ code, with templates. That's when I bumped into the µOS naming standards. µOS is a C++ RTOS, maintained by Liviu Ionescu. He 's been very active on this community for a long time, when this forum was used to support the Eclipse Embedded CDT plugin.

He managed to compile a reasonable naming convention set. Pragmatic, not pedantic.
A number of naming proposals try to cover all, or are detailed. I like a standard that handles the conceptual level. To my taste, the µOS standard has a good balance.
It's more brief than many other options out there, but I haven't found a miss. And I like how my code "sounds" when applying the principles.

When writing code, check it out. I've recently designed a C++ library, that (I hope) adheres to that standard. It helps me to stay consistent, and I hope it helps the user to understand my library's API.

that's all :)

Link to related posts.

  • Sign in to reply

Top Comments

  • DAB
    DAB 10 months ago +1
    Thanks Jan. Naming conventions are always a good way to start a fight among software engineers. While most people don't care, they just want to get the code done, you always run into a few fanatics…
  • battlecoder
    battlecoder 10 months ago +1
    Naming conventions are definitely a fighting ground for a lot of people. I personally think that any naming convention you want to follow is fine, as long as the code doesn't look like you put the ascii…
  • battlecoder
    battlecoder 10 months ago

    Naming conventions are definitely a fighting ground for a lot of people. I personally think that any naming convention you want to follow is fine, as long as the code doesn't look like you put the ascii table in a blender and dumped it into your C file with some ice.

    However, there's some extremist views out there, and I've seen coding style suggestions that are meant to "improve readability" in theory, but in practice they have the opposite effect.

    Now, the convention you linked sounds reasonable for the most of it. I'd disagree with a couple of their suggestions, but that's just me. Naming conventions (just like "space vs tab", or "opening braces in their own line vs next to the block opening statement"), are down to personal preference. None of what they suggest is madness, it's all pretty reasonable and has a high degree of consistency (which is the important part of standards), and that already puts their conventions above a lot of others I've seen out there.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps 10 months ago in reply to shabaz

    Yes. In the µOS lib (and ISO C++ libs) the private member would be named packet_counter_ , and the access methods would be packet_counter().

    Same principle, different flavour.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 10 months ago in reply to Jan Cumps

    Nice technique. I do the same, e.g. if it were mPacketCounter, then I'd use packetCounter() setter/getter.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps 10 months ago in reply to shabaz

    one of the appealing things is, that you don' have to use the getter/setter couple (example) int get_id() or void set_id(int). You are advised to write the shorter int id() and void id(int) 

    It also has style suggestions for template and enum. Constructs that have evolved since 1997.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 10 months ago

    Interesting stuff. I took a peek at the naming conventions you linked to, it makes sense, as well as the Industrial Strength C++ book. My C++ wasn't formally taught (I picked it up initially from an Aussie firm, and then did self-study with books - Stroustrup etc). I stuck with the conventions that firm used, which looks similarish to the Industrial Strength conventions it seems, e.g. capital on the class names, and using an 'm' for member variables, although back-to-front and lower-case, e.g. mPacketCount or whatever. Definitely good to stay consistent in a style.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube