第一周作业
一、代码规范
(一)命名规范
- 变量命名:采用 lowerCamelCase 风格,即首字母小写,后续单词首字母大写。例如
userAge
、totalAmount
。清晰明了地表达变量含义,避免使用模糊或容易误解的名字,杜绝使用拼音与英文混合的方式。这样命名能让阅读代码的人迅速理解变量用途,提升代码可读性。例如,num
就不如studentNumber
表意明确。 - 函数命名:同样遵循 lowerCamelCase 风格,且名字应能准确反映函数功能。比如
calculateSum
用于计算总和,sendEmail
用于发送邮件。若函数是对某个对象进行操作,可采用对象名_操作名
的形式,如user_updatePassword
。 - 类命名:使用 UpperCamelCase 风格,每个单词首字母大写。类名应体现其代表的事物或功能,如
UserService
表示与用户服务相关的类,ProductManager
用于管理产品相关操作。 - 常量命名:全部大写,单词间用下划线隔开。例如
MAX_COUNT
表示最大数量,PI
表示圆周率。常量名要语义完整清晰,避免使用含义模糊的缩写。
(二)代码格式规范
-
缩进:使用 4 个空格进行缩进,不使用 tab 键。统一的缩进风格能让代码结构层次分明,易于阅读。在嵌套代码块中,严格按照层次增加缩进,如:
if (condition) { // 缩进4个空格 for (int i = 0; i < 10; i++) { // 再缩进4个空格 System.out.println(i); } }
-
每行长度:每行代码字符数尽量不超过 120 个。若代码较长,合理使用换行,换行时遵循逻辑结构,比如方法参数较多时,可在逗号后换行,并对齐参数。例如:
result = complexCalculation(longParameter1, longParameter2, longParameter3);
-
空格使用:运算符(如
+
、-
、*
、/
、=
等)前后必须加空格,使运算关系更清晰。例如a = b + c;
。方法调用时,参数列表中逗号后加空格,如method(param1, param2);
。
(三)注释规范
-
文件注释:在每个源文件开头,添加注释说明文件的功能、作者、创建时间等信息。例如:
/** * @FileName: UserService.java * @Author: [Your Name] * @Date: [Creation Date] * @Description: 该类用于处理用户相关业务逻辑,包括用户注册、登录、信息修改等操作。 */
-
方法注释:对每个公共方法,使用 Javadoc 风格注释,描述方法功能、参数含义、返回值等。例如:
/** * 计算两个整数的和 * @param a 第一个整数 * @param b 第二个整数 * @return 两个整数的和 */ public int add(int a, int b) { return a + b; }
-
代码块注释:对于复杂的代码逻辑块,添加注释解释代码的目的和实现思路。例如:
// 遍历数组,找到最大值 int max = array[0]; for (int i = 1; i < array.length; i++) { if (array[i] > max) { max = array[i]; } }
二、读《数学之美》有感
读《数学之美》“搜索引擎的工作原理” 章节有感
《数学之美》中 “搜索引擎的工作原理” 一章,彻底打破了我对 “复杂技术” 的认知 —— 原来支撑亿级用户使用的搜索引擎,核心竟是 “数学模型的简化与落地”,这给我的学习和编码带来了极大启发。
章节中提到,搜索引擎的核心问题是 “如何从海量网页中找到用户需要的信息”,而解决这一问题的关键,是两个看似简单的数学工具:布尔代数和向量空间模型。早期搜索引擎用 “布尔代数” 处理用户查询(如 “数学 AND 之美” 即筛选同时包含两个词的网页),后来为了优化 “相关性排序”,引入 “向量空间模型”—— 将每个网页和查询都转化为 “词频向量”,通过 “余弦相似度” 计算两者的匹配度,匹配度越高的网页排名越靠前。
这让我意识到:复杂问题的本质,往往可以用基础数学逻辑拆解。比如我之前觉得 “前端搜索框的关键词匹配” 很难实现,读完这一章后发现,其实可以用 “布尔代数 + 简单字符串匹配” 做基础版(筛选包含关键词的结果),再用 “词频统计” 做优化(关键词出现次数多的结果排前面)。这种 “从核心问题出发,用基础工具落地,再逐步优化” 的思路,完全可以迁移到编码中 —— 比如写 “学生成绩排序” 功能,先实现 “冒泡排序” 保证正确性,再根据数据量优化为 “快速排序”,而不是一开始就追求复杂算法。
更让我印象深刻的是,作者吴军强调 “搜索引擎的发展,是数学模型不断贴近实际需求的过程”。比如 “向量空间模型” 最初忽略了 “词的重要性差异”(如 “的”“是” 这类常用词和 “数学”“之美” 这类关键词权重相同),后来引入 “TF-IDF”(词频 - 逆文档频率)模型,给 “出现频率低但区分度高的词” 更高权重,让排序更准确。这启示我:编码不是 “一次性写对”,而是 “不断迭代优化”。
此外,章节中提到 “谷歌的 PageRank 算法”—— 通过 “网页被其他网页链接的数量和质量” 判断网页重要性,本质是 “图论中的矩阵迭代”。这让我明白:数学是跨领域的通用工具。无论是前端的 “路由跳转逻辑”(可用图论表示页面关系),还是后端的 “推荐系统”(用向量相似度推荐相似商品),都能找到数学模型的影子。今后我会更注重 “数学基础与编码的结合”,比如用 “概率统计” 优化 “用户行为分析” 功能,用 “集合论” 处理 “数据去重” 问题,让代码更有逻辑支撑,而非单纯 “堆砌功能”。
总而言之,这一章让我跳出了 “技术细节” 的局限,看到了 “数学思维” 对技术的指导意义 —— 复杂技术的核心是 “简单数学模型的落地”,而好的编码,就是 “用清晰的逻辑拆解问题,用合适的工具解决问题,再根据需求持续优化”。这种思维不仅适用于搜索引擎,更适用于我本学期的每一次编码实践。