实践:不同编程语言, 函数检测多属性的全部合理的具体实现。

以java和erlang为例:

①、java:面向对象 且 存在return。

②、erlang: 函数性编程  不存在return

 


%% 模拟检测 多个输入信息是否合理,只要有一个不合理,则返回。

%% 举例:UName,UEmail,UPass,USex,UMoney,UOwn.
%% 以上述描述的顺序为检测的优先级,检测函数: 以check为前缀 加 要检测的属性名字。

 

%% java:存在return,直接使用return。
%% 方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
regist(UName,UEmail,UPass,USex,UMoney,UOwn)
 
{
 
    if(!checkName(UName))
    {
        return ;
    }
 
    if(!checkEmail(UEmail))
    {
        return ;
    }
 
    if(!checkPass(UPass))
    {
        return ;
    }
 
    if(!checkSex(USex))
    {
        return ;
    }
 
    if(!checkMoney(UMoney))
    {
        return ;
    }
 
    if(!checkOwn(UOwn))
    {
        return ;
    }
}

 



%% 在erlang中不存在return:
%% 方法二、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
regist(UName,UEmail,UPass,USex,UMoney,UOwn)->
    case checkName(UName)
    of
        ok->
             
            case
                checkEmail(UEmail)
            of
                ok->
                    case checkPass(UPass)
                    of                 
                    ok->
                        case checkSex(USex)
                        of
                        ok->
                            case
                            of
                                ok->
                                    case checkMoney(UMoney)
                                    of
                                        ok->
                                            case
                                                checkOwn(UOwn)
                                            of
                                                ok->
                                                    ok;
                                                error->
                                                    error
                                            end
                                        ;
                                        error-> error
                                    end
                                ;
                                error->
                                    error
                            end
                        ;
                        error-> error
                        end
                    ;
                    error->error
                    end
                ;
            error->
                error
            end
            ;
        error->error
    end
.

 



    
%% 方案三、

1
2
3
4
5
6
7
8
9
10
11
12
13
regist(UName,UEmail,UPass,USex,UMoney,UOwn)->
    NameResult = checkName(UName),%% 返回值:0,1
    EmailResult =checkEmail(UEmail,NameResult),
    PassResult = checkPass(UPass,EmailResult),
    SexResult = checkSex(USex,PassResult),
    MoneyResult = checkMoney(UMoney,SexResult),
    checkOwn(UOwn,MoneyResult).
     
%% 通过名字验证后才能进行邮箱验证,否则直接放回名字验证的结果。
checkEmail(UEmail,1)->
    Result;
checkEmail(UEmail,NameResult)->
    NameResult;

 


    
%% 猜测:方案三可能比方案二慢.
%% 确定: 方案三的可读性远远超过于方案二.
%% 缺陷:方案三的函数 比 方案二的增加了参数。
%% 实践:需要检测方案二 和 方案三 的 可行性 和 效率

实践:不同编程语言, 函数检测多属性的全部合理的具体实现。,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。