惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
IT之家
IT之家
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
雷峰网
雷峰网
T
Tailwind CSS Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
The Blog of Author Tim Ferriss
S
Schneier on Security
C
CERT Recently Published Vulnerability Notes
Help Net Security
Help Net Security
云风的 BLOG
云风的 BLOG
GbyAI
GbyAI
I
InfoQ
H
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
G
GRAHAM CLULEY
Blog — PlanetScale
Blog — PlanetScale
G
Google Developers Blog
I
Intezer
大猫的无限游戏
大猫的无限游戏
AWS News Blog
AWS News Blog
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
博客园_首页
宝玉的分享
宝玉的分享
量子位
T
Threatpost
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Security Latest
Security Latest
C
Cybersecurity and Infrastructure Security Agency CISA
SecWiki News
SecWiki News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
The Exploit Database - CXSecurity.com
T
Tenable Blog
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
The Register - Security
The Register - Security
V2EX - 技术
V2EX - 技术
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Last Week in AI
Last Week in AI
L
LangChain Blog
T
Tor Project blog
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客

博客园 - 世之云枭

网站技术分享 网页内容抓取 推广:湖南省德谦新材料有限公司 Http://www.paint123.cn CentOS MySQL安装和编译【转帖】 缓存容器类的实现(C#) ReadFreeCache 设计一个高效的网络服务器用户管理类 修改自增字段 VTL-vm模板的变量用法 - 世之云枭 - 博客园 http://www.cnblogs.com/onlytiancai/archive/2009/04/11/1433456.html 数据库中与c#中的数据类型对照 - 世之云枭 - 博客园 SessionID的正确说明 临时文件 细节决定成败 NVelocity 主从表 自动生成清空数据库的SQL语句 自动生成Insert数据的SQL脚本 分页存储过程 常用的获取最大值
C++、Java与C#的命名规范总结 (转)
世之云枭 · 2009-05-24 · via 博客园 - 世之云枭

C++、Java与C#的命名规范总结
序言

由于在开发工作中经常用到C++、Java和C#作为开发语言,命名规范的问题经常给我造成一些困扰。一方面命名规范没有唯一的标准答案,另一方面,虽说语言的命名规范并没有固定的形式,三种语言的风格毕竟不太一样,也各自有着一些独特的特点。在编写代码的过程中所采用的命名方式经常变动,没有形成固定的风格。因此,根据从网上收集到的一些资料以及自身的一些经验,对C++、Java以及C#的命名规范进行了总结,方便以后查询。

命名规范的原则:

l         尽量采用以前采用过的命名规则;

l         尽量在三种语言下采用相同的命名规则,以方便记忆;

l         尽量采用来自官方(如Sun、MS)的命名规则。

 
1. 匈牙利命名法、Camel命名法与Pascal命名法

匈牙利命名法:在Windows编程中使用非常普遍,由微软的一位匈牙利程序员提出。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等。例如,m_lpszStr表示指向一个以0字符结尾的字符串的长指针成员变量。在面向对象的程序设计中匈牙利命名法使用起来非常别扭。

Camel命名法:即骆驼式命名法,原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏。Camel命名法有两种形式:混合使用大小写字母和单词之间加下划线,例如runFast和run_fast都属于Camel命名法。

Pascal命名法:与Camel命名法类似,不过Pascal命名法的首字母为大写字母。

 
2. 命名规范对照表
标识符类型 
C++ 
Java 
C#

文件名 
与类名相同,定义类是文件名一般成对出现,如FooBar.h和FooBar.cpp对应类FooBar。 
与类名相同。 
同Java。

名字空间、包 
同C#。 
包名的前缀是全部小写的ASII字符并且是一个顶级域名,通常是com,edu,gov,net,org。包名的后续部分根据不同机构各自内部的命名规范不尽相同,这类命名规范可能以特定目录名的组成来区分部门、项目、机器或注册名。

示例:

l         com.sun.eng

l         com.apple.quicktime.v2

l         edu.cmu.cs.bovik.cheese 
Pascal命名法,且从表示范围大的名字开始。

示例:

l         Oracle.Data.Access;

l         Microsoft.Office.Excel;

枚举值 
Pascal命名法,枚举值前面加上枚举类型名,中间以下划线“_”隔开。

示例:

l         enum Color{Color_Red, Color_Green}; 
Pascal命名法。

示例:

l         enum Color{Red, Green}; 
同Java。

类、结构体、类型定义(typedef)、枚举类型 
同Java。 
Pascal命名法。

示例:

l         class Raster;

l         class ImageSprite; 
同Java。

接口 
与类型命名规范相同。 
命名规则与类名相似。

示例:

l         interface RasterDelegate;

l         interface Storing; 
Pascal命名法,前面需要加上字符“I”。

示例:

l         interface ITester;

l         interface ILogger;

方法 
同C#。 
Camel命名法。

示例:

l         run();

l         runFast();

l         getBackGround(); 
Pascal命名法。

示例:

l         Run();

l         RunFast();

l         GetBackGround();

方法内的变量及参数 
同Java。 
Camel命名法。

示例:

l         int myWidth;

l         int taxTotal; 
同Java。

私有、保护实例字段 
同Java。 
Camel命名法,前面需要加一个下划线“_”。

示例:

l         int _employeeId;

l         String _name;

l         Customer _customer; 
同Java。

属性、存取函数 
Pascal命名法,读取函数前面加上“Get”,设置函数前面加上“Set”。

示例:

l         GetEmployeeId();

l         SetName();

l         GetCustomer(); 
Camel命名法,读取函数前面加上“get”,设置函数前面加上“set”。

示例:

l         getEmployeeId();

l         setName();

l         getCustomer(); 
与方法命名规则相同,应该与字段名称相同。建议采用自动属性。

示例:

常量 
同Java。 
全部大写,单词间用下划线隔开。

示例:

l         static final int MIN_WIDTH = 4;

l         static final int MAX_WIDTH = 999;

l         static final int GET_THE_CPU = 1; 
同Java。

事件 
无 
无 
Pascal命名法。

示例:

l         FormClosing;

l         ValueChanged;

l         ButtonClicked;

异常类型 
继承自std::exception,与类型命名规则相同,且以Exception结尾。 
继承自java.lang.Exception,与类型命名规则相同,且以Exception结尾。 
继承自System.Exception,与类型命名规则相同,且以Exception结尾。


 
参考资料

Google C++编程风格指南:http://www.cppblog.com/Fox/category/6273.html?Show=All

Java语言编码规范:http://huihoo.org/code/java_code_conventions.html

.Net Framework开发人员指南——名称准则:http://msdn.microsoft.com/zh-cn/library/ms229002(VS.80).aspx

C#命名规则、开发习惯和风格:http://www.cnblogs.com/netshuai/archive/2008/06/29/1231934.html