434
社区成员
发帖
与我相关
我的任务
分享1.命名规范
标识符的命名最好贴合意思,言之有物,表达出它的功能。
一般命名遵守驼峰命名法。
--大驼峰命名法:每个单词的首字母都大写
--小驼峰命名法:除第一个单词后的每个单词首字母大写
具体的命名规范:
-类名、函数名:首字母大写,后面每个单词的首字母大写
-变量名:首字母小写,后面每个单词的首字母大写
-常量名:全部大写(应避免名字太长)
-宏定义、枚举标签使用全大写。如:#define CONSTANT 000
2.代码的缩进和换行(括号的原则)
为了使得代码具有可读性,许多公司的代码规范要求里都有在写代码时正确使用空格来进行缩进这一要求。合适的缩进和换行可以提高代码的可读性,方便读者清晰地看出程序的逻辑结构和内外部代码的关系,视觉上也更简洁美观。
具体的缩进规则:
-一般缩进的空格数为四个,注意:空格最好是空格键,不可以tab键,否则易出错。
-缩进应在程序的每个块的开始和结束处,每个嵌套块都要正确的缩进和换行。
-“{”“}”应各自占一行,禁止横向代码(即禁止两个大括号和其中内容在同一行写完)
且if、for、do、while等语句的执行语句无论多少都加括号{}
-当if、else if等执行句子较短时(只有一句)或者太长时,需要换行,增强可阅读性。换行后,每条执行语句要记得缩进和对齐。
-一般一行只写一个执行语句
3.代码中的空格
代码编写中空格也有一套标准的排版规范,为了代码更加清晰和整洁,许多公司的代码规范也要求了写代码时的空格规范。
具体的空格规则:
-括号内不要有空格
-在二元操作符两边都加空格(=,==,<, >, !=, <>, <=, >=, &&, ||, 等),但参数和一元操作符(!,~,++,--,&)之间不加空格。
-不要在逗号,分号,冒号前面加空格,但可以在他们后面加空格
-当“=”用于指示关键字参数和默认参数值时,不要在其两侧使用空格
-在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->),后不应加空格。
4.关于函数的功能
在写主函数外的函数时,不应将所有功能放入一个函数中去实现,应当将要实现的功能分成几个小部分来编写函数。一个函数一般完成的都是小任务。
注意:
-定义函数时,要考虑好函数的返回值类型
-函数括号内的变量要有变量类型,且变量间用逗号隔开
5.代码的注释
注释是为了对程序有更加清晰的理解,注释不宜过多也不宜过少,且应保证准确、易懂和简洁。大多数程序都会带有一定量的有效注释,许多公司也要求写代码时适当添加必要的注释。
具体要求:
-说明性文件头部进行注释,注释列出版权说明、版本号、作者、生成日期、功能等。可以添加对后面函数功能的解释。
-函数头部进行注释,列出函数的功能和输入、输出参数、调用关系等。
-注释不应有二义性,所以写注释时最好不要用缩写
-对于代码的注释一般放在代码的上方或者右方,不应放在下方。
-对于全局变量要有详细的注释,说明功能,取值范围,存取内容等等
阅读《数学之美》这本书,对其中的第十六章——信息指纹及其应用颇感兴趣。信息指纹,可以简单地理解为一段信息,随机地映射到一个多维二进制空间的一个点,也就是一个二进制数字。
一段文字所包含的信息,我们称之为信息熵。为了区分两段文字和图片,可以使用一个不需要太长的随机数。这个随机数就是信息指纹,可以通过算法,使得任意两段信息的指纹难以重复。
在本章,作者讲到之前提到的爬虫过程中UPL的存储问题。利用信息指纹,我们可以将网络地址占用的字节从100以上变为只需要16个字节。把存储网址的内存需求量降到原来的1/6不到。这一个变化是利用产生随机数的算法实现的,而这16字节的随机数,就称作该网络地址的信息指纹。信息指纹使得网络地址方便查找,提高了效率,减小了开销。
爬虫过程中将网址变成信息指纹存入哈希表中,并且查找该指纹是否已经存在在哈希表中,避免重复下载。利用信息指纹提高了查找的效率,节省了系统的空间。
产生信息指纹的方法是伪随机数产生器方法--PRNG,用这种方法生成的信息指纹有着不可逆性,无法根据信息指纹推出原有信息。意味着无法根据信息指纹了解用户的身份,这一特点保障了信息安全,cookie就是利用这一特点保护用户信息,不过还是需要再加密。
本章不光是提到了信息指纹的定义和作用,还提到了它的用途。集合相同的判定是利用信息指纹判断两个集合是否相同。计算集合的指纹再进行比较,如果两个指纹相同,那集合肯定也相同。因为集合比较不包含顺序比较,所以可以用于判断两个词组的内容而忽略词的排序。用于应用上还可以判断正盗版。但是集合相同的判定一般适用于计算量不大的判断。所以还有一种用途叫判定集合基本相同。比较特征集合的信息指纹,如果相同,两个集合就基本一致。利用这个用途可以判断文章的原创和抄袭。
关于信息指纹的用途,本章还提到了一个例子——YouTube的反盗版。判断视频是否是其他视频的盗版。如果直接进行比较绝对是很麻烦的,但是如果提取关键帧和特征来比较,就比较简单了。关键帧和特征的提取也是视频匹配的关键技术。利用信息指纹表示关键帧后进行比较,这个就有些类似上面所说的判断集合基本相同。
其实信息指纹的原理不是很晦涩,信息指纹也给应用提供了便利,所以作者还提到了信息指纹重复的可能性。两个不同的信息确实有可能产生一个相同的随机数,即相同的指纹。但是这种可能性在理论上说得通,实际上几乎为零。通过计算k个指纹不重复的概率可以发现,要达到一个很大的数字时才有可能重复一次,所以信息指纹重复的可能性很低。
信息指纹在处理海量的数据上起到了巨大的作用,许多应用功能都需要生成信息指纹,以及在相关信息的比较中也是不可缺少的关键因素。