434
社区成员
发帖
与我相关
我的任务
分享作为一个计算机专业的大二学生, 但在写代码时我还会出现代码混乱, 没有注释,变量名难以理解的情况(相信不只有我一个人hiahiahia),好的书写代码习惯是一个程序猿必备的技能, 因此,我参考了腾讯的c++编码规范, 整理出了我以后写代码一定要遵守的规则!!!
1.缩进与空格的说明
缩进要使用4个空格。
2.标识符命名
1)变量命名尽量使用与变量含义相关的英文单词,避免使用引起误解的词汇或模糊的缩写; 多个英文单词拼接而成的变量名单词与单词直接使用"_"进行分割
2)较短的单词可以省略掉元音形成缩写, 例如:
temp 可缩写为 tmp ;
flag 可缩写为 flg ;
statistic 可缩写为 stat ;
increment 可缩写为 inc ;
message 可缩写为 msg ;
3)常量、宏和模板名采用全大写的方式, 每个单词间用下划线分隔。
3.运算符和其他符号
1)值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ =”、“ +=”、“ >=”、“ <=”、“+”、“ *”、“ %”、“ &&”、“ ||”、“ <<” 、“ ^” 等二元操作符 的前后应当加空格。
2)一元操作符如“ !”、“ ~”、“ ++”、“ --”、“ &”(地址运算符) 等前后不加 空格。
3)像“[ ]”、“ .”、“ ->” 这类操作符前后不加空格。
4)‘ ,’ 之后要留空格, 如 Function(x, y, z)。如果‘ ;’ 不是一行的结束符号, 其后也要留空格, 如 for (initialization; condition; update)
5)用括号明确表达式的操作顺序,避免使用默认优先级。
4.关键字
1)关键字之后要留空格。像const、virtual、inline、case 等关键字之后至少要留一 个空格, 否则无法辨析关键字。像 if、for、while 等关键字之后应留一个空格再跟左括号‘( ’, 以突出关键字。
2)主动使用 const,避免使用宏
5.函数与程序块
1)函数之间要用空行分开, 相对独立的程序块之间必须要加空行
2)函数名称要能表明函数的功能, 函数名之后不要留空格, 紧跟左括号’(’ , 以与关键字区别。
3)变量声明应尽可能靠近第一次使用处,避免一次性声明一组没有马上使用的变量;
4)用空行将代码按照逻辑片断划分;
6.代码语句的书写
1)一行只写一个语句, 不能写成:a = 2; b = 3; 正确写法是 :
a = 2;
b = 3;
2) 规则:if、for、do、while、case、switch、default 等语句自占一行,且 if、for、
do、while 等语句的执行语句部分无论多少都要加括号{}。
3)程序块的分界符(如 C/C++语言的大括号‘{’和‘}’)应各独占一行并且 位于同一列,同时与引用它们的语句左对齐。
7.注释
1)要在适当的地方加上注释, 同时避免非必要的注释, 注释不要写的过多或过少, 一般控制在20%~30%之间
2)注释的主要目的应该是解释为什么这么做,而不是正在做什么。
3)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的 注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
4)注释符(包括/**/、//)与注释内容之间要用一个空格进行分隔
以上是我总结的部分规范, 可能会有遗漏疏忽, 在以后的编写过程中我会遵守这些规则,也会将遗漏持续补充,向一位合格的程序猿靠拢!!!
虽然这本书大一就已经买了, 但是大二的我才刚刚打开这本尘封一年的书, 因为最近刚好在学习爬虫的相关知识, 看到第九章的标题就开始读了下去。
总结来说,第九章就是以图论中的两种搜索方式DFS和BFS为引子, 讲述了图论的知识如何解决网络爬虫中的问题, 又就如何构建网络爬虫提出了几个问题和讨论。虽然篇幅不长, 但是想要传达给读者的信息却很多样,我根据自己的阅读粗略地理解了一番。
如何将一个数学知识形象化为我们日常生活中的所能利用到的方方面面呢?作者在文中所说的图论, 形象化来看就是点, 线的集合, 点与点之间的关系可以用线来形象化表示, 而点我们可以看成是一个对象, 简而言之,图论中的知识可以用来表示不同对象间的关系。我们生活中也会有许许多多的关系,比如说人际关系,比如说人机关系,这些都是数学与生活的交融。在网络中不同的网页可以看作不同的对象,而网页上的超链接可以直通不同的网页 这些超链接就可以看做关系, 也就是图中的“线”。如何让数学在计算机领域发挥巨大作用, 又如何让计算机便利我们的生活, 这也是我们需要思考的问题,不能将知识写死在书本里, 而是要让知识活在生活中。
如何把数学知识合适地使用到网络爬虫中呢?作者介绍了图论中的两种遍历方法:BFS和DFS, 我对两者形象的理解就是BFS是“广撒网”, 而DFS是“一条路走到黑”, 两种不同的遍历方式在数学领域上都是准确的, 但网络爬虫中我们要考虑的就不仅仅只是这两点要求,高效性, 可行性是我们在准确的基础上必须要完成的任务。文中也有提到如何在遍历时使用这两种遍历方式, 因为网页链接的特性, BFS在遍历时就显现出了它的优势, 但是如果考虑网页信息的下载过程,客户端与服务器的“握手时间”,DFS也能有个一席之地。在网络爬虫中较多使用的还是BFS。单单讨论这个问题我们需要考虑很多影响因素,时间, 效率,链接方式,爬取内容的获取等等, 图论可以帮我们解决最基础的问题, 但根本的利用还是需要我们做对比和分析, 做出最好的决策。
如何去学习数学知识呢?说实话,学习计算机的我们可能不会在意这个问题,虽然学习计算机的基础就是数学。我觉得一个好的计算机专业的学者应该有一个好的“数学”嗅觉, 能够把可能并不起眼的数学知识恰到好处的运用到本专业领域里;或者是在计算机领域中遇到的问题但是找不到合适的解决办法,可以自己开创一个新的数学领域。好像这些对于我们都太大太远了,因为本专业知识的学习就已经够让我们焦头烂额了,但是我觉得我们最起码可以做到认真学习已有的数学知识并加以利用。而对于数学家们, 他们也需要发现和钻研, 将这些具有潜在价值的数学知识发掘出来,正如书中作者说道的:“很多数学方法就是这样,看上去没有什么实际用途, 但是随着时间的推移会突然派上大用场。” 所以学习数学的最好方式就是“不遗余力”,“不差丝毫”, “不漏细微”。
其实世界上的任何事物都是互相联系的,我们要善于观察善于发现。它会为我们的生活带来更多的美好与便利。