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

简介: 以java和erlang为例: ①、java:面向对象 且 存在return。 ②、erlang: 函数性编程  不存在return   %% 模拟检测 多个输入信息是否合理,只要有一个不合理,则返回。

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

 


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

相关文章
|
7月前
|
存储 编译器 Go
Go 语言内置类型全解析:从布尔到字符串的全维度探究
Go 语言内置类型全解析:从布尔到字符串的全维度探究
52 0
|
1月前
|
安全 编译器 程序员
【C++ 泛型编程 高级篇】C++ 编程深掘:静态成员函数检查的艺术与实践
【C++ 泛型编程 高级篇】C++ 编程深掘:静态成员函数检查的艺术与实践
64 0
|
2月前
火山中文编程 -- 类、方法、参数
火山中文编程 -- 类、方法、参数
145 0
|
9月前
Threejs入门进阶实战案例(6):对象的通用属性/函数
Threejs入门进阶实战案例(6):对象的通用属性/函数
30 0
|
4月前
|
人工智能 测试技术 Python
软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换
软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换
36 0
|
6月前
|
存储 前端开发 JavaScript
前端基础 - JavaScript高级应用(用变量操纵函数)
前端基础 - JavaScript高级应用(用变量操纵函数)
25 0
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法1
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法1
41 0
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法1
|
8月前
|
前端开发
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法2
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法2
39 0
前端学习笔记202306学习笔记第三十八天-封装检测数据类型得方法2
|
存储 程序员 编译器
C#编程深入研究变量,类型和方法(二)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(二)
|
存储 安全 编译器
C#编程深入研究变量,类型和方法(一)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(一)