以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->casecheckEmail(UEmail)of ok->case checkPass(UPass)of                 ok->case checkSex(USex)ofok->case ofok->case checkMoney(UMoney)ofok->   case checkOwn(UOwn)ofok->    ok;error-> error end;error-> errorend;error-> errorend;error-> errorend;error->error end;error->errorend;error->errorend
.

%% 方案三、

regist(UName,UEmail,UPass,USex,UMoney,UOwn)->NameResult = checkName(UName),%% 返回值:0,1EmailResult =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;

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

转载于:https://www.cnblogs.com/ribavnu/p/3731795.html

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

  1. json数据解析_VBA 实践指南 -- Split函数解析Json数据

    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...

  2. R语言stringr包str_detect函数检测字符串中模式存在与否实战

    R语言stringr包str_detect函数检测字符串中模式存在与否实战 目录 R语言stringr包str_detect函数检测字符串中模式存在与否实战 #导入stringr包

  3. R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战

    R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录

  4. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)

    文章目录 一.头文件定义 1.头文件导入限制 2.兼容 C++ 语言 3.函数形参输入输出属性 4.代码示例 一.头文件定义 1.头文件导入限制 头文件导入限制 : 防止头文件多次导入 , 将头文件的 ...

  5. 学习旧岛小程序 (5) observer 函数中修改属性的值

    不要在一个属性的 observer  函数中修改属性的值 不然会造成内存泄露 错误代码: properties: {/* 期刊号 */index: {type: String,observer: fu ...

  6. python装饰器原理wraps(method)(self)_python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变...

    Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...

  7. OpenCV实践之路——人脸检测(C++/Python) 【转】

    转自:http://blog.csdn.net/xingchenbingbuyu/article/details/51105159 版权声明:本文为博主原创文章,转载请联系作者取得授权. 本文由@星沉 ...

  8. js函数的内部属性---arguments,callee,caller

    在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: ...

  9. Angular set函数和Component属性的命名冲突问题

    set函数和Component属性名称不能重复,可以把Component属性加上下划线,暗示其是私有属性,然后通过公有的set来管理. 更多Jerry的原创文章,尽在:"汪子熙":

最新文章

  1. Centos 7.4 中http-2.4 的基本实现和 https 的实现
  2. 根据空间线上的两点生成圆柱体 算法
  3. python 微信爬虫_python3简单实现微信爬虫
  4. Get Started with Field Service
  5. python生成报告_python生成测试报告
  6. 在VS2003中以ClassLibrary工程的方式管理Web工程.
  7. Qt配置VS2017
  8. 北京师范大学新生入学计算机考试内容,北京师范大学
  9. 谁能制约云厂商滥用开源,谁来帮助开源软件作者?
  10. Python编程及应用师资研修班--昆明
  11. virtual关键字的使用(C# 参考)
  12. 【源代码】Image Deformation Using Moving Least Squares算法的实现
  13. 排序算法-快速排序(入门)
  14. 【RDMA】文档和教程和相关知识
  15. 对象存储介绍(腾讯云cos)
  16. 我的深圳真实驾考经历
  17. unity3d 注册表 Regedit
  18. 微信小程序开发工具报错对应的服务器证书无效
  19. CSR、SSR、SPA是什么
  20. python爬虫:利用BeautifulSoup爬取链家深圳二手房首页的详细信息

热门文章

  1. Go实战--二维码生成server
  2. Python教程-python字典中key的灵活使用fromkeys()
  3. struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  4. Service onStartCommand 返回值
  5. 这个星期压力貌似比较大啊!
  6. Windows Server 2016-Hyper-V HNV 新增功能
  7. Javascript二进制运算符的一些运用场景
  8. 即时通信(IM)和实时通信(RTC)的区别
  9. SVN服务器搭建详解
  10. efs解密-Advanced EFS Data Recovery2.1-含注册KEY