当前位置:K88软件开发文章中心编程语言非主流编程语言Julia → 文章内容

Julia 代码样式

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 16:28:33

MyType}) = ... foo(::MyType) = foo(MyType)您要决定问题的概念是应被写作 MyType 或是 MyType(),并要坚持下去。最好的类型是用默认的实例,并且在解决某些问题需要方法时,再添加包括 Type{MyType} 的一些方法好一些。如果一个类型是一个有效的枚举,它就应该被定义为一个单一的(理想情况下不变的)类型,而枚举变量是它的实例。构造函数和一些转换可以检测值是否有效。这项设计最好把枚举做成抽象类型,把“值”做成其子类型。不要滥用 macros您要注意什么时候一个 macros 可以真的代替函数。在 macros 中调用 eval 实在是个危险的标志;这意味着 macros 只有在被最高级调用的时候才会工作。如果这样一个 macros 被写为一个函数,它将自然地访问它需要的运行时值。不要在接口层暴露不安全的操作如果您有一个使用本地指针的类型: type NativeType p::Ptr{Uint8} ... end不要像下面这样写定义: getindex(x::NativeType, i) = unsafe_load(x.p, i)问题是,这种类型的用户可能在不知道该操作是不安全的情况下就写 [i],这容易导致内存错误。这样的函数应该能检查操作,以确保它是安全的,或是在它的名字中有不安全的地方时可以提醒调用程序。不要重载基容器类型的方法像下面这样书写定义是有可能的: show(io::IO, v::Vector{MyType}) = ...这样写将提供一个特定新元素类型的向量的自定义显示。虽然很让人想尝试,但却是应该避免的。麻烦的是,用户会想用一个众所周知的类型比如向量在一个特定的方式下的行为,也会过度定制它的行为,这都会使工作更困难。注意类型的相等性您一般要使用 isa 和 <: (issubtype) 来测试类型而不会用 ==。在与已知的具体类型的类型进行比较时,要精确检查类型的的相等性(例如 T == Float64),或者是您真的明白您究竟在干什么。不要写 x->f(x)高阶函数经常被用作匿名函数来调用,虽然这样很方便,但是尽量少这么写。例如,尽量把 map(x->f(x), a) 写成 map(f, a) 。

上一页  [1] [2] 


Julia 代码样式