代码规范与《数学之美》读后感(软工2201陈芳琪)

软工2201陈芳琪 2022级 2023-09-25 19:36:11

一、代码规范

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个指纹不重复的概率可以发现,要达到一个很大的数字时才有可能重复一次,所以信息指纹重复的可能性很低。

  信息指纹在处理海量的数据上起到了巨大的作用,许多应用功能都需要生成信息指纹,以及在相关信息的比较中也是不可缺少的关键因素。

  

...全文
60 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文介绍了基于非支配排序遗传算法NSGA-II的综合能源系统优化调度方法,并提供了完整的Matlab代码实现。该方法针对综合能源系统中存在的多目标、多约束、高维度和非线性优化问题,采用NSGA-II算法进行求解,有效处理了诸如经济性、环保性与系统可靠性之间的多目标冲突。通过构建典型综合能源系统模型(包括电、热、冷、气等多种能源形式),实现了对分布式能源、储能设备及各类负荷的协调优化调度。文中详细阐述了NSGA-II算法的核心机制,如快速非支配排序、拥挤度计算与选择操作,确保获得分布均匀且收敛性良好的Pareto最优解集。此外,案例仿真验证了该方法在降低运行成本、提升能源利用效率和减少碳排放方面的优越性能。; 适合人群:具备一定优化算法基础和Matlab编程能力,从事能源系统规划、智能优化、电力系统或相关领域研究的科研人员及研究生。; 使用场景及目标:①应用于区域综合能源系统、微电网、智慧园区等多能协同调度场景;②用于解决多目标优化问题,掌握NSGA-II算法在实际工程中的建模与求解流程;③支撑科研论文复现、课题研究与项目开发; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,深入理解算法实现细节与参数设置影响,同时可拓展至其他智能算法对比分析,进一步提升模型性能与应用广度。
内容概要:本文介绍了一种基于倒谱预白化技术的轴承故障检测方法,特别适用于变速工况下的故障诊断。该方法首先对振动信号进行带通滤波以去除噪声干扰,随后应用倒谱预白化技术消除信号中的卷积混叠效应,提升信号的清晰度。在此基础上,通过对处理后的信号进行平方包络谱分析,有效提取出轴承故障特征频率,从而实现对早期微弱故障的精准识别。整个方法结合了信号预处理与特征增强技术,显著提高了在复杂变工况条件下故障诊断的准确性与鲁棒性,相关算法通过Matlab编程实现,便于工程应用与验证。; 适合人群:具备一定信号处理基础和机械故障诊断背景的科研人员及工程技术人员,尤其适合从事旋转机械状态监测与故障诊断相关工作的研究生、高校教师及企业研发人员。; 使用场景及目标:①应用于变速运行条件下的轴承故障检测,解决传统包络谱分析在变转速下易受干扰的问题;②提升早期微弱故障特征的可辨识度,实现对故障的提前预警与定位;③为开发智能诊断系统提供技术支持与算法参考。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注带通滤波参数设置、倒谱预白化的数学原理及其在抑制调制边带干扰中的作用,并通过实际案例数据进行验证与调优,以掌握该方法的核心优势与适用边界。

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧