zoukankan      html  css  js  c++  java
  • 细节决定品质:不良的if/else使用习惯

    代码重构无处不在,重点滴做起。经常见到一些下面这样的代码:


    1、不要拿bool和false直接比
    if (false == IsXXX())
    {
    }

    这是画蛇添足,费力不会讨好,直接了当即可:if (!IsXXX())


    2、太多的if/else嵌套,导致过多缩进,造成眼花缭乱,阅读困难
    if ()
    {
        if ()
        {
            if ()
            {
                if ()
                {
                    if ()
                    {
                    }
                    else
                    {
                    }
                }
            }
        }
    }

    这个时候应当考虑提取成函数调用,以减少直接的if/else嵌套层次。同理,while/for也应当避免这种情况。


    3、if代码块过长,else代码块仅两三行,典型的头得脚本,造成阅读困难
    if (A == B)
    {
        // 超过一屏的代码行
        // 代码行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
    }
    else
    {
        // 两三行代码
        // 代码行1
        // 代码行2
        // 代码行3
    }

    由于if代码块超过了一屏,会大大增加阅读代码的困难,特别是要找到if对应的else时,不得不非常小心。建议遇到这类代码时,将if和else代码块对调,会值得阅读代码容易许多,如下所示:

    if (A != B)
    {
        // 两三行代码
        // 代码行1
        // 代码行2
        // 代码行3
    }
    else
    {
        // 超过一屏的代码行
        // 代码行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
    }

    当然更佳的习惯,是不要有过长的代码块,应当考虑封装成函数。

  • 相关阅读:
    IntelliJ IDEA 14.x 快捷键/个性化设置
    Memcache的mutex设计模式 -- 高并发解决方案
    导出/导入Eclipse的workspace配置(备份Eclipse配置)
    URL、URN、URI的区别?
    Thinkpad E440个性化设置:如何/禁用关闭触摸板?
    PHP 正则表达式匹配函数 preg_match 与 preg_match_all
    PHP合并2个数字键数组的值
    编译安装 Zend Opcache 缓存Opcache,加速 PHP
    Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)
    alter table锁表,MySQL出现Waiting for table metadata lock的场景浅析及解决方案
  • 原文地址:https://www.cnblogs.com/aquester/p/9891783.html
Copyright © 2011-2022 走看看