个人对代码注释 & 文档的书写习惯

为了养成良好的代码书写规范,笔者决定以后都按照一种常用的代码注释风格。

Part.Zero General

在这里插入图片描述

Chap.I 命名规则

不管之前如何,我希望以后的命名规则是这样的。

ItemRuleExampleNote
全局变量g_xxg_count很少用全局变量
局部变量xxxxsatnum直接连这写,单词尽量全拼
类内私有变量_xx_xx_sat_nums下划线命名,统一用小写
类内公有变量xx_xxsat_num没有最前面的下划线,统一用小写
类名t_xclass_namet_gslip_detectt代表typex代表类的归属或大致用途,后面是类的名字,不同单词间用下划线_分割
类私有函数_xxXxx_slipDetect前下划线后驼峰
类共有函数xxXxxprocessBatch驼峰
define常量XXPI全大写
文件名xxx_xxxcycle_slip.h全小写,可以用下划线_

注:文件命名尽量不要用大写!

Part.I Python

一些通用笔记

# 代码区域折叠
#region
	Your Code
#endregion

Sec.I 文件头

文件头一般包含文件的创作者、功能、历史版本等信息,希望自己以后可以按照如下简洁的风格书写 Python 文件头

# ------------------------------------------------------------------
# FileName:         pyxxx.py
# Author:           hlgou
# Version:          V 1.0
# Created:          2020-12-15
# Description:      the main function of the file
# History:
#          2021-09-20   hlgou       :Create the file
#          20xx-xx-xx   xxxxxxxx    :Do some modified
# ------------------------------------------------------------------

Sec.II 函数说明

功能简单的函数,只需在函数前加一行注释,说明函数的功能。

def append2Data(time,pos1):
	""" Util: append Time and xyz in Data """

功能复杂的函数,需要说明函数的功能、传入传出参数的含义

def append2Data(time,pos1):
	"""
	This is the description of the function.
	 
	> @param[in] param1:        this is the first param
	> @param[in] param2:        this is the second param
	return: 
	< @param[out] outParam1:    this is the first out param
	< @param[out] outParam2:    this is the second out param
	"""

关于注释的位置,本来我习惯是放在函数体外部,这样不用展开函数就可以大致了解函数的功效,但是python的代码自动对齐工具会把注释与函数体分离,所以不得不将注释放在函数体内部。

Sec.III 日志输出

python 自带日志管理模块Logging,当然也可以用其他高级的日志模块loguru

Python之日志处理(logging模块)https://www.cnblogs.com/yyds/p/6901864.html
Logging 的升级版 loguru,支持彩色输出,支持输出到多个文件,分级别分别输出,过大创建新文件,过久自动删除等等。
https://blog.csdn.net/cui_yonghua/article/details/107498535

下面是我个人常用的配置

logging.basicConfig(filename='my.log',level=logging.INFO, 
format='%(asctime)s [%(levelname).1s] <%(filename)-s :%(lineno)-s> : %(message)s',
filemode="w",
)

这是一个使用实例

import logging
# 对 log 的基本配置,设置输出文件、输出日志等级、输出格式等
import logging
logging.basicConfig(filename='my.log',level=logging.INFO, 
format='%(asctime)s [%(levelname).1s] <%(filename)-s :%(lineno)-s> : %(message)s',
filemode="w",
)

import logging

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

等级顺序:DEBUG < INFO < WARNING < ERROR < CRITICAL
DEBUG 最详细,CRITICAL 最简略。

Part.II Matlab

matlab 的注释符号

Sec.I 文件头

% ------------------------------------------------------------------
% FileName:         matlab.m
% Author:           hlgou
% Version:          V 1.0
% Created:          2020-12-15
% Description:      the main function of the file
% History:
%          2021-09-20   hlgou       :Create the file
%          20xx-xx-xx   xxxxxxxx    :Do some modified
% ------------------------------------------------------------------

Sec.II 函数说明

功能简单的函数

% Determine if a year is a leap year
function whe = leapyear(year)

功能复杂的函数

% This is the description of the function.
%
% > @param[in] param1:      this is the first param
% > @param[in] param2:      this is the second param
% return: 
% < @param[out] outParam1:  this is the first out param
% < @param[out] outParam2:  this is the second out param
function whe = leapyear(year)

Part.III C++

传送门:C++ 代码书写习惯

Part.IV Fortran

Sec.I 文件头

!* ------------------------------------------------------------------
!* FileName:        fxxx.f
!* Author:          hlgou
!* Version:         V 1.0
!* Created:         2020-12-15
!* Description:     the main function of the file
!* History:
!*          2021-09-20      hlgou       :Create the file
!*          20xx-xx-xx      xxxxxxxx    :Do some modified
!* ------------------------------------------------------------------

Sec.II 函数说明

!* This is the description of the function.
!*
!> @param[in] param1:        this is the first param
!> @param[in] param2:        this is the second param
!return: 
!< @param[out] outParam1:    this is the first out param
!< @param[out] outParam2:    this is the second out param
!* END NOTE

Part.X Document

关于 Markdown 文档或其他文档的目录,一般可以按照下面的方式进行取名

@[TOC]

# Part.I Introduction

# Part.II Main_body
## Chap.I xx

# Reference

# Part.I Outline
# Part.I Introduction
## Chap.I xx
### Sec.I xxx
#### S1.
##### a.
##### b.
# Part.BEG Introduction
# Part.END Conclusions
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在编C++代码时,注释文档的自动生成是一项非常有用的功能。可以通过使用特定的代码注释规范,如Doxygen或者JavaDoc,来生成注释文档。 Doxygen是一种流行的自动化文档生成工具,它可以根据代码中的特定注释格式来生成文档。在C++代码中,我们可以使用特定的注释语法来描述函数、类、变量等的用途、参数、返回值、示例等信息。例如,我们可以使用以下注释格式来描述一个函数: /** * @brief 该函数用于计算两个整数的和。 * * @param a 第一个整数 * @param b 第二个整数 * @return 两个整数的和 */ int sum(int a, int b) { return a + b; } 几乎所有的主要编程IDE(如Visual Studio、Eclipse等)都支持Doxygen注释的自动完成和文档预览。使用自动完成功能,我们可以快速生成函数、类、变量等的注释模板,并根据实际情况进行修改。当完成代码后,我们可以使用Doxygen生成注释文档。只需简单地运行Doxygen,并指定代码文件所在的目录,Doxygen将会扫描代码文件,并根据注释生成相应的HTML、PDF或其他格式的文档。 使用自动化注释文档生成的好处是,我们可以将注释代码保持同步,并且文档的更新和维护变得更加容易。此外,还可以通过生成的文档提供给其他开发人员或用户查阅,使得代码更易于理解和使用。 总之,通过使用Doxygen等自动化文档生成工具,我们可以方便地生成C++代码注释文档,提高代码可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪猪头拯救地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值