UNIX 风格的命名习惯

软件体系结构风格复习总结 1、软件体系结构风格概述 软件体系结构风格是人们从大量实际的软件案例中提炼出来可以服用的架构层面解决的方案。 2、数据流风格 2.1原理与结构 数据流风格基本构件:处理 连接件:数据流 2.2、数据流风格子风格1:管道-过滤器风格 构件:过滤器 连接件:管道 工作原理: 递增的读取和消费数据流,过滤器在处理数据的时候不是收集然后再处理,而是在输入被完全消费之前,输出就产生了。 特点: 高并发,实时性。 例子: 1、编译器: 2、Unix管道 2.3、数据流风格子风格2:批处理风格 基本构件:独立的应用 阅读详情

作者: 阙荣文 (querw) / querw@sina.com

     有一个标准的编程风格非常重要,真的非常重要,千万不要不以为然, 尤其是大团队合作. 同时,遵循统一的命名规则, 程序代码看起来也更漂亮,更容易读懂.

     主要有2种命名规则,一是Windows风格的匈牙利命名法. 我做了好几年的MFC开发. 我感觉匈法挺好的,不像一些人说的那样, 不可否认微软也出好东西. 匈法的优点在于类型,作用域一目了然, 也非常完善,规则覆盖了变量名,函数名,类名,类的数据成员等. 这对于公司内部学习和规范化是非常好的, 有现成的范本可以依照. 另一种就是所谓的 unix风格. 主要是一些经典C程序的惯用规则. 并没有一套非常明确的说法. 所以在网上搜匈法很容易,但是专门说unix风格的就很少, 我认为所谓"unix风格"都是一些被普遍接受的习惯 , 隐藏在大众的各个源代码中,并没有固定的,硬性的规则 (所以,前面我称之为习惯), 小子不自量力, 来尝试总结一下, 欢迎斧正和补充.

习惯1 - 变量名/函数名 以小写的单词用下划线连接 (又被形象的称为驼峰式命名). 比如 用户名  user_name , 总数  total_count. 单词选择首先要贴切,其次才考虑长短. 可以视情况采用缩写,但是不应过度缩写. 比如习惯上常用的 min, max 等都是非常好的缩写 (类似的还有 sum, num, str...) 总而言之,要做到望文知意, 否则宁愿用长一点的单词.

注1: 也有一种命名函数名的风格是 首字母小写,后面单词首字母大写,中间不用连接符, 比如 getMaxValue(). 类名单词首字母大写不用分隔符,如 class MyDateClass; 类的成员首单词首字母小写后面的单词首字母大写 如  int MyClass::myFunc(); 数据成员也是这样, 如 bool MyClass::writeOnly; <> 和 <>用的就是这个风格. JAVA的代码也偏向这个风格.

注2: 有些人喜欢用首字母大写的方式(不用下划线连接)命名全局的变量/函数. 如果 AddChild(), MaxValue 等.我个人不是很喜欢,这样看起来像匈法的风格,不要混用.

习惯2 - 类名首字母用大写,以区分函数名和变量名,单词间用下划线连接. 如 class Date; class Base_date; 标准库了类名都是小写的. 自定义的结构体也用小写.

关于这一点, 由于C的历史要长得多,大量的经典代码都是C写的, 所以在这些经典代码中看不到类命名的习惯写法. 不过神人Bjarne.Stroustrup 的 << The C++ Programming>> 里的代码绝大部分的类的首字母都大写, 鉴于C++之父的巨大影响力,相信其代码风格也会被广泛模仿.我特意对照了英文版和中文版,都一样,不要告诉我是排版错误.-) 不过,总的说来,和类相关的命名习惯比较混乱.

习惯3 - 用全部大写单词加下划线命名常量. 常量名前加下划线一般被编译器或者库函数使用. 自定义的常量前面不要加下划线. #define SIZE 10 / const int MAX_VALUE= 10; 等

习惯4 - i, j, k, m, n, x, y, z 等单字母变量普遍被用在索引,循环语句控制,数学函数等处. 不应滥用.

习惯5 - Linux函数命名一般采取 "前缀_名词_动词" 的方式, 前缀为模块缩写,用大写字母 IO_get_char(), 如. 普通函数则采用 "名词_动词" 的方式命名,小写字母, 比如获总数 get_total_count(). 如果是类的成员函数则采用 "动词" 的方式命名, 因为"名词"的含义已经隐藏在类名里了, 如 box.draw().

习惯6 - 采用通用的前缀和后缀命名变量能提高可读性.

_ptr Suffix for pointer
Examples:
int *entry_ptr; /* Pointer to current entry */
char *last_ptr; /* Pointer to last char in str */


_p Another suffix for pointer. This can be a little confusing to people who are not
familiar with it, so the suffix _ptr is preferred.
Examples:
event *next_p;/* Pointer to next event in queue */
char *word_p; /* Pointer to start of next word */


_file A variable of type FILE *, or a C++ I/O stream.
Examples:
FILE *in_file; /* Input data file */
FILE *database_file;/*Where we put the database */


_fd File descriptor (returned by the open function.)
Examples:
/* The dictionary file descriptor */
int dictionary_fd;
/* File where we put the memory dump */
int dump_fd;


n_ Number of. For example, if you store a set of events in the array events, the
n_events is the number of entries in the events array. Does this violate the rule
about putting the most important word first? Yes, but it's established usage.
Examples:
/* A list of events */
int events[EVENT_MAX];
/* Number of items in event array */
int n_events = 0;
/* A list of accounts */
struct account account;
/* Number of accounts seen so far */
int n_accounts = 0;

    以上总结的习惯主要来源上海贝尔的<<< C++编程规范 >> 和 Steve Oualline的<< C Elements of Style>>,应该说还是有一定权威性. 不过, 最好的方法是阅读权威的 unix/linux 源代码 , 看看大师们是怎么命名的, 比如 linux 的源代码就很容易找到 - << Linux 内核完全注释 >> 赵炯.

    以下说说我自己的看法,仅供参考:

补充1 - 对于全局函数/变量名可以采用前缀 g_ , 静态函数/成员可以采用前缀 s_ (匈法也有类似的建议,但我认为这不会破坏unix风格的一致性, 都是小写字母和下划线)

补充2 - 类的数据成员用 m_ 前缀 或者 针对非public的数据成员, 用_前缀 (一个下划线前缀), 对public的成员和函数名相同规则, 在定义类的成员函数时,方便区分<< C++ Primer >>用这种风格.

WorkBench3.2 + VxWorks6.8安装教程 按照FTP连接主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统 19.10.10 首先很高兴文章能帮到大家,但由于本人已不做该方向良久,私信和评论的很多问题现在已经无法解答,如果大家有什么问题欢迎... 阅读详情

相关推荐

OpenClaw 快速安装与本地应用实战 —— 每一步都有截图加详细说明,本地AI助手,让打工人也有下属

《OpenClaw 2026开源智能体框架10分钟快速部署指南》摘要:本文提供OpenClaw最新版全平台部署方案,重点解决三大核心问题:1)环境配置优化,通过一键脚本实现3-8分钟快速安装(含国内镜像加速方案);2)初始化配置详解,包含大模型绑定(智普AI/本地模型)与5个高频技能安装;3)实战演示文件自动整理任务。同时总结6类常见故障解决方案,涵盖权限、端口占用等典型问题,确保用户从安装到首个自动化任务落地全程无障碍。特别强调Windows需管理员权限、禁用中文路径等关键注意事项,实现"安装即

weixin_43538316的博客 808

C语言编程规范 — 标识符的命名规则

C语言编程规范—标识符的命名规则。

yunfan 8万+

PCB光绘文件DFM检查:从Gerber验证到制造闭环

Gerber文件是PCB设计交付制造的核心数据载体,其准确性直接决定硬件可制造性与量产良率。理解Gerber格式规范、IPC网表比对原理及DFM(Design for Manufacturability)自动检测逻辑,是电子工程师保障设计落地的关键能力。通过电气连通性验证、物理DRC规则扫描与工艺兼容性分析,DFM工具能提前识别开路、短路、孔环不足、阻焊异常等典型问题,避免投板后返工甚至批量报废。在国产化替代趋势下,华秋DFM等平台已深度适配Altium Designer工作流,支持一键导入、智能报告与协同

weixin_42620563的博客 507

代码命名风格参考

代码命名风格参考: 文件: unix风格,即小写加下划线,例如main.cpp、mgr_cfg.h 类: 大驼峰,并以C开头,例如CMgrCfg 结构体: 大驼峰,并以T开头,例如TMsg,结构体里面统一采用基本数据类型 公共成员函数: 大驼峰,例如Open,Close 内部成员函数: 小驼峰,例如open,openFile 变量: 匈牙利命名法,如果是成员变量则在前面添加m_,如果是全局变量则在前面添加g_ 例如:dwCount,m_dwCount,g_dwCou...

weixiao的博客 609

PCB设计AD规则设置(按照嘉立创设置)

按照嘉立创的相关加工能力进行设置: 1.Hole Size(钻孔孔径) 嘉立创要求钻孔孔径在0.2-6.3mm,并给了公差(如下图给出了钻孔孔径和公差) 规则设置位置:Manufacturing->Hole Size,这里就改一下数值,最小设置为0.2mm,最大设置为6.3mm 2.Width(线宽) 嘉立创要求线宽多层板双层板最小为3.5mil,单双层板最小为5mil(如下图给出了线宽) 规则设置位置:Routing->Width,我目前只画过双层板,按我的设置如下,最小的线宽设置为10

subtitle_的博客 4万+

雷电模拟器安装面具环境并过软件检测系列(看这一篇就够了!)

雷电模拟器安装面具环境并过基本软件的环境检测

qq_45059975的博客 6万+

【其他】命名风格之unix like风格,Windows风格,ST固件库风格,驼峰命名

前言   在代码命名上自古(其实没有这么长时间)以来众说纷纭,本人比较喜欢ST固件库中的命名风格,但是似乎ST固件库代码的命名风格不止一种,可以按函数或变量用途分为好几种,但是导图上书写的风格也就是面向用户函数的写法是笔者最喜欢的(毕竟我是个玩硬件的)。 ...

永远年轻 永远热泪盈眶 1463

STM32 RC522串口驱动程序 (简单直接)

rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" /////////////////////////////////

qq_42074368的博客 9001

嵌入式Linux C代码规范和风格

嵌入式Linux C代码规范和风格 本文档为作者在嵌入式和嵌入式 linux C 语言的学习和工作中所总结的代码规范,是作者从 STM32 单片机开发向 Linux C 开发的时候为了摆脱遗留的编码规范陋习而编写的。因此,本文档主要面向 Linux C,会根据实际情况兼容单片机的开发。文档主要以 Linux 源码下的 CodingStyle 文档为蓝本而编写,本文档主要是为了解决作者的实际需求,并不能照顾到所有的开发人员,因此编码规范可能不适 合某些程序员朋友。参考: 1 、Linux 源码下的《 《C

哒宰的博客 1173

让AI稳定生成流程图:基于Skill与Mermaid的工程化实践

流程图是软件工程中沟通业务逻辑的通用语言,但其绘制与维护却长期依赖手工工具,导致文档更新滞后、协作成本高。随着大语言模型技术的成熟,自然语言生成代码已成为可落地的技术路径,而Mermaid作为一款文本化图表语法,凭借其可版本管理、可自动渲染和可嵌入文档的优势,正逐步取代传统绘图工具。要让AI稳定输出合格的流程图,关键在于为模型定义一套清晰的Skill规则,约束输入结构、处理逻辑和输出格式。本文从流程图的工程痛点出发,介绍如何利用大模型将自然语言描述转化为结构化文本,再通过Mermaid CLI渲染成可视化图

weixin_42548782的博客 306

《QGIS快速入门与应用基础》161:面要素顶点编辑与形状调整

本文系统讲解了QGIS中面要素顶点编辑与形状调整的核心操作。首先明确了顶点编辑的适用场景与核心概念,强调需满足图层类型、编辑模式、要素选择等六大前提。详细介绍了编辑顶点工具(F2键)的激活路径及配套辅助工具,通过耕地地块修正案例,分步骤演示顶点移动、添加(双击/工具栏)、删除(Delete键)三大基础操作。同时提供捕捉工具开启、画布缩放等实用技巧,帮助用户高效完成面要素的精细化调整,解决实际工作中的形状偏差问题。全文图文结合,步骤清晰,适合GIS新手快速掌握面要素编辑的核心技能。

LuckyHanMo的博客 480

命名风格

参考链接:https://gitee.com/harmonyos/OpenArkCompiler/blob/master/doc/Programming_Specifications.md 通用命名 常见命名风格有: 驼峰风格(CamelCase) 大小写字母混用,单词连在一起,不同单词间通过单词首字母大写来分开。 按连接后的首字母是否大写,又分: 大驼峰(UperCamelCase)和小驼峰(l...

阿巍的笔记簿 1872

【第07例】IPD体系进阶: 6 个技术评审点(TR)

TR技术评审点

产品线负责人 4413

C/C++命名风格

存在C/C++中的四种命名风格: 帕斯卡(Pascal)命名法     首字母和后面连接的每个单词的首字母都大写。     例如: MyName 骆驼(Camel)命名法     将标识符的首字母小写,而每个后面连接的单词的首字母都大写。     例如:myName 匈牙利命名法      以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单

开发者说 6535

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《UNIX/Linux 系统管理技术手册(第四版)》——2.6 脚本编程的最佳实践

本节书摘来自异步社区《UNIX/Linux 系统管理技术手册(第四版)》一书中的第2章,第2.6节,作者:【美】Evi Nemeth , Garth Snyder , Trent R.Hein , Ben Whaley著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.6 脚本编程的最佳实践 UNIX/Linux 系统管理技术手册(第四版)虽然本...

weixin_34198583的博客 142

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

学习Unix和C语言

1、学习Unix和C语言,先向大家推荐一本书《Unix高级环境编程》,这本书是学习Unix和C的经典之作,尽量把书中提到的系统调用都写个练习程序,先感性的认识一下Linux系统提供给用户的系统调用都是干什么的,怎么用。 系统调用是内核提供给用户的功能用以申请内核服务,对于Linux内核的学习,从系统调用入手是个不错的办法。学习过程可以参看Linux的联机帮助,和网络上的资料。当你觉得差不多...

iteye_661的博客 160

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++命名规范(Google风格)文件命名、类型命名、变量命名、函数命名……

最近复习408数据结构,看书的时候发现函数命名各式各样,网上的也没有一个统一的说法,就自己去找了一个,仅此记录。 Google开源项目指南 命名约定 最重要的一致性规则是命名管理. 命名的风格能让我们在不需要去查找类型声明的条件下快速地了解某个名字代表的含义: 类型, 变量, 函数, 常量, 宏, 等等, 甚至. 我们大脑中的模式匹配引擎非常依赖这些命名规则. 命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重要, 所以无论你认为它们是否重要, 规则总归是规则. 1. 通用命名规则 总述 函数命名

qq_45135120的博客 2万+

编程语言命名规则及Python常用命名习惯

前言 现在有很多语言,但是在编程时有良好的命名习惯,代码易读,而且对代码调试和维护都有巨大好处。一般程序员不使用诸如ThisVariableIsATemporaryCounter这样“聪明”的名字。程序员常用tmp,这写起来更简单,也不会更难懂。 然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做foo是一种目光短浅的行为。全局函数也一样,如果你有一个统计当...

Mr番茄蛋的博客 3653

代码风格(1)——命名约定

一、命名约定 最重要的一致性规则是命名管理。命名的风格能让我们在不需要去查找类型声明的条件下快速地了解某个名字代表的含义:类型,变量,函数,常量,宏等等,甚至我们大脑中的模式匹配引擎非常依赖这些命名规则。 命名规则具有一定随意性,但相比按个人喜好命名,一致性更重要,所以无论你认为它们是否重要,规则总归是规则。 二、通用命名规则 2.1 总述 函数命名,变量命名,文件命名要有描述性;少用缩写。 ...

Leung的博客 2518

代码风格和编程习惯

whzeng@126.com1. 合理适当的注释    合理的恰当的注释是增加代码可读性一种好的方法,但是为了注释而注释实在是在浪费时间。2. 简洁高效的命名   命名规范一般有3类风格:匈牙利命名法、骆驼命名法和帕斯卡命名法2.1 匈牙利命名法   广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术

zengwh的专栏 2640

代码规范:unix_c命名风格和java命名风格

https://blog.youkuaiyun.com/querw/article/details/5467438 c语言系的命名风格:单词之间使用下划线分隔。如上图。 java语言是另外一个系,javascript属于java语系(当年就是想借助java的名气所以命名javascript)。java语系是驼峰式命名法,如getElementById()。如果使用c语系命名风格则使用下划线分隔 ...

creator123123的博客 421

C语言代码书写风格

相信经常coding的同学在项目中看别人的代码一定会像我一样的头痛,特别是有点强迫症的程序猿在看和自己风格差距较大的代码的时候内心甚至会出现烦躁和想去“改正”的念头。下面就为大家总结下一些常见的代码编程风格。一、符合语句的代码风格 1. K&R风格,Kernighan和Ritchie共同完成C语言‘白皮书’C Programing Language一书的时候使用的风格,由于此书被当时的C程序员誉为

枕上雪 1万+

函数和变量各种命名风格

标识符是指用来识别某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。C语言的标识符一般应遵循如下的命名规则:1、标识符必须以字母a~z、A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。2、标识符区分大小写字母。3、标识符的长度,c89规定31个字符以内,c99规定63个字符以内。

a只如初见的博客 1303

C语言编程规范实战:3种命名风格对比与5个常见错误案例解析

本文深入探讨C语言编程规范中的命名风格对比与常见错误案例,详细解析Unix_like风格、小驼峰和大驼峰风格的优劣及适用场景,并提供5个典型错误案例的修正方案。通过实战分析,帮助开发者提升代码可维护性和团队协作效率,特别适合C语言开发者和代码规范制定者参考。

weixin_33794672的博客 457

【LuckiBit】技术与互联网命名习惯全览:从 `foo` 到 `wtf`,你了解多少?

在软件开发、互联网产品、极客文化和数字命名中,有很多命名方式看似随意,实则约定俗成。这些术语短小精悍,寓意清晰,有的源于技术标准,有的来自黑客文化,也有的成为产品命名的灵感来源。

LuckiBit 1228

java用allman风格_C语言代码书写风格

相信经常coding的同学在项目中看别人的代码一定会像我一样的头痛,特别是有点强迫症的程序猿在看和自己风格差距较大的代码的时候内心甚至会出现烦躁和想去“改正”的念头。下面就为大家总结下一些常见的代码编程风格。一、复合语句的对齐和缩进风格(1). K&R风格,Kernighan和Ritchie共同完成C语言”白皮书”C Programing Language一书的时候使用的风格。由于此书被当...

weixin_32349223的博客 423
上一篇: 用状态机实现XML解析器 - C++环境
下一篇: 获取外网IP并发送邮件通知
querw
博客等级 码龄22年 164粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值