特定用途变量规范

1 指针变量

在正式接口函数参数中(一般代码不强制要求),指针变量必须可以字符 p 的前缀表示。 如: int *pVariable = NULL; int **ppVariable = NULL; // 指针的指针 智能指针建议用 ptr 作为前缀或后缀。

2 循环变量

i、j、k 等是比较常用的循环控制变量。除循环变量,不允许使用单字符变量名。 简单循环中,在不引起歧义的情况下,可以使用这样简单的循环控制变量。i、j、k 也比较符合数学公式的习惯。 推荐在较长的循环体中,给循环控制取一个更富有意义的名字,例如:recordIndex。如果循环体长度较长的话,那就很容易使人忘记它代表的是什么,而且经常出现 i、j 弄混的情况。 容器的迭代器,通用名字 pos,iter 等。

3 状态变量

状态变量描述的是程序所处的状态。 至少要用比 flag 或 status 之类更好的名称来命名状态变量。状态变量要有具体的含义:如:dataReady,reloadNeeded。

4 布尔变量

在布尔变量前加前缀 “is” 或 “has” 等。 用暗含非真即假的名字来命名布尔变量,如:isFound,isOK,isDone,isSuccess 等。不要使用类似 sourceFile 或 status 的布尔变量,可以改为 isSourceFileAvailable 或 isStatusOK。布尔变量最好使用比 isSuccess 更有意义的名字:如 isReadSuccess。 必须使用肯定的布尔变量名。除非逻辑确实需要,不要使用否定词汇的布尔变量名,如:isNotFound、isNotDone。

5 临时变量

通常临时变量用来保存中间运算结果,一般采用 lowerCamelCase。也可以在临时变量前加下划线,使变量 “临时” 含义更明确。如: _temp,_buffer,_lock;

6 重复使用变量

在某个子函数中,某一个变量可能重复被使用,而且在各个程序段含义不一样。例如:buffer,errorDesc,errorCode。 在子函数开始位置统一定义,并有注释。 根据其用途取一个合适的名字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLServer数据库设计规范 作者:佚名 厚朴教育来源:网络 点击数:1446 更新时间:2008-12-2 1 相关的设计规范: 1.1 采用有意义的字段名 尽可能地把字段描述的清楚些。当然,也别做过头了,比如CustomerShippingAddressStreetLine1 虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。每个单词的首个字母要求用大写!!!不要用下划线来连接每个单词. 1.2 遵守3NF 标准3NF 规定: A.表内的每一个值都只能被表达一次。 B.表内的每一行都应该被唯一的标识(有唯一键)。 C.表内不应该存储依赖于其他键的非键信息。 1.3 小心保留词 要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突,比如,写的一个ODBC 连接程序里有个表,其中就用了DESC 作为说明字段名。后果可想而知!DESC 是DESCENDING 缩写后的保留词。表里的一个SELECT *语句倒是能用,但我得到的却是一大堆毫无用处的信息。 1.4 保持字段名和类型的一致性 在命名字段并为其指定数据类型的时候一定要保证一致性。假如字段在某个表中叫做"AgreeMentNumber",你就别在另一个表里把名字改成"ref1"。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。记住,你干完自己的活了,其他人还要用你的数据库呢。 2 命名规则: 2.1 数据库(Database)的定义 数据库名称 = 数据库内容标识(首字大写) 2.2 表(Table)的定义 命名应尽量反映存储的数据内容。 表名前缀:以该表及与该表相关联的一系列表的内容而得到一个代表统一的标识 表名称 = 表名前缀 + 表内容标识(首字大写) 如ClientInfo相关联的一系的表以ci作为前缀, 即有表名:ciHistory,ciContact,ciBusiness 2.25 字段(Field)的定义 字段是数据库中的用途最广泛的,它的类型非常多,所以必须加类型前缀来标示它的类型。 字段名称 = 字段类型前缀 + 字段内容标识(首字大写) 2.2视图名 视图的名称 = "vw" + 视图内容标识(首字大写) 如 vUserPerm 2.3触发器名 触发类型触发标识 ----------------------------------- Insert i Delete d Update u 触发名= "tr" + 触发标识 + 相应的表名 如:triClient,trdClient。 2.4存储过程名 存储过程功能存储过程功能前缀 ---------------------------------------- 添加a 更新u 删除d 查询或其它o 存储过程名称 = 存储过程功能前缀 + 存储过程内容标识(首字大写) 如 spoChkUserPerm 2.5变量名 每个单词的首个字母为大写,如@EmployeeName。 2.6命名中其他注意事项 禁止使用中文命名!!!!! 命名都不得超过30个字符的系统限制,变量名的长度限制为29(不包括标识字符@)。 命名都采用英文字符,每个单词的首个字母要大写 2.7 SQL语句的编写规范 数据库中存储过程和触发器中涉及大量的SQL语句,对SQL语句的编写规范如下: 关键字大写:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如:SELECT、ORDER BY、 GROUP BY、 FROM、WHERE、 UPDATE、 INSERT INTO、 SET、 BEGIN、 END ...... 2.8 Rule ru+Rule标识 2.9 主键 pk+表名+主键标识 2.10 外键 fk+表名+主表名+外键标识 2.11 索引 idx+字段标识 2.12 Default df+Default标识 3 编程结构和描述 SQL SERVER系统中,一个批处理是从客户传给服务器的一个完整的包,可以包含若干条SQL语句。批处理中的语句是作为一组去进行语法分析、编译和执行的。触发器、存储过程等数据对象则是将批处理永久化的方法。 3.1注释 注释可以包含在批处理中。在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。本规范建议: 1、注释以英文为主。 实际应用中,发现以中文注释的SQL语句版本在英文环境中不可用。为避免后续版本执行过程中发生某些异常错误,建议使用英文注释。 2、注释尽可能详细、全面。 创建每一数据对象前,应具体描述该对象的功能和用途。 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。 3、注释语法包含两种情况:单行注释、多行注释 单行注释:注释前有两个连字符(--)
编译原理实验三 一、讨论Oberon-0 语言的特点 1、保留字与关键字的概念区分 保留字只要是用在程序语言的层次架构用途上,比如说IF,THEN,ELSIF,用在程序 的循环、分支、判断条件、程序块等组织上,它是程序语言中预定义的,具某些特殊意 义规范的单词。保留字侧重于强调不能被用户作为定义的名字。 关键字是一个只被用在某一部分的程序编程中,关键字在程序语言中同样有特殊的 意义特征。多用于类型定义,如在Oberon中,integer 便是用来定义变量类型的关键 字。还有其他的功能如作为程序语言中的某个特定函数的名称,如 write,read等(在 Oberon中). 不同的语言的关键字和保留字的概念区分是不一样的。例如在C,JAVA中, if,else, while 这些都是关键字的范围,而在Oberon 中是保留字的范围。在C 语言风格的程 序语言中,是将程序控制块的那些保留字也一并归为关键字的。(这些关键字不可以作 为变量,函数的名称,也就是不可以作为程序员使用的标示符)。 2、Oberon与C、Java的差别 a) 在每一一个主要的函数过程procedure 中,Oberon有begin 和end 来标志,而 在C 和java中一般是用花括号来标志。 b) 在定义变量时,Oberon 是在分号之后,也就是最后在给出具体是什么类型的,而 在C、Java中一般是在变量的前面就给出了类型,只是 Oberon会先用var说明 这是一个变量。 c) Oberon中的可用到数据结构主要有数组,类似C 中的结构体,类型选择比较少。 3 二、文法二义性讨论 该文法没有二义性。在其他的语言中出现的二义性类型中,比如表达式的parsing tree (存在两颗或以上的parsing trees)的二义性,需要用算符优先关系来确定的和if-else 的 匹配问题导致的二义性问题,都在该文法中的EBNF定义中被消除掉了。 1、对于表达式的二义性处理: simple_expression = ["+" | "-"] term {("+" | "-" | "OR") term} ; term = factor {("*" | "DIV" | "MOD" | "&") factor} ; 从中,可以看出*和 DIV、MOD 这些一定在+-之前就进行运算了。通过将表达式的将 +-和*DIV、MOD 等用不同层次的表达式进行定义,消除了这一二义性。 2、对于if-else匹配出现二义性的处理:
canopen协议中文翻译版,帮助理解canopen。CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。CANopen 的物理层 CANbus 每次传送的数据量不大,其中包括 11 位元的 ID、远端传输请求(RTR)位元及大小不超过8字节的资料。CANopen 将 CANbus 11 位元的 ID 分为 4 位元的功能码及 7 位元的 CANopen 节点 ID。7 位元的 ID 共有 128 种不同的组合,其中 ID 0 不使用,因此一个 CANopen 网络上最多允许 127 台设备。CANbus 在 CAN 2.0 B 规格中允许 29 位元的 ID,因此若配合 CAN 2.0 B 使用,CANopen 网络上可以超过127 台设备,不过在实际运用中,大多数的 CANopen 网络上设备数量均低于此数值。 CANopen 将 CANbus 的 11 位元 ID 称为通讯对象 ID (COB-ID)。当传输数据发生冲突时,CANbus 的仲裁机制会使 COB-ID 最小的讯息继续传送,不用等待或重传。COB-ID 的前 4 个位元是 CANopen 的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。 以下是一个标准的 CANopen 页框: 功能码 节点 ID RTR 资料长度 资料 长度 4 位元 7 位元 1 位元 4 位元 0-8 字节 在 CANopen 标准中,部份 COB-ID 被保留作网络管理及 SDO 通讯用。而在设备初始化后,有些功能码和 COB-ID 会对映到标准的功能,不过后续仍可以规划为其他用途。 通讯模型 CANopen 设备间的通讯可分为以下三种通讯模型。 在 master/slave 模型中,一个 CANopen 设备为 master,负责传送或接收其他设备(称为 slave)的数据。NMT 协定就使用了 master/slave 模型。 客户机/服务器(client/server)模型定义在 SDO 协定中,SDO client 将对象字典的索引及子索引传送给 SDO server,因此会产生一个或数个需求数据(对象字典中,索引及子索引对应的内容)的 SDO 封包。 生产者/消费者(producer/consumer)模型用在 Heartbeat and Node Guarding 协定。由一个生产者送出数据给消息者,同一个生产者的数据可能给一个以上的消息者。又可分为二种: push-model:生产者会自动送出数据给消费者。 pull-model:消费者需送出请求讯息,生产者才会送出数据。 CANopen参考模型: CANopen参考模型 CANopen设备 CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。 CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。物理层非常稳定;2. 数据链路层可靠,因为相比其他所有总线,只有CAN可以做到达到汉明间距(Hamming Distanz)为6,能够检测报文里多达5个随机引入的位错误及15位突发性错误。3. 灵活,兼容性高;4. 可互操作性高;5. 价格低 (对于设备生产商来说);6. CAN产品尺寸小,节省空间;7.支持冗余备用 CANopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典的entry 定义如下: 索引 (Index):对象 16 位元的位址。 对象名称 (Object name):一个代表对象的 symbolic type,可以是阵列、纪录或只是一个变量。 名称 (Name):描述此 entry 的字串。 形态 (Type):变量的资料形态。 属性 (Attribute):提供此 entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。 必须 (Mandatory)/可选 (Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值