命名转换功能

时间:2010-06-05 22:19:54

标签: language-agnostic naming-conventions

转换的哪种命名惯例在大多数语言中都是标准的?

convert_from_typea_to_typeb(arg)

convert_to_typeb_from_typea(arg)

还是有其他标准吗?

4 个答案:

答案 0 :(得分:2)

我要在这里使用OO方法,(在相关命名空间中)有一个Convert类,其中包含一堆重载To<TypeName>,如下所示:

public class Convert
{
    public Foo ToFoo(Bar instance);
    public Foo ToFoo(Baz instance);
    public Bar ToBar(Foo instance);
    public Bar ToBar(Baz instance);
    public Baz ToBaz(Foo instance);
    public Baz ToBaz(Bar instance);
}

public class Convert { public Foo ToFoo(Bar instance); public Foo ToFoo(Baz instance); public Bar ToBar(Foo instance); public Bar ToBar(Baz instance); public Baz ToBaz(Foo instance); public Baz ToBaz(Bar instance); }

补充因为php专门进入了对话;你不能真正在PHP中“重载”,但有一种方法可以做到:

class ConversionException extends Exception { }

class Convert
{
    public static function ToFoo($instance)
    {
        $from_type = get_class($instance);
        $my_convert_method = $from_type . 'ToFoo';

        if (method_exists(__CLASS__, $my_convert_method))
        {
            return self::$my_convert_method($instance);
        }
        else
        {
            throw new ConversionException(sprintf('Cannot convert %s to Foo.', $from_type));
        }
    }

    protected static function BarToFoo(Bar $instance)
    {
        /* conversion implementation here */
    }
    protected static function BazToFoo(Bar $instance)
    {
        /* conversion implementation here */
    }
    /* you get the point */
}

答案 1 :(得分:1)

我的答案,纯粹是主观的,将是从源头到目的地的逻辑流动。

ConvertStringToInt()

ConvertVisitorToCustomer()

答案 2 :(得分:0)

我想在C(++)中你可以使用强制转换运算符,所以这些名称都不适合。

在Objective-C中我见过类似NSPointFromCGPoint(...)的东西,或者你只是在构造函数中给出旧类型。

我唯一看到非常的东西很少是那些带有convert_x_to_y的函数: - )

答案 3 :(得分:0)

这种事情没有跨语言标准。大多数语言都提供了内置的方法(C / C ++)或鼓励你找到另一种方法(Java / C#)。

在大多数面向对象的语言中,您不应该需要这种功能。您应该尝试重新构建程序,这样您就不需要进行任何明确的转换。

但是,如果你真的需要这样做,我会说在开始时删除“转换”并执行<source>_to_<target>。示例:string_to_intint_to_floatfoo_to_bar等。(当然,无论您的语言更喜欢哪种情况,请写下这些内容。例如,在C#中:StringToInt;在JavaScript中: stringToInt。)