用switch语句增强程序的可读性探讨
时间:2014-07-21 23:55 来源: 我爱IT技术网 作者:山风
一个简单的网页 程序 架构,不外乎一个进入点及一个输出点,由上到下一个很单纯的流程。
在数据验证上也是一个接一个,但却数量多的时候,却会让整体流程看起来很复杂,很不直觉。
一个基本 switch 的撰写方法,用在代替有结构的 IF 时还蛮放便的。
- <?php
- switch ($_GET['type']) {
- // 当 $_GET['type']=="apple" 时进入程序片段
- case "apple":
- //程序片段...
- break;
- // 当 $_GET['type']=="bar" 时进入程序片段
- case "bar":
- //程序片段...
- break;
- // 当以上都不符合,默认进入程序片段
- default :
- //程序片段...
- break;
- }
- ?>
这个例子,将判断式移到 case 上,让原本的 switch 更加弹性,但这不是主要目的,在 switch 里主要的好处是可以利用 break 跳出流程,这样的用法跟 function 很像,利用跳出的方式结束剩下的程序,在区块中检查到错误的数入参数时,直接丢出信息并让输出程序去处理显示的问题。
- <?php
- switch (true){
- case ($_GET['type']=='view'):
- //其他判断或动作...
- break;
- case ($_GET['action']=='delete'):
- //其他判断或动作...
- break;
- case ($_GET['action']=='add'):
- //标题检查
- $title=trim($_GET['title']);/*去除头尾空白*/
- $title=htmlspecialchars($title,ENT_QUOTES);/*HTML 跳脱*/
- $title=mb_substr($title, 0, 100);/*100字剪裁*/
- if(!$title){ //利用 if 判断,错误则跳出 switch
- // 列出错误信息
- break;
- }
- //信息检查
- $msg=trim($_GET['msg']);/*去除头尾空白*/
- $msg=htmlspecialchars($msg,ENT_QUOTES);/*HTML 跳脱*/
- $msg=mb_substr($msg, 0, 1000);/*1000字剪裁*/
- if(!$msg)){ //利用 if 判断,错误则跳出 switch
- // 列出错误信息
- break;
- }
- //其他判断或动作...
- break;
- default :
- // 列出错误信息
- break;
- }
- ?>
再看看如果用 IF 去处理输入验证时,必须将所有数据先做处理,后面再一个一个去判断,在阅读上很不直觉,如果中间有大量的输入参数要处理时,会让人找很久。
- <?php
- if($_GET['type']=='view'){
- //其他判断或动作...
- }elseif($_GET['action']=='delete'){
- //其他判断或动作...
- }elseif($_GET['action']=='add'){
- //标题检查
- $title=trim($_GET['title']);/*去除头尾空白*/
- $title=htmlspecialchars($title,ENT_QUOTES);/*HTML 跳脱*/
- $title = mb_substr($title, 0, 100);/*100字剪裁*/
- //信息检查
- $msg=trim($_GET['msg']);/*去除头尾空白*/
- $msg=htmlspecialchars($msg,ENT_QUOTES);/*HTML 跳脱*/
- $msg = mb_substr($msg, 0, 1000);/*1000字剪裁*/
- if(!$title){
- // 列出错误信息
- }elseif(!$msg){
- // 列出错误信息
- }else{
- //其他判断或动作...
- }
- break;
- }else{
- // 列出错误信息
- }
- ?>
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
