首页 > 代码库 > 实践:不同编程语言, 函数检测多属性的全部合理的具体实现。
实践:不同编程语言, 函数检测多属性的全部合理的具体实现。
以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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。