算法设计与分析——1

1. 编码规范

格式

1. 程序块要采用缩进风格编写,缩进的空格数为4个(使用TAB键需要设置)。

2. 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。

3. 程序块的分界符(如C/C++ 语言的大括号‘{’ 和‘}’ )应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

4. 变量声明应尽可能靠近第一次使用处,避免一次性声明一组没有马上使用的变量;

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

  • 函数之间应该用空行分开;
  • 用空行将代码按照逻辑片断划分;

6. 不允许把多个短语句写在一行中,即一行只写一条语句,一行代码只做一件事情。
7. if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}

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

  • 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐
  • 函数或过程中的参数较长,则要进行适当的划分。

9.语句中要进行适当的空格

  • if、for、while、switch 等与后面的括号间应加空格,使if等关键字更为突出、明显。if (a >= b && c > d)
  • 关键字之后要留空格。函数名之后不留空格, 紧跟左括号‘(’ , 以与关键字区别,如 const、 virtual、 inline、 case 等关键字之后至少要留一个空格, 否则无法辨析关键字。
  • 如果语句足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格。
  • 在长语句中,如果需要加的空格非常多,则保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。
  • 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如-、>)后不应加空格。
  • 逗号、分号只在后面加空格。int a, b, c;
  • 比较操作符,赋值操作符“=”、“+=”,算术操作符“+”、“%”,逻辑操作符“&&”、“&”,位域操作符“<<”、“^”等双目操作符的前后加空格。a = b + c;
  • “!”、“~”、“++”、“--”、“&”(地址运算符)等单目操作符前后不加空格。
  • “->”、“.”前后不加空格。
  • 复合赋值运算符如“+=”不能用空格空开。

注释

注释的原则是有助于对程序的阅读理解, 在该加的地方加, 不宜太多也不能太少, 注释语言必须准确、易懂、简洁

  • 边写代码边注释, 修改代码同时修改相应的注释, 以保证注释与代码的一致性。不再有用的注释要删除。
  • 注释的内容要清楚、明了, 含义准确, 防止注释二义性。
  • 避免在注释中使用缩写, 特别是非常用缩写
  • 注释与所描述内容进行同样的缩排。
  • 注释应与其描述的代码相近, 对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置, 不可放在下面, 如放于上方则需与其上面的代码用空行隔开。
  • 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。
  • 对于所有命名不是充分自注释的有物理含义的变量、常量,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。
  • 命名不是充分自注释的数组、结构、类、枚举等,  必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。
  • 对重要变量的定义需编写注释,特别是全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
  • 对变量的定义和分支语句(条件分支、循环语句等)
  • 对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。

命名

  • 命名尽量使用英文单词,要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
  • 命名中若使用特殊约定或缩写,该在源文件的开始之处, 进行必要的注释说明。
  • 命名风格,要自始至终保持一致,不可来回变化。命名规范必须与所使用的系统风格保持一致,在同一项目中统一。
  • 对于变量命名,尽量不取单个字符(i、j、k...),建议要有具体含义外,还能表明其变量类型、数据类型等,i、j、k作局部循环变量是允许的。
  • 函数名以大写字母开头,采用动宾结构,且应反映函数执行的操作以及返回的内容。
  • 常量、宏和模板名采用全大写的方式,每个单词间用下划线分隔。

 

2.《数学之美》感想体会

       一翻开这本书,作者便在前言中一语回应了许多人对“学数学到底有什么用”的质疑:“事实上,数学的用途远超人们的想象,甚至可以说在现实生活中无处不在。且不说那些与我们的生活联系相对较少的领域,比如:原子能和航天。那里需要用到大量的数学知识。就说我们天天使用的产品和技术,背后都有支持他们的数学基础。作为一名工作了20多年的科学工作者,我在工作中也时常惊叹于数学语言知识应用于解决实际问题上时的魔力,我也希望将这种神奇讲解给大家听。”至此,作者为我打开了一扇与现代科技领域相关的数学知识大门。从上古数字文字语言中的数学联系,到由于以为追求语法规则而走上基于规则的方法的弯路,再到真正自然语言处理的基础统计语言模型,紧接统计语言模型在中文分词上的作用体现,再接通信、信息的进一步了解,然后是现代自然语言处理的奠基等等。

       阅读了有关自然语言处理的章节之后,通过发展历史的真实过程名人轶事,将信息背后的数学显露出来,同样也打破了我原本的一些思维惯性, 语言同样也是一种编码的方式,语言同样拥有数学本质,因而自然语言处理同样可以基于数学模型和统计的方法,而非局限于人类学习语言的方式上,在让机器理解语言,分析语句上下功夫,使短短的句子变得越来越复杂,遇上新的困难,前人走得弯路,也极大可能成为我们会犯的错误,用数学的方法能够将大规模的问题简化,一个句子是否合理似乎就变成了可能性大小的问题了,“数学的精彩之处就在于简单的模型可以干大事”,成为我未来学习的一块敲门砖。

 

posted @ 2021-09-12 23:26  alleyn  阅读(74)  评论(0编辑  收藏  举报