Skip to main content

Our Naming Conventions

This is the quick-reference guide for Fly4Future software development. When in doubt, follow the tables below.


💻 C++ Development​

CategoryConventionExamples
Files.h .cpp .tppuav_controller.h math_utils.tpp
Classes & StructsPascalCasePathPlanner StateEstimator
Functions & MethodscamelCasecomputeTrajectory() initialize()
Variablessnake_casecurrent_height iter_count
Member Variablessnake_case_target_pose_ battery_level_
Mutexesmutex_snake_case_mutex_pose_ mutex_buffer_
Constants & DefinesSCREAMING_SNAKE_CASEMAX_ALTITUDE PI_CONSTANT

🤖 ROS & MRS Framework​

CategoryConventionExamples
Topics & Servicessnake_caselaser_scan get_uav_state
Msg & Srv FilesPascalCaseUavStatus.msg SetGoal.srv
Message Fieldssnake_caserange_min header_stamp
ROS Parameters_snake_case__mass_ _timer_rate_
Subscriberssub_sub_pose_ sub_odometry_
Publisherspub_pub_cmd_vel_ pub_status_
Service Serversserver_service_land_ service_reset_
Service Clientsclient_client_takeoff_ clinet_get_map_
Subscriber Handlerssh_sh_pose_ sh_odometry_
Publisher Handlersph_ph_cmd_vel_ ph_status_
Srv Server Handlersss_ss_land_ ss_reset_
Srv Clients Handlerssc_sc_takeoff_ sc_get_map_
Timerstimer_timer_main_loop_ timer_watchdog_
Callback Groupscbkgrp_cbkgrp_sensors_ cbkgrp_timers_

🔄 Remapping & Direction​

We use suffixes to clarify the direction of data flow in launch files and code.

LogicSuffixContextExamples
Input_inSubscribers & Serverstopic_in service_in
Output_outPublishers & Clientstopic_out service_out

💡 The Golden Rules​

  • English Only: No native language in code or comments.
  • Be Descriptive: is_timer_active beats flag, don't overdo it.
  • Use Infinitives: initialize() rather than initializer().
  • Use Past or Continuous: If appropriate, use is_initialized or startInitializing().