【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

编码规范 (二)

原创 2013年12月03日 23:41:45

编码规则规范

0、使用h头树型

      h头文件树型链接,要添加#pargma once  多使用声明把头文件移入CPP中屏蔽接口显露有用的接口即可,h中只能有声名,不能有定义类或实际代码(实际函数或变量实体

class struct的定义可以在内有函数。

     全局变量要 在constant.h中声明,随意#include  在Constant.cpp中定义 全局变量仅在此处有,类库中全无。

    h头文件中只有声明,不存在定义,定义全部放在cpp/c文件中。

1、避免使用“魔数”

      避免:for (int index=0;index<512;++index){ //魔数

      推荐用法:int bufsize=512;

                        for (int index=0;index<bufsize;++index){

    使用宏定义在h头中 该头可以随便include

2、注意比较操作符的使用

      使用了“<”而不是“!=”应该这样改:

  int bufsize=512;

  for (int index=0;index!=bufsize;++index){

3、要善于利用“const”对象

  还是上面的程序代码,其中我们定义了“int bufsize=512”,这就意味着在程序的某个地方都可以修改bufsize的值,这显然不符合我们的初衷。所以这里就有一个比较严重的

       问题:“bufsize”是可以修改的。bufsize可能会被有意或无意地修改。我们当然不希望这种情况发生,所以可以这样改:

  const int bufsize=512;

  for (int index=0;index!=bufsize;++index){

4、尽量避免使用指针和数组

  指针和数组容易产生不可预料的错误,指针用于低级操作,容易产生和繁琐细节相关的错误。而且使用指针的语法规则还比较令人费解。

  数组最大的问题就是不能动态增长,必须要预先设定好数组的才长度。而且数组一经定义,就不允许再添加新元素了,如果需要添加新元素,程序员就要自己管理内存,

       即重新定义一个数组,再把旧数组的元素复制过去,同时还要时刻注意防止数组越界造成的“缓冲区溢出”等问题。

  现在许多有用的程序都可不使用数组或指针实现,现代C++采用Vector取代一般的数组,用迭代器取代指针,虽然指针本质上也是迭代器。看下面的代码:

  string word;

  vector text;

  while (cin>>word){

    text.push_back(word);

  }

       尽量封装入类中使用类。

5、分层开发慎用全局变量和静态变量

      lul 分层 :

                    1、类库层  (不用静态或全局)

                    2、模块框架层 (不用 或禁用全局或静态)

                    3、应用软件层  (只在此处用全局或静态)

6、内存管理

       基本数据类型做为容器,容存数值,容器中又分为两种 一种是 实体类型容器  一种是引用类型,程序各模块之间的关系是调用

或被调用关系。

        lul使用 规则:

       1、传入的参数要等到调用的黑盒模块执行完时才销毁,黑盒模块为一个函数或一个线程。

       2、黑盒模块传出的数据 不销毁,黑盒作为数据源,由调用者销毁。

       3、黑盒模块自管自己使用数据块,传入的不管,传出的只管生产。

 7、lib、dll规范

      lib 中可放全局或静态或函数实体或类定义,都可以,但尽量只放函数或类型定义,lib是加载入exe。

      dll  中可放全局或静态或函数实体或类定义,都可以,但是导出只用函数。lib引入的只是dll中的声明。

8、声明的定义坚守原则

      1、声明一定只在h头中,定义一定在cpp/c中;

      2、局部变量在需时才定义

9、版式风格

      1、打括号风格

           1、1  采用括起 在前句之后,收起的括号单独一行

           1、2  采用 括起 和 收起都占一行


版权声明: 举报

相关文章推荐

Android编码规范(二)--资源等

原文:http://www.cnblogs.com/xiongbo/archive/2011/08/15/2098130.html Android开发规范 一、Android编码规...

Java编码规范 二

IV. 命名规范 A. 规则 1. 包名采用域后缀倒置的加上自定义的包名,采用小写字母。在部门内部应该规划好包名的范围,防止产生冲突。部门内部产品使用部门的名称加上模块名称。产品线的产品使用产品的名称加上模块的名称。 格式: com.公司名.产品名.模块名称 com.公司名.部门名称. 项目名称 示例: 融合WEBSMAP包名 com.公司名.iin.websmap 通用消息转发包名 com.公司名.insa2.msgtrans 2. 类名和接口使用类意义完整的英文描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。

Android开发编码规范之注释(二)

Android开发编码规范之注释(二)1.文件注释/* * —————————————————————– * Copyright (C) 2007-2016, by YS100, Shenzhen, ...

GBK 汉字内码扩展规范编码表(二)

GBK 汉字内码扩展规范编码表(二)        全国信息技术标准化技术委员会         汉字内码扩展规范(GBK)      Chinese Internal Code Specification             1.0 版          (按分类顺序排列) GBK/1: 0xA1A0~0xA9EF(部分) GB2312非汉字符号 GBK/2: 0xB0A0~0xF7FE(部分) GB2312汉字

Objective-C编码规范(二)

对于易维护的代码而言,命名规则非常重要。Objective-C 的方法名往往十分长,但代码块读起来就像散文一样,不需要太多的代码注释。
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)