编码规范 + 《数学之美》读后感

编码规范

一、文件结构

每个 C/C++ 程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。

C/C++ 程序的头文件通常以 “.h” 为后缀,C 程序的定义文件以 “.c” 为后缀,C++ 程序的定义文件通常以 “.cpp/.cc” 为后缀。 

1.1 头文件的结构


【规则 1-1-1】为了防止头文件被重复引用,应当在头文件的第一行添加 #pragma once,更常见的做法是用 ifndef/define/endif 结构产生预处理块
【规则 1-1-2】用 #include <filename.h> 格式来引用标准库的头文件
编译器将在标准库目录搜索,该目录保存在系统的环境变量中
【规则 1-1-3】用 #include “filename.h” 格式来引用非标准库的头文件
编译器将在当前的工作目录搜索,如果找不到会到标准库目录搜索
【建议 1-1-1】头文件中只存放声明,而不存放定义

1.2 定义文件的结构

定义文件有两部分内容:

  1. 对头文件的引用
  2. 程序的实现体(包括数据和代码)

1.3 头文件的作用


通过头文件来调用库功能
在很多场合,源代码不便(或不准)向用户公布,只向用户提供头文件和二进制的库即可
用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口是怎么实现的
头文件能加强类型安全检查
如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一规则大大减轻程序员调试、改错的负担

二、程序的版式


版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。

2.1 空行


空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。

【规则 2-1-1】在每个类声明之后、每个函数定义结束之后都要加空行
【规则 2-1-2】在一个函数体内,逻辑上密切相关的语句之间不加空行,其他地方应加空行分隔


2.2 代码行


【规则 2-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句
【规则 2-2-2】if、for、while、do 等语句独占一行,执行语句不得紧随其后。不论执行语句有多少都要加 { },这样可以防止书写失误
【建议 2-2-1】尽可能在定义变量的同时初始化该变量


2.3 注释
注释通常用于:

函数接口的说明
重要代码行或段落的提示
【规则 2-3-1】注释是对代码的「提示」,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱,注释的花样要少
【规则 2-3-2】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除
【规则 2-3-3】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可以放在下方
【规则 2-3-4】当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读

三、命名规则

  • 规则 3-1-1】标识符应当直观且可以拼读,可望文知意,不必进行解码
  • 规则 3-1-2】程序中不要出现仅靠大小写来区分的标识符
  • 【规则 3-1-3】变量的名字应当使用「名称」或者「形容词 + 名词」
  • 规则 3-1-4】全局函数的名字应当使用「动词」或者「动词 + 名词」
  • 规则 3-1-5】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等
  • 规则 3-2-1】类名和函数名用大写字母开头的单词组合而成
  • 规则 3-2-2】变量和参数用小写字母开头的单词组合而成
  • 规则 3-2-3】常量全用大写字母,用下划线分隔单词
  • 规则 3-2-4】静态变量加前缀 s_(表示 static)
  • 规则 3-2-5】全局变量加前缀 g_(表示 global)
  • 规则 3-2-6】类的数据成员函数加前缀 m_(表示 member,也可以加前缀 _ 或 后缀 _),这样可以避免数据成员与成员函数的参数同名

《数学之美》读后感

               

        在阅读《数学之美》第二十一章后,我被深深吸引,作者不仅揭示了拼音输入法背后的数学逻辑,更是将这一技术的发展与人类对信息处理效率的不懈追求联系起来。这一章节不仅仅是对技术的回顾,更是一次对算法在日常生活中应用的深刻洞察。

        书中对输入法的发展历程进行了细致的梳理,从最初的自然音节编码,到后来的偏旁笔画拆字,再到现在回归自然音节编码,这一过程映射了技术进步与人类需求之间的互动。我对此深有感触,尤其是在日常工作中,高效的输入法无疑极大地提升了我的沟通效率。

        特别让我印象深刻的是,作者将拼音转汉字的过程比作寻找最短路径的问题,这与我在大学一年级学习的数据结构课程中的动态规划算法有着惊人的相似之处。这种类比不仅生动形象,而且让我对算法的理解更加深刻。在拼音输入法中,每个拼音节点都连接着多个候选汉字,形成了一个复杂的有向图。算法的任务就是在这张图上找到一条最优路径,这不仅需要考虑拼音本身,还要结合上下文信息。

        通过这次阅读,我不仅对拼音输入法的工作原理有了更清晰的认识,而且在实际使用中,我能更加直观地感受到算法的智能推荐是如何根据我的输入习惯和上下文信息来工作的。这些技术的应用,无疑提高了输入的准确性和速度,同时也极大地丰富了我的用户体验。

        总的来说,这一章节不仅让我对拼音输入法背后的数学原理有了更深入的理解,也让我对算法在实际生活中的应用有了更加直观的感受。这种将抽象的数学概念与具体的技术应用相结合的方式,让我对数学之美有了全新的认识。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值