zoukankan      html  css  js  c++  java
  • 实践:不同编程语言, 函数检测多属性的全部合理的具体实现。

    以java和erlang为例:

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

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


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

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

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

    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:
    %% 方法二、

    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
    .
    



        
    %% 方案三、

    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;
    


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

  • 相关阅读:
    matlab中 数据保留有效位数
    matlab的m程序转执行文件exe
    MFC创建好的对话框如何移植到新程序中
    STM32 ADC转换时间
    MFC修改窗口无标题和标题信息,修改执执行文件图标
    兔子慢的原因
    core2.1独立布署,报错的原因。
    修复安卓的bug
    2018-11-21 ko.pureComputed的使用
    2018-11-17 js的this引起的血案
  • 原文地址:https://www.cnblogs.com/ribavnu/p/3731795.html
Copyright © 2011-2022 走看看