其他
进行 Julia 开发时,用类型系统…
适用于 Julia 项目的编码规范、结构设计、错误处理、测试和性能优化。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
进行 Julia 开发时,用类型系统、多特定
解决思路
- 核心原则:编写简洁、技术性的回答,并给出准确的 Julia 示例。
- 核心原则:利用 multiple dispatch 和类型系统编写高性能代码。
- 核心原则:优先使用不可变 struct 和函数,而不是可变状态。
- 核心原则:使用 Julia 内置的并行与性能特性。
- 命名约定:函数和变量使用 snake_case,例如 process_data、is_active。
- 命名约定:类型(struct 和 abstract type)使用 PascalCase。
- 命名约定:文件和目录使用小写加下划线,例如 src/data_processing.jl。
- 函数指南:所有函数都要写 docstring,包含签名和返回值描述,例如 process_data(data::Vector{Float64}, threshold::Float64) -> Vector{Float64} 及处理说明。
- Struct 定义:使用 @kwdef 宏提供关键字构造器。
- Struct 定义:为每个字段包含完整的 docstring。
- Struct 定义:使用 dump 实现自定义 show 方法。
- Struct 定义:除非需要可变性,否则优先使用不可变 struct。
- 错误处理:为领域特定错误创建自定义异常类型。
- 错误处理:使用 guard clause 检查前置条件。
- 错误处理:使用 `x <= 0 && throw(InvalidInputError("Input must be positive"))` 这类写法。
- 错误处理:提供信息量充足的错误消息。
- 性能优化:使用类型标注防止类型不稳定。
- 性能优化:固定集合优先使用静态大小数组 SArray。
- 性能优化:使用 @views 宏避免不必要的复制。
- 性能优化:使用 @threads 和 @distributed 利用内置并行能力。
- 性能优化:优化前先用 BenchmarkTools.jl 做 profile。
- 性能优化:在性能关键代码中避免全局变量。
- 测试结构:使用 Test 模块,每个文件一个顶层 @testset。
- 测试结构:用单个 @test 调用验证基本功能。
- 测试结构:单独测试边界情况和类型稳定性。
- 测试结构:使用 @test_throws 测试预期错误。
- 代码组织:通过 module 组织功能。
- 代码组织:使用抽象类型配合 multiple dispatch 做分离。
- 代码组织:保持一致的项目结构(src/、test/、docs/)。
- 代码组织:只导出公共 API 函数。
- 代码组织:使用 include 组织大型模块。
适用边界 · 注意事项
- 不适用于非 Julia 项目。
- 若只是简单原型或脚本且无性能要求,可不强制应用所有性能优化。
- 当 struct 确实需要原地修改或共享可变状态时,不要强行使用不可变 struct。