第一章:算法概论 心得体会

一、代码规范

        在软件开发过程中,编写代码是不可避免的任务。而代码规范则是必不可少的一部分。它是指开发过程中对代码的编写所具有的一系列规则以及标准,目的是为了使得整个项目的代码更加规范,便于维护,提高代码的可重复性以及可读性。本文将介绍代码规范的重要性以及如何实现规范的编写,以此帮助软件开发者制定良好的代码规范。

1.1 代码中不要出现莫名其妙的数字

        很多程序员在实现功能的时候会分配一个没有明确意义的数字,用于特定的目的,写完这个数字后没有即使去做注释,然后过两天当程序出现问题时,翻看代码碰到这个数字,连自己都忘了它的意义。当程序需要固定的数值参与时,给予特定的名称。

1.2 重复代码/深度嵌套

        有些程序需要使用到无数次的嵌套循环,看着看着就晕了,这时可以将所有循环提取到单独的函数中。

        假设有一个包含两层嵌套的数组,想要拿到最后一个数组的值?一般情况下开发者都会使用嵌套循环,但不是最佳的办法。可以尝试使用函数的反复调用来完成操作执行相同操作的,这样一来代码重复性更小,更易于阅读、重用性高。

1.3 注释

        注释是一个老生常谈的话题,很多人不重视,为了快速完成项目忽略注释,导致后期修改和复用出现很大问题,得不偿失。

1.4 常量/变量/函数命名

        

1.4.1 常量

        常量命名都使用全大写的名称,并用下划线分割所有单词。

1.4.2 变量/函数

        变量/函数命名也是有讲究的,好的变量/函数命名可以让代码更加通俗易懂,一般来说命名遵循以下标准,名称以小写字母开头,之后的每一个单词首字母都用大写,比如骆驼的大小写为camelCase。

1.4.3 动词的使用

        另外,命名时注意动词的使用,比如我们需要从数据库中获取用户信息,函数的名称可以是userInfo,user或者fetchUser,但我推荐使用含有动词的命名 getUser。在功能性的命名中尽量避免使用单个字母,不过如果在循环中,可以忽略这一点。

1.5 代码规范化七大原则

        空行、空格、成对书写、缩进、对齐、代码行、注释

1.6 本学期的主要编码规范

  1. 程序采用缩进风格,每层缩进使用一个制表位(TAB);

  2. 源程序使用英文书写,尽量不含有中文;

  3. 左花括号要另起一行,不能跟在上一行的行末;

  4. 一个变量定义占一行,一个语句占一行;

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

  6. 运算符两侧留空格;

  7. 在+、-、*、/、!=等运算符的两侧应用空格隔开。

二 、读《数学之美》第九章:图论与网络爬虫 有感

        初看标题:图论与网络爬虫,我以为这是两个独立的板块,图论是图论,爬虫是爬虫,可是当我读完第九章后发现两者具有密不可分的关系。

        从整个章节来看,图论与网络爬虫的关系,其实就是遍历算法与搜索引擎的关系,为什么这么说呢?在阅读本章节之前,我潜意识地认为常见的搜索引擎,如百度、谷歌、火狐、Edge等等,它们当中的词条、网站都是人工收录的。我也曾经动摇过自身的想法,因为:搜索同一个问题,在不同网站都能得到一模一样的答案,比如我搜索一个计算机方面的问题,当我点开CSDN、知乎、百度知道以及一些不知名的答疑网站,它们的答案都是一致的,即使那个答案是明显错误的。

        如书中所说,Google 在 2013 年时整个索引大约有 10000亿个网页,即使更新最频繁的基础索引也有 100亿个网页,假如下载一个网页需要一秒钟,那么下载这 100 亿个网页则需要 317 年,如果下载10000亿个网页则需要 32000年左右,是我们人类有文字记载历史的6倍时间,更何况人工收录,这是不可能实现的。所以我也可以解开原先的困惑:这是网络信息之间的相互访问,即图论的遍历算法和网络爬虫的结合。

        目前我也在学习爬虫的相关知识,通过爬虫框架中能发现URL的提取是进行爬虫工作的基本步骤之一。而要进行URL的提取,就必须熟悉网页的结构,分析网页的内容。早期,网页是由HTML语言书写的,甚至现在的一些旧网页也是,所以它们的URL都有明显的标识,很容易发现并提取出来。但是现在很多网页是用一些脚本语言(比如JavaScript)生成的,打开网页的源代码,URL不是直接可见的文本,而是运行这一段脚本后才能得到的结果。

        因此,网络爬虫的页面分析就变得复杂很多,它要模拟浏览器运行一个网页,才能得到里面隐含的URL。所以就需要用到UA伪装,顾名思义,就是人伪装成电脑对网站进行访问,从而逃过网页的反爬虫检测。有意思的是,当我看到这一部分:若你发现一些网页明明存在但搜索引擎就是没有收录,一个可能的原因是网络爬虫中的解析程序没能成功解析网页中不规范的脚本程序。一方面说明了需要大量的浏览器内核工程师来写网络爬虫中的解析程序,另一方面说明世界信息网络之大,大得出乎我的想象。

        《数学之美》这本书最大的价值,不是告诉我们数学世界有多复杂,原理公式有哪些,它最大的魅力在于揭示了数学是以一种什么样的方式存在于我们的世界、以一种什么方式定义我们的世界,它教会我们去理解数学背后的思维方式,搭建了一座我们和前人对话的桥梁。

        当然,我也明白,在《数学之美》中,欣赏美不是终极目的,更值得我们追求的是创造美境界。希望未来的自己,脚踏实地、仰望星空,保持对生活的热爱、对目标的向往、对理想的追求以及对计算机领域的好奇求知。

你可能感兴趣的:(心得体会,Python,爬虫,算法,数据结构,爬虫,python)