@@ -262,3 +262,60 @@ Example:
262
262
263
263
264
264
265
+ Avoid Unnecessary Complexity
266
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
267
+
268
+ - Prefer easier-to-read language features and idioms.
269
+ - Avoid overusing advanced C++ features (e.g., template metaprogramming, operator overloading, SFINAE) unless they are essential.
270
+ - Write for clarity first; optimize for performance or conciseness only if needed and after measuring.
271
+
272
+ .. code-block :: cpp
273
+
274
+ // Prefer this
275
+ std::vector<int> get_ids() const;
276
+
277
+ // Avoid this unless you truly need it
278
+ template<typename T>
279
+ auto&& get_ids() const && noexcept;
280
+
281
+
282
+ - **Write short functions. ** Functions should do one thing. Short functions are easier to understand, test, and reuse,
283
+ and their purpose can be clearly described in a concise comment or documentation block.
284
+ - **Limit function length. ** If a function is growing too long or is difficult to describe in a sentence or two,
285
+ consider splitting it into smaller helper functions.
286
+ - **Favor simplicity. ** Avoid clever or unnecessarily complex constructs. Code should be easy to read and maintain by others,
287
+ not just the original author.
288
+ - Before adding new functions, classes, or utilities, check the codebase and documentation to see if a similar utility already exists.
289
+ - Reuse or extend existing routines instead of duplicating functionality. This reduces bugs and makes the codebase more maintainable.
290
+
291
+
292
+ Group Related Data
293
+ ~~~~~~~~~~~~~~~~~~
294
+
295
+ - Group related data members into `structs ` or `classes ` rather than passing multiple related parameters separately.
296
+ - Each data member and member function should be commented to explain its role, even in simple data structures.
297
+
298
+ .. code-block :: cpp
299
+
300
+ /**
301
+ * @brief Data about a routing node.
302
+ */
303
+ struct t_node_info {
304
+ int id; ///< Unique identifier.
305
+ float cost; ///< Routing cost.
306
+ bool expanded; ///< True if this node has been expanded.
307
+ };
308
+
309
+ // Instead of:
310
+ void process_node(int node_id, float cost, bool expanded);
311
+
312
+ // Prefer:
313
+ void process_node(const t_node_info& info);
314
+
315
+ .. note ::
316
+
317
+ Organizing related data and routines in structs or classes with clear comments makes code easier to extend and understand.
318
+ It also helps avoid errors from mismatched or misused arguments.
319
+
320
+
321
+
0 commit comments