算法第一次作业

代码规范

  本学期我应遵循的代码规范参考腾讯公司编码规范执行,规则如下:

一.程序版式

1.程序块要采用缩进风格编写,缩进的空格数为4个。

 

2.相对独立的程序块之间、变量说明之后必须加空行。

说明以下情况:
1)函数之间应该用空行分开;
2)变量声明应尽可能靠近第一次使用处,避免一次性声明一组没有马上使用的变量;
3)用空行将代码按照逻辑片断划分;
4)每个类声明之后应该加入空格同其他代码分开。

 

3.较长的语句(>80字符)要分成多行书写。

说明以下情况:
1)长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进。
2)若函数或过程中的参数较长,则要进行适当的划分。
3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

4)用括号明确表达式的操作顺序,避免使用默认优先级。


4. 不允许把多个短语句写在一行中。一行代码只做一件事情,如只定义一个变量,或只写一条语句。

 

5. if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。


6. 代码行之内应该留有适当的空格说明,具体如下:
1)关键字之后要留空格。象const、virtual、inline、case等关键字之后至少 要留一个空格,否则无法辨析关键字 象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。  
2)函数名之后不要留空格,紧跟左括号’(’,以与关键字区别。

3)‘(’向后紧 跟,‘ )’、‘,’、‘;’向前紧跟,紧跟处不留空格。
4)‘,’之后要留空格, 如Function(x,y,z)。如果‘;’不是一行的结束符号,后也 要留空格。
5)值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、 “+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<、“^”等二元操作符的前后应当加空格。
6)一元操作符如“!”、“~”、“++”、“–”、“&”(地址运算符)等前后不加空格。
7)象“[]”、“.”、“->” 这类操作符前后不加空格。

 

7.程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

 

二.注释

类、关键变量、关键语句、函数头部应进行注释,列出其存在目的或功能等。
注释的内容要清楚明了,不能有二义性。注释应该和代码同时更新,不再有用的注释要删除。

说明:注释也需要与代码一样整齐排版
1)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
2)注释与所描述内容进行同样的缩排。
3)将注释与其上面的代码用空行隔开。
4)变量、常量、宏的注释应放在其上方相邻位置或右方。

 

三.命名

命名尽量使用相关英文单词,采用驼峰命名法,说明:
1)常量、宏和模板名采用全大写的方式,每个单词间用下划线分隔。
2)枚举类型enum 常量应以大写字母开头或全部大写。
3)命名中若使用了特殊约定或缩写,则要有注释说明。
4)对于变量命名,禁止取单个字符(如i、j、k…),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。
5)避免使用看上去相似的名称,如“l”、“1”和“I”看上去非常相似。

 

四.变量、结构

1. 尽量少使用全局变量,去掉没必要的公共变量。说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。

2. 规则:变量,特别是指针变量,被创建之后应当及时把它们初始化,以防止把未被初始化的变量当成右值使用。
说明:在C/C++中引用未经赋值的指针,经常会引起系统崩溃。

3.主动使用const,避免使用宏。

 

读《数学之美》第20章有感

   第20章以鸡蛋保存为引,深入浅出地阐明何为最大熵原理,即保留主体全部的不确定性从而使预测风险降到最低。
  书中写到:“最大熵原理指出,需要对一个随机事件的概率进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。”在已知条件下,对剩下的可能作平均分布,任何带有主观的臆断实际上会给模型加入了不能从已知信息获得的约束条件,这样会大大降低模型的精确度。
  最大熵模型目前已经在信息处理中已经有了广泛的应用,奈何我学识尚浅还不能够完全理解。但这一章节令我着迷的,不只是认识一个有趣的原理概念,还有作者对其算法的研究过程。每天一支笔,一沓纸,不停地推导。大师的努力也很朴素纯粹,却胜在踏实和甘愿,每天的付出放到研究的大进程来看渺小又重复,但都是收获成功的幸福。
  最大熵模型具有形式简单,效果出群的良好特性,展现了数学的实用美。数学与IT是当代我们探索世界的工具,而算法的不断优化能帮助我们更高效地利用它们。纷繁复杂的世界,需要我们从已知走向未知,而我,我们,确实也在不断努力。

posted @ 2021-09-12 16:17  布小林  阅读(49)  评论(0编辑  收藏  举报