-
2021-02-01 10:26:12
顾名思义,“命名规则”指的是为标识符起名字时遵循的规则。
标识符主要包括变量名、函数名、类名和宏名。
三种主流命名法:骆驼(Camel)命名法,帕斯卡(Pascal)命名法和匈牙利命名法。
个人习惯,一般情况使用骆驼命名法,类名对象名使用帕斯卡。
数据库表名 统一全部小写中间用"_"分隔 例如 "cps_user",字段名全部小写可以用"_"分隔,或者不用。
骆驼(Camel)命名法近年来越来越流行,
在许多新的函数库和Java这样的平台下使用得当相多。
骆驼命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。
其中第一个单词首字母小写,余下的单词首字母大写。
例如:printEmployeePaychecks(),函数名中每一个逻辑断点都有一个大写字母来标记。
个人感觉好处是,标示符很多情况是一个单词,国人习惯小写,大写终究是有点别扭。
帕斯卡(Pascal)命名法与骆驼命名法类似。
只不过骆驼命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。
例如:DisplayInfo()和UserName都是采用了帕斯卡命名法。
这种命名法看起来很整洁,不过标示符只有一个单词的时候为了统一也要大写,很别扭啊。
一、匈牙利命名法:
广泛应用于象Microsoft Windows这样的环境中。
Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀,标识出变量的作用域,类型等。前缀之后的才是首字母大写的一个单词或多个单词组合。
例如:
iTotal, bSort, sName, aField, oDate,fnCookieCallback 第一个小写字符分别标注了标示符的数据类型。
感觉这种命名法在参数传递中,优势很明显。
前 缀 类 型匈牙利命名法中常用的小写字母的前缀:
a 数组 (Array)
b 布尔值 (Boolean)
by 字节 (Byte)
c 有符号字符 (Char)
cb 无符号字符 (Char Byte,没有多少人用)
cr 颜色参考值 (ColorRef)
cx,cy 坐标差(长度 ShortInt)
dw Double Word
fn 函数
h Handle(句柄)
i 整型
l 长整型 (Long Int)
lp Long Pointer
m_ 类的成员
n 短整型 (Short Int)
np Near Pointer
p Pointer
s 字符串型
sz 以null做结尾的字符串型 (String with Zero End)
w Word
更多相关内容 -
pgsql对象标识符类型
2017-02-15 17:34:33帮Python找“对象” 【技术直播】揭开...pgsql对象标识符类型 2014-06-05 15:33 463人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: web开发(136) 作者同类文章X 数据本文章已收录于:PostgreSQL 8.1 中文文档 Prev Fast Backward Chapter 8. 数据类型 Fast Forward Next
8.12. 对象标识符类型
PostgreSQL 在内部使用对象标识符(OID)作为各种系统表的主键。 同时,系统不会给用户创建的表增加一个 OID 系统字段(除非在建表时声明了 WITH OIDS 或者是配置参数 default_with_oids 设置成了真)。 类型 oid 代表一个对象标识符。除此以外还有几个 oid 的别名: regproc,regprocedure,regoper,regoperator,regclass,和 regtype。 Table 8-19 显示了概要。
目前 oid 类型是用一个无符号的四字节整数实现的。 因此,它是不够用于提供大数据库范围内的唯一性保证的, 甚至在单个的大表中也不行。因此,我们不鼓励在用户创建的表中使用 OID 字段做主键。OID 最好只是用于引用系统表。
oid 类型本身除了比较之外还有几个操作。 不过,它可以转换为整数,然后用标准的整数操作符操作。(如果你这么干, 那么请注意可能的有符号和无符号之间的混淆。)
OID 别名类型没有自己的操作,除指明的输入和输出过程之外。 这些过程可以为系统对象接受和显示符号名,而不仅仅是类型 oid 将要使用的行数值。别名类型允许我们简化为对象查找 OID 值的过程。 比如,检查和一个表 mytable 相关的pg_attribute 行, 我们可以写
SELECT * FROM pg_attribute WHERE attrelid = 'mytable'::regclass;
而不用
SELECT * FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'mytable');
虽然看上去不坏,但是这个例子还是简化了好多,如果在不同的模式里有好多叫 mytable 的表,那么我们需要写一个更复杂的子查询。 regclass 的输入转换器处理根据模式路径设置的表检索工作,所以它自动干了"正确的事情"。 类似的还有,把一个表的 OID 转换成 regclass 是查找一个 OID 对应的符号名称的最简单方法。
Table 8-19. 对象标识类型
名字 引用 描述 数值例子 oid 任意 数字的对象标识符 564182 regproc pg_proc 函数名字 sum regprocedure pg_proc 带参数类型的函数 sum(int4) regoper pg_operator 操作符名 + regoperator pg_operator 带参数类型的操作符 *(integer,integer)或者-(NONE,integer) regclass pg_class 关系名 pg_type regtype pg_type 数据类型名 integer 所有 OID 别名类型都接受有模式修饰的名字,并且如果在当前 搜索路径中,在不增加修饰的情况下无法找到该对象,那么在输出 时将显示有模式修饰的名字。regproc 和 regoper 别名类型将只接受唯一的输入名字(不能重载),因此它们的用途有限; 对于大多数应用,regprocedure 或 regoperat或者 更合适。对于 regoperat或者,单目操作符是通过在那些未用的操作数 上写NONE来标识的。
OID 别名类型的一个额外的属性是如果这些类型之一的常量出现在一个存储的表达式里 (比如字段缺省表达式或者试图),它在被引用的对象上创建一个依赖性。 比如,如果一个字段有缺省的 nextval('my_seq'::regclass) 表达式, PostgreSQL 理解缺省表达式依赖于序列 my_seq; 系统将不允许在删除缺省的表达式之前删除该序列。
系统使用的另外一个标识符类型是 xid,或者说是事务(缩写xact) 标识符。它是系统字段 xmin 和 xmax 的 数据类型。事务标识符是 32 位的量。
系统需要的第三种标识符类型是 cid,或者命令标识符。 它是系统字段 cmin 和 cmax 的数据类型。 命令标识符也是 32 位的量。
系统使用的最后的标识符类型是 tid,或者说是元组标识符。 它是系统表字段 ctid 的数据类型。元组 ID 是一对儿数值 (块号,块内的元组索引),它标识该元组在其所在表内的物理位置。
(系统字段在 Section 5.4 里有更多解释。)
-
顶
- 0
-
踩
- 0
我的同类文章
http://blog.csdn.net- •node.js中使用q.js实现api的promise化2016-03-14
- •利用promise写出更加优美的nodejs程序2016-03-12
- •NodeJS写日志_Log4js使用详解+常见艰难的解决2016-03-11
- •前后端分离的思考与实践(一)2016-03-09
- •用pharser 开发 消灭星星游戏【草稿】2015-12-04
- •一个基于svg的圆形loading动画2015-09-17
- •推荐一个nodejs的promise库2016-03-12
- •JavaScript进阶之路——认识和使用Promise,重构你的Js代码2016-03-12
- •玩转Nodejs日志管理log4js2016-03-11
- •Nodejs的Express完成安装指导2016-03-07
- •一个tornado项目的大体结构2015-11-03
参考知识库
关闭核心技术类目
全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap -
Hibernate——对象标识符生成方法(主键增长策略)
2018-03-10 21:48:24Hibernate对象标识符(OID) Hibernate中的持久化对象对应数据库中的一张数据表,因此区分不同的持久化对象,在Hibernate中是通过OID(Object ID,对象标识符)来完成的,从表的角度看,OID对应表的主键。从类的角度看...Hibernate对象标识符(OID)
Hibernate中的持久化对象对应数据库中的一张数据表,因此区分不同的持久化对象,在Hibernate中是通过OID(Object ID,对象标识符)来完成的,从表的角度看,OID对应表的主键。从类的角度看,OID对应类的主键属性。
对象标识符生成方法
Hibernate中的主要对象标识生成策略很多,这里主要介绍9中标识符生成方法。其中包括7种标识符生成器和一种复合主键生成方式。
increment标识符生成器
由Hibernate自动以递增的方式生成标识符,每次增量为1.
优点:不依赖于底层数据库系统,适用于所有的数据库系统。
缺点:适用于单进程环境下,在多线程环境下很可能生成相同主键值,而且OID必须为数值类型,比如long,int,short类型。配置方式为:
<id name="id" column="id"> <generator class="increment"/> </id>
identity标识符生成器
由底层数据库生成标识符。
前提条件是:数据库支持自动增长字段类型,比如(SQLServer, MySQL),而且OID必须为数值类型,比如long,int,short类型。
配置方式:
<id name="id" column="id" type="java.lang.Integer"> <generator class="identity"/> </id>
sequenct标识符生成器
依赖于底层数据库系统的序列。
前提条件是:需要数据库支持序列机制(如Oracle等),而且OID必须为数值类型,比如long,int,short类型。
配置方式:
<id name="id" type="java.lang.Long" column="ID"> <generator class="sequence"> <param name="sequence">my_seq</param><!--配置序列的名字--> </generator> </id>
native标识符生成器
native生成器能根据底层数据库系统的类型,自动选择合适的标识符生成器,因此非常适用于跨数据库平台开发,他会由Hibernate根据数据库适配器中的定义,自动采用identity,hilo,sequence的其中一种作为主键生成方式,但是OID必须为数值类型,比如long,int,short类型。
配置方式:
<id name="id" type="java.lang.Integer" column="ID"> <generator class="native"/> </id>
hilo标识符生成器
hilo标识符生成器由Hibernate按照一种high/low算法生成标识符,它从数据库中的特定表的字段中获取high值,因此需要额外的数据库表保存主键生成的历史状态,hilo生成方法不依赖于底层数据库,因此适用于每一种数据库,但是OID必须为数值类型,比如long,int,short等。
配置方式:
<id name="id" type="java.lang.Long" column="ID"> <generator class="hilo"> <param name="table">my_hi_value</param> <param name="column">next_value</param> </generator> </id>
uuid标识符生成器
由Hibernate基于128位唯一值产生算法,根据当前设备IP,时间,JVM启动时间,内部自增量等4个参数生成16进制数值作为主键,一般而言,利用uuid方式生成的主键提供最好的数据插入性能和数据库平台适应性。OID一般是String类型.
配置方式:
<id name="id" type="java.lang.String" column="ID"> <generator class="uuid"/> </id>
assigned标识符生成器
采用assign生成策略表示由应用程序逻辑来负责生成主键标识符,OID类型没有限制。
配置方式:
<id name="id" type="java.lang.String" column="ID"> <generator class="assigned"/> </id>
foreign标识符生成器
用于one-to-one的关系中,根据另外一个表的主键自动生成的。详情可以查看【 Hibernate——关系映射之一对一】。
映射符合主键
尽量不要用符合主键,数据不稳定,效率也比较低。这里暂时省略。
选择生成器的原则
针对Oracle数据库而言,主键是数值型,建议使用sequence,主键是字符串的话,建议使用uuid或者assigned
针对MySQL数据库,主键是数值型的话,建议使用increment或者assigned,主键是字符串的话,建议使用uuid或者assigned
-
映射对象标识符
2017-02-27 11:31:24也可以设置为identity,有两个参数,一个为起始值,一个为增量。如果设置为identity(1,1)表示从1开始每次递增1。 2.从序列中获取自动增长的标识符 在oracle系统中可以设置单独的序列,然后赋值给主键。 ...关系型数据库按主键区分不同的记录
在关系型数据库中,用主键来识别记录并保证每一条记录的唯一性。作为主键必须满足,不为null,每条记录具有唯一的主键值,不允许重复,每条记录的主键值永远不会修改。主键字段有业务含义的叫作自然主键。1.那主键设置为自动增长类型
把主键设置auto-increment,mysql会自动按递增的方式为主键赋值。也可以设置为identity,有两个参数,一个为起始值,一个为增量。如果设置为identity(1,1)表示从1开始每次递增1。2.从序列中获取自动增长的标识符
在oracle系统中可以设置单独的序列,然后赋值给主键。create sequence aaa increment by 2 start with 1//aaa.curval表示当前值,aaa.nextval表示先递增,然后返回递增后的值。
insert into xxx values(aaa.nextval,'xxx')
increment:用于代理主键,自增方式生成标识符,每次增加1。<id name="" column="" type=""> <generetor class="increment"/> </id>
identity:用于代理主键,由底层数据库生成标识符。
sequence:用于代理主键,底层数据库的序列来生成标识符。hilo:用于代理主键,根据high/low算法生成标识符。native:用于代理主键,根据底层数据库对自动生成标识符的支持能力来选择identity,sequence,hilo。uuid.hex:用于代理主键,128位uuid。assigned:用于自然主键,由java生成标识符,设置方法不要为private。select:用于遗留的数据库中代理主键或自然主键,由触发器来生成。foreign:用另一个关联的标识符来作为当前的标识符,用于一对一关联场合。标识符必须为long,int,short类型。
映射自然主键
自然主键是具有业务含义的主键。尽量不要使用自然主键。1.映射单个自然主键<generator class="assigned"/>2.映射复合主键<composite-id>//多个自然主键,这个类必须实现序列化接口,重写equals和hashcode <key-property name column type> <key-property name column type> </composite-id>
-
数据库对象命名规则
2021-01-20 01:11:19数据库对象标识符每个数据库对象都有名字。在 SQL 语句中您可以使用引用标识符和非引用标识符来命名任何数据库对象:引用标识符:以双引号 " " 为开头和结尾的标识符。如果使用引用标识符命名 Schema 对象,则在引用... -
c语言标识符命名规则
2021-05-03 04:40:14c语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程...C语言的标识符命名规则1、... -
hibernate4.x映射对象标识符
2016-10-28 21:40:34Hibernate 使用对象标识符(OID) 来建立内存中的对象和数据库表中记录的对应关系. 对象的 OID 和数据表的主键对应. Hibernate 通过标识符生成器来为主键赋值 Hibernate 推荐在数据表中使用代理主键, 即不具备业务... -
Oracle导入TYPE对象报错ORA-02304
2019-06-24 12:01:44Oracle导入TYPE对象报错ORA-02304 Type是我们经常使用的数据库对象结构。我们在实际中,可以单独定义type类型,之后在PL/SQL代码或者数据表中使用。 在一个偶然的机会让笔者发现使用Type类型在数据exp/imp中的... -
标识符的命名规则和规范
2022-04-25 14:54:51标识符命名规则 只能由26个字母大小写,数字0-9,_或$组成(不能有空格) 不能由数字开头 不能使用关键字和保留字,但是能包含关键字和保留字 严格区分大小写 标识符命名规范基础版 包名:多单词组成时所有字母都... -
GBase 8c 数据类型-对象标识符类型
2022-04-27 14:25:54对象标识符(OID)被用来在内部作为多个系统表的主键。OID不会被添加到用户创建的表中,除非在创建表时指定了WITH OIDS或者启用了default_with_oids配置变量。OID类型有多个别名:regproc、regprocedure、regoper、... -
给参数占位符赋值 query.setString(0, "%集%"); query.setString(1, "普通客户"); //3.执行对象的方法,获取结果集 List list = query.list(); for(Object o : list){ System.out.println(o); } tx.commit()...
-
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.18. 对象标识符类型
2018-10-02 12:58:008.18.对象标识符类型 对象标识符(OID)被PostgreSQL用来在内部作为多个系统表的主键。OID不会被添加到用户创建的表中,除非在创建表时指定了WITH OIDS或者default_with_oids配置变量被启用。类型oid表示一个对象... -
javascript标识符
2021-12-04 16:18:37javascript标识符 -
标识符的作用域与可见性、对象的生存期
2020-07-15 18:36:57目录标识符的作用域与可见性函数原形作用域局部作用域类作用域文件作用域可见性对象的生存期静态生存期动态生存期 标识符的作用域与可见性 作用域是一个标识符在程序正文中有效的区域。 作用域分类:(逐渐扩大) ... -
python标识符
2020-11-24 05:45:28在python里,标识符有字母、数字、下划线组成。 在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的。 以单... -
C语言标识符作用域、外部对象连接属性和变量的储存属性
2021-05-18 09:31:42标识符(identifier)用于代表程序中的对象,根据所代表的对象不同,可将标识符分为变量名、数组名、函数名、数据类型说明符、符号常量名(宏名)和语句标号。2. 标识符的作用域:文件作用域:指从标识符定义或声明位置... -
Java标识符和关键字
2021-03-11 16:48:24该楼层疑似违规已被系统折叠隐藏此楼查看此楼一、Java标识符定义1、包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。2、标识符可以由字母、数字、下划线(_)和美元符号($)组成3、标识符不能以数字开头... -
通译:Identifier Name标识符命名规则
2021-04-20 10:40:24翻译:Identifier Name标识符命名规则本文为mariadb官方手册:Identifier Names的译文。Identifier Names数据库、表、索引、字段、别名、视图、存储过程、触发器、事件、变量分区、表空间、保存点、标签、用户、角色... -
C++语言标识符的命名规则是什么?
2021-04-25 00:50:34C++语言标识符的命名规则是:1、标识符的命名要以字母大小写或者下划线【_】开头;2、尽量将标识符命名为有意义的单词等,增加程序的可读性;3、尽量在一个变量的命名中将不同单词的首字母大写。C++语言标识符的命名... -
python标识符的命名规则是什么
2020-11-20 20:08:02在Python中,一切都是对象,包括常量数据类型,如整数数据类型...标识符是对对象引用起的一个名字。有效的Python标识符规则:1.长度任意长;2.标识符不能与关键字同名;3.在2.x版本的Python中,标识符以ASCII的字母... -
PHP5新特性: 更加面向对象化的PHP
2021-01-21 15:36:58这种方式的缺陷是:当将对象赋值给一个变量时,或者通过参数传递对象时,对象将被完全拷贝一份。在新的版本里,上述操作将传递引用(可以把引用理解成对象的标识符),而非值。 很多PHP程序员可能甚至没有察觉到老的... -
java 的标识符,关键字,分隔符
2021-11-18 20:12:59标识符是用来给类,对象,方法,变量,接口和自定义数据类型命名的。 标识符包含: 类名:class 变量名 方法名: 关于标识符的注意点: 标识符由数字,字母(英文),下划线,美元符,人命币符号... -
Javascript学习---属性的标识符和描述符
2018-02-14 14:15:26属性的标志一个对象属性除了键和值外,还有三个特殊的属性,被叫做属性标识符:(1)writable:如果为true,则该属性是可写的,否则为只读;(2)enumerable:如果为true,则属性可以被循环列举出,否则则不能被列举... -
python标识符命名规范是什么
2020-11-20 20:08:04简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:1.... -
c语言中操作符和标识符有哪些区别和联系
2021-05-18 15:19:19c语言中操作符和标识符有哪些区别和联系以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家...大多数C编译器中,大小写字母是不同的,标识符用于向程序中的对象提供唯一的名称操作符就是C中的许多具有特... -
ECMAScript6函数剩余参数(Rest Parameters)
2021-01-19 20:38:57这个新的对象和arguments不一样,它是程序员自定义的一个普通标识符,只是需要在前面加上三个点:… function func(a, ...rest) { console.log(a) console.log(rest) } func(1) func(1, 2, 3, 4) 注意func的第二... -
【我和大家解读C标准】标识符的作用域、命名空间;对象的存储期
2021-05-19 14:36:36fs_i1、fs_i2、fs_i3、fs_i4以及我们亲爱的main它们都是标识符,分别代表一个对象(变量)、类型名(short int的别名)、结构名,后两个为函数名,它们都未在任何块和参数列表之内,因此,是文件作用域。...
暂无评论