小技巧让你的 if else 看起来更漂亮

刚看到一个提问帖: 《如果程序中出现多层嵌套的 if...else...语句,如何重构可使程序逻辑变得更为清晰易读?》,因回答篇幅比较大,单独开个帖子答一下。

个人喜好代码风格不一样,下面只是我认为好的代码风格,不喜勿喷。如果有其他好的技巧,欢迎分享补充。

技巧一

删除 else

如:

function test($arg){
    if($arg == 'foobar'){
        return true;
    }else{
        return false;
    }}

尽量写成这样

function test($arg){
    if($arg == 'foobar'){
        return true;
    }

    return false;}

优先将代码量少,可使流程中断的代码块(return, throw excetion, continue ...)放到 if 中, 提前中断代码。

技巧二

拆分为多个函数

如果整个 if else 中的代码比较多,或者 if 与 else 中带代码不会导致后面的判断流程中断,并且还有 if else 之外的代码,将就 if else 中的代码拆分为多个函数。

if($age > 18){
    doSomeThingA();
    doSomeThingB();
    doSomeThingC();}else{
    doSomeThingD();
    doSomeThingE();}

这种方式需要将函数名取的尽量清晰易懂,不要嫌长。

技巧三

罗列规则式的写代码

多层 if 嵌套的语法,把他写成线性的,就像写规则一样将其一条条罗列出来

如:

function match($age, $salary, $pretty){
    if($age > 18){
         // do some thing A;        if($salary > 5000){
            // do some thing B;            if($pretty == true){
                return true;
            }
        }
    }

    return false;}

改写成这样是不是清晰多了?

function match($age, $salary, $pretty){
    if($age < 18){
        return false;
    }

    // do some thing A;
    if($salary < 5000){
        return false;
    }

    // do some thing B;
    return $pretty == true;}

总结

少用 else , 提前中断(return)!!!

少用 else , 提前中断(return)!!!

少用 else , 提前中断(return)!!!

重要的事情说三遍!

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据钻研

一个基于Java的开源URL嗅探器

这是一个可以检测并规范化文本中的URL地址的Java库。 ? 今天,我们很高兴做一个分享,因为我所在的 Linkedin 公司 开源了我们做的一个ULR探测工具...

40111
来自专栏我是攻城师

Solr竞价排名之ExternalFileField使用

2949
来自专栏性能与架构

Actor模型是做什么的?

问题 用户A的操作 (1)开始事务 (2)操作资源1 (3)操作资源2 (4)提交事务 用户B的操作 (1)开始事务 (2)操作资源2 (3)操作资源1...

3204
来自专栏逸鹏说道

Python3 与 C# 扩展之~模块专栏

代码裤子:https://github.com/lotapp/BaseCode/tree/maste

1865
来自专栏FreeBuf

Gadget构造:从JIT-ROP到对抗XnR

写在前面 简单地说,本文介绍了两种构造gadget的思路。(在浏览器支持JIT的情况下) 演进:关于JIT-ROP 我们知道,最初DEP的出现是为了对抗的栈溢...

3424
来自专栏Crossin的编程教室

【每周一坑】注册表单验证

长假过后,大家都缓过神来了吗?在这里祝大家上班快乐~ 今天来个应用题。在使用各种网站和应用时,少不了要注册账号,这种注册表单大家应该屡见不鲜了吧。 ? 一般这些...

3445
来自专栏逆向技术

逆向知识第十讲,循环在汇编中的表现形式,以及代码还原

        逆向知识第十讲,循环在汇编中的表现形式,以及代码还原 一丶do While在汇编中的表现形式 1.1高级代码: #include "stdafx...

1998
来自专栏Crossin的编程教室

Python 抓取网页乱码原因分析

在用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码。 发生这种情况的最大可能性就是编码问题:运行环境的字符编码和网页的字符编码不一致。 ...

3556
来自专栏Golang语言社区

使用Go语言框架进行web开发笔记

前言 关于golang的web开发有不少框架,例如 martini, gin, revel,gorilla等。 之前玩过revel,感觉封装的太多了,作为一个小...

4127
来自专栏阮一峰的网络日志

代码覆盖率工具 Istanbul 入门教程

测试的时候,我们常常关心,是否所有代码都测试到了。 这个指标就叫做"代码覆盖率"(code coverage)。它有四个测量维度。 行覆盖率(line co...

3344

扫码关注云+社区