實踐:不同編程語言, 函數檢測多屬性的全部合理的具體實現。


以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;

 


    
%% 猜測:方案三可能比方案二慢.
%% 確定: 方案三的可讀性遠遠超過於方案二.
%% 缺陷:方案三的函數 比 方案二的增加了參數。
%% 實踐:需要檢測方案二 和 方案三 的 可行性 和 效率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM