当前位置: 首页 > news >正文

算法第一次作业

1.代码规范:

目的:
为提高代码可读性、可维护性与一致性,减少错误与沟通成本,制定统一的代码规范,适用于团队所有项目与语言(需按具体语言细化)。

一般原则
一致性:团队内风格一致优先于个人喜好。
可读性优先:代码应像写给下一位维护者一样清晰。
小而单一职责:函数/方法应短小、职责单一。
遵循 KISS / YAGNI / DRY:保持简单、避免过早实现未使用功能、避免重复。
先写测试(可选):关键逻辑应有自动化测试覆盖。

文件与项目结构:
项目结构清晰:按功能或层次划分目录(如 src/, tests/, docs/, scripts/)。
模块化:每个模块职责单一,暴露明确接口。
配置分离:环境配置(数据库、密钥等)不应硬编码,使用配置文件或环境变量。
忽略敏感文件:使用 .gitignore / 等价工具排除临时文件、编译产物、密钥。

命名规范:
统一风格(视语言而定):
变量/函数:使用驼峰或下划线一致(例如 userCount 或 user_count)。
类/类型:首字母大写(如 UserService)。
常量:全大写带下划线(如 MAX_RETRIES)。
语义化命名:名称应表达用途,避免缩写或模糊词(如 data, tmp 除非临时使用)。
布尔命名:以 is/has/can/should 开头(如 isActive)。

编码风格:
缩进与行长:统一缩进(空格或制表符),推荐使用 4 空格;行长限制在 80–120 字符。
空行与分组:逻辑上分段,用空行分隔不同逻辑块。
注释风格:文档注释用于模块/函数接口;内联注释用于说明“为什么”,不要解释显而易见的“如何”。
代码格式化:使用自动格式化工具(如 Prettier、clang-format 等),提交前格式化代码。

函数与方法:
单一职责:每个函数只做一件事。
参数控制:参数少于 4 个;若超过,考虑使用对象/参数对象或重构。
返回明确:避免多种返回类型或通过副作用返回重要结果。
错误处理:明确抛出或返回错误,统一使用异常或错误码风格。

变量与内存:
最小作用域:变量作用域尽可能小,及时释放资源。
不可变优先:优先使用不可变数据结构或常量,减少副作用。
资源管理:打开的文件/连接/句柄需及时关闭或使用上下文管理(如 try-with-resources)。

异常与错误处理:
不要吞掉异常:捕获后至少记录或重新抛出。
统一错误策略:明确何时返回错误码、何时抛出异常。
错误消息有意义:日志中包含足够上下文(但不暴露敏感信息)。

日志与监控:
合理日志级别:使用 DEBUG/INFO/WARN/ERROR 级别,避免过多 INFO。
结构化日志:优先输出结构化/可解析格式(JSON)。
不在日志中写敏感信息:如密码、密钥、隐私数据需脱敏或避免记录。

测试:
覆盖关键逻辑:单元测试、集成测试覆盖核心功能与边界情况。
可重复与无状态:测试应可独立运行且结果确定。
CI 自动化:提交合并前在 CI 上运行测试套件。

性能与安全:
先正确再优化:先保证正确性,再做必要的性能优化并记录原因。
避免过早优化:用实际数据分析热点再优化。
输入验证与防护:对所有外部输入做校验,防止注入/溢出等问题。
依赖管理:定期更新依赖并及时修复安全漏洞。

接口与文档:
明确接口契约:函数/模块的输入输出、错误类型应文档化(注释 + README)。
API 语义稳定:对外接口变更需语义版本控制与通知。
README 要有用:包含项目目的、快速上手、运行与测试命令、配置说明。

代码审查(Code Review):
必审原则:所有合并请求需至少一位审查者通过。
审查重点:可读性、正确性、安全性、测试覆盖、依赖变更。
小提交、频繁合并:避免巨大的单次提交,便于审查与回滚。

提交与版本控制:
原子提交:每次提交做一件逻辑改动。
有意义的提交信息:简明描述“做了什么、为什么要做”。
分支策略:采用统一分支模型(如 Gitflow、 trunk-based),并在 PR 描述中写明目的与影响。

第三方库与许可:
谨慎引入库:优先考虑成熟、轻量、活跃维护的库。
检查许可:确认许可证与项目使用兼容。
限制依赖范围:避免因单一小功能引入大量依赖。

国际化与本地化:
文本分离:界面/提示文本应与代码分离,便于翻译。
时区/格式处理:处理时间、数字、货币时使用库并考虑区域差异。

隐私与合规:
最小化数据采集:仅收集必要用户数据,符合法规(如 GDPR)。
加密敏感数据:传输与存储敏感数据时使用加密。
访问控制:严格控制密钥与凭据的访问权限。

例外与扩展:
语言/框架特定规则:在通用规范基础上,补充具体语言或框架的最佳实践(如 Python PEP8、Java 的代码风格、JS ESLint 规则)。
定期回顾:每 6–12 个月回顾并更新规范以适应新需求或工具。

2.读《数学之美》第六章有感
粗略读了《数学之美》第 6 章关于 “信息的度量和作用” ,不敢说吃透,但却彻底颠覆了我对 “信息” 的朴素认知。原来信息不是模糊的 “内容多少”,而是能用数学精确量化的概念 —— 香农提出的 “熵”,把信息和不确定性牢牢绑定,比如 “明天太阳从东方升起” 因确定性高而熵值低,“明天是否下雨” 因不确定而熵值高。
这一章最让我触动的是理论与现实的连接:从衡量语言冗余度,到指导数据压缩、密码学设计,抽象的数学公式竟成了信息时代的 “度量衡”。它让我明白,真正的数学之美,在于用简洁逻辑解开复杂现实的密码,也让我更懂为何看似遥远的理论,能支撑起我们每天使用的通信与技术。

http://www.hskmm.com/?act=detail&tid=27017

相关文章:

  • C++_高阶
  • 使用Quarkus构建首个Keycloak MCP服务器实战指南
  • AI数据管道同步引擎技术解析
  • 几个重要的偏微分方程(三)
  • 树状数组求逆序数原理_杂谈
  • 20232427 2025-2026-1 《网络与系统攻防技术》实验一实验报告
  • 墨西哥证券交易所(BMV)等多个交易所股票数据API对接文档
  • Kubernetes技术详解-从理论到实践-(5)-控制器-Deployment - 详解
  • P5664 [CSP-S2019] Emiya 家今天的饭 题解
  • PWN手的成长之路-11-CISCN 2019华北 PWN1-栈溢出
  • sensitive-word:一个简单易用的敏感词过滤框架
  • 回归学习——包机制
  • vue 组件的常见8种通信方式
  • vue一键安装
  • 如何使用 ManySpeech 调用 SenseVoiceSmall 模型
  • 维基框架 (Wiki Framework) v1.1.2 | 企业级微服务开发框架
  • 国庆假期总结
  • CF1738E Balance Addicts
  • 2025浇注型聚氨酯厂家最新推荐榜:聚氨酯胶黏剂/聚氨酯胶辊/聚氨酯制品/聚氨酯原料/液体聚氨酯/聚氨酯浇注料/聚氨酯ABC料/浇筑聚氨酯/聚氨酯预聚物全场景实力厂家
  • C语言设计模式-策略模式
  • 动态张量运算自动优化技术解析
  • 【PhysUnits】15.9 引入P1后的右移运算(shr.rs) - 详解
  • 10. 模型与视图
  • [KaibaMath]1004 关于f(x,y) = [x]+[y] - [x+y]的平移稳定性
  • Mac OS 问题与技巧
  • 《算法设计与分析》第一章学习记录
  • nestjs 和 nextjs 分别是做啥的
  • 定时收集TCM数据并生成Excel报表并上传
  • 2025.10 国庆集训模拟赛总结
  • 详细介绍:https和http有什么区别-http各个版本有什么区别