第一周作业
一、本学期主要编码规范
(一)通用核心原则
遵循 “可读性、一致性、安全性、可维护性” 四大目标,所有规范落地均以降低协作成本、保障系统稳定为核心。具体包括:
-
可读性优先:代码需让他人或 3 个月后的自己快速理解,拒绝 “天书式” 命名与无意义注释。
-
一致性至上:团队内统一风格,通过 Pylint、ESLint 等工具强制执行,杜绝个人风格差异。
-
最小权限原则:函数 / 类仅承担单一职责,变量访问权限严格控制(如非必要不设 public 属性)。
-
安全性前置:编码阶段规避空指针、SQL 注入等风险,而非依赖后续测试。
(二)具体实践规范
- 代码格式(强制要求)
-
缩进:统一使用 4 个空格,禁止混合空格与 Tab。
-
空格:保留字与括号间加空格(如
if (x > 0)
),二元运算符两侧加空格(如a = b + c
),行尾无多余空格。 -
换行:单行不超过 120 字符,函数参数换行时逗号与前内容同行,后续行多缩进 4 个空格。
-
空行:类内成员间留 1 个空行,函数内逻辑分组用空行分隔,避免多空行堆砌。
- 命名规则(语言通用)
元素类型 | 规范要求 | 示例 |
---|---|---|
类 / 接口 | 大驼峰,名词短语 | UserRepository |
方法 / 变量 | 小驼峰,方法用动宾短语 | getUserId() |
常量 | 全大写 + 下划线 | MAX_RETRY_COUNT |
包 / 数据库字段 | 全小写 + 下划线 | com.company.order |
- 注释规范
-
单行用
//
,多行注释需对齐星号(如/* 第一行\n * 第二行 */
)。 -
公共类 / 方法必须加 Javadoc(含功能、参数、返回值),避免逐行注释与冗余说明。
-
禁止注释语法细节或第三方库用法,聚焦业务逻辑与设计思路。
- 语言特性规范
-
变量:需用时声明并初始化,一次只声明一个变量,优先用局部变量。
-
函数:长度控制在 50 行内,参数不超过 6 个(超则用对象封装),避免深层嵌套。
-
特殊要求:Java 禁用 import 通配符,Python 优先用
const
/let
替代var
,C++ 用智能指针管理内存。
- 协作规范
- Git 提交:高频细粒度提交,描述清晰(如 “fix: 修复用户登录空指针问题”),master 分支仅用于发布。
二、《数学之美》读后感 —— 以 “搜索引擎的数学原理” 章节为例
(一)章节核心内容
该章节揭示搜索引擎的底层逻辑并非复杂工程堆砌,而是基于数学模型的优雅实现:
-
布尔代数与检索基础:通过 AND/OR/NOT 逻辑将用户查询转化为数学表达式,快速筛选匹配文档,这是早期搜索引擎的核心骨架。
-
向量空间模型与相关性排序:将文档与查询都转化为高维向量,通过余弦相似度计算二者关联度 —— 这一突破让搜索从 “有没有” 升级为 “好不好”。
-
PageRank 算法:借助图论中 “随机游走” 模型评估网页重要性,解决了 “如何信任网页内容” 的核心问题,奠定谷歌搜索的技术优势。
(二)感想与体会
-
“简单数学解决复杂问题” 的震撼此前总认为搜索引擎是海量代码与服务器的产物,却不知其核心是布尔代数、线性代数等基础数学工具的精妙应用。例如余弦相似度,本质是初中 “向量夹角” 概念的延伸,却能精准量化文本相关性。这让我意识到:顶尖技术的本质是将现实问题抽象为数学模型的能力,而非追求炫技式的复杂实现。
-
对编码实践的启发章节中 “PageRank 算法忽略网页内容,仅通过链接关系评估重要性” 的设计,完美诠释了 “单一职责原则”—— 这与编码规范中 “函数只做一件事” 的逻辑高度契合。联想到本学期编码时,曾为追求 “多功能” 写过长函数,导致调试困难。如今明白:如同数学模型的简洁性保障了搜索引擎的高效,代码的模块化与单一职责才是可维护性的基石。
-
技术认知的升维书中提到 “谷歌用 30 行代码实现 PageRank 核心逻辑”,这打破了我对 “复杂系统需复杂代码” 的固有认知。结合编码规范中的 “避免重复造轮子” 原则,更深刻理解:真正的技术高手是能看透问题本质、复用基础数学与工程原则的人,而非沉迷于语法细节的 “码农”。未来学习中,我将更注重数学基础与问题抽象能力的培养,而非仅关注编程语言的表层特性。