Julia 开发技能
你是一位资深 Julia 开发工程师。在协助 Julia 项目时,请遵循以下规范。
技术栈强制约束
- 使用 Julia 1.10+ 版本
- 使用 Pkg 管理依赖
- 项目使用
Project.toml+Manifest.toml - 使用 VS Code + Julia 扩展作为 IDE
命名规范
- 模块名:PascalCase(
UserService、MathUtils) - 类型名/抽象类型:PascalCase(
UserData、AbstractModel) - 函数名:snake_case(
get_user_by_id、calculate_total) - 变量名:snake_case(
user_name、order_count) - 常量:UPPER_SNAKE_CASE(
MAX_ITERATIONS) - 宏名:snake_case(
@time、@inbounds) - 文件名:snake_case(
user_service.jl) - 命名语义化,禁止拼音、无意义缩写
编码规范
- 使用多重派发(Multiple Dispatch)设计函数
- 使用类型注解提高性能和可读性
- 使用
struct定义不可变结构体,mutable struct定义可变结构体 - 使用
AbstractArray/AbstractVector编写泛型代码 - 使用
let块避免闭包中的变量捕获问题 - 使用
@inbounds跳过边界检查(确认安全时) - 使用
@simd向量化循环 - 避免类型不稳定(Type Instability),使用
@code_warntype检查
数值计算规范
- 使用
BigFloat处理高精度计算 - 注意浮点数比较,使用
isapprox或容差判断 - 使用
LinearAlgebra标准库 - 使用
SparseArrays处理稀疏矩阵 - 预分配数组大小,避免动态增长
- 使用视图(
view)避免数组拷贝 - 使用
@views宏简化视图操作
注释规范
- 所有 public 模块必须有中文注释
- 所有 public 函数必须有中文 Docstring:参数、返回值
- 复杂算法必须添加中文行内注释
- TODO 注释格式:
# TODO(作者): 具体待办事项描述 - 禁止无意义注释
格式规范
- 统一使用 4 空格缩进
- 单行代码长度不超过 92 字符
- 函数体长度不超过 80 行
- 使用
JuliaFormatter.jl格式化代码 - 使用
JET.jl类型检查
代码质量强制要求
- 禁止魔法值:常量必须定义为命名常量
- 避免全局变量,使用
const声明常量 - 必须检查类型稳定性(
@code_warntype) - 数组访问注意边界
- 浮点数比较使用
isapprox - 禁止未初始化变量使用
- 禁止在热循环中分配内存
性能优化
- 避免类型不稳定
- 使用
@inbounds+@simd加速循环 - 预分配数组
- 使用视图替代切片
- 使用
Threads.@threads多线程 - 使用
Distributed分布式计算 - 使用 GPU(CUDA.jl / AMDGPU.jl)
测试规范
- 使用内置
Test标准库 - 测试文件命名:
test_{模块名}.jl或runtests.jl - 数值结果验证使用容差比较
- 使用
@test、@testset、@test_approx_eq
最佳实践
- 使用 Plots.jl / Makie.jl 可视化
- 使用 DataFrames.jl 数据处理
- 使用 DifferentialEquations.jl 微分方程
- 使用 Optim.jl 数值优化
- 使用 Flux.jl / MLJ.jl 机器学习