专栏首页蓝天细节决定品质:不良的if/else使用习惯

细节决定品质:不良的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

}

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件开发心得点滴记录

    自从2002年大学毕业后一直沉浸于软件开发之路,平时喜欢思考和归纳,时常会产生一点心得和想法,回想起来是一笔宝贵的财富,只可惜陆陆续续遗忘了。今天立此文章,希...

    一见
  • 养成良好的编程习惯

    4.从源头避免版本不一致问题(当同一个文件在不同目录下出现拷贝时,容易出现其中某个未同步更新的问题)

    一见
  • 为什么不能在SSH(Secure Shell)登录中设置ulimit值?

    SuSE上的一些问题,可能需要另参考:http://blog.chinaunix.net/u2/64804/showart.php?id=2026903

    一见
  • 编程中,有哪些好的习惯一开始就值得坚持?

    在项目的开始阶段,不要上手直接写代码,一定要先确定代码的分层和架构。该分层和架构在一定程度上决定了未来整个项目的代码风格和维护性,对于项目的长期维护,代码架构的...

    java思维导图
  • 程序员的5种类型

    在我的代码旅程和编程经历中,已经遭遇很多奇特的对手,还有更为奇特的盟友。我至少发现有5种代码勇士,有些是出色的战友,其他则似乎都在搅黄我的每个计划。 不过他们都...

    企鹅号小编
  • 论编程的最后期限

    普通编程与专业编程之间有很多差别,而最为显著的就是截止日期。 截止日期 / 最后期限   当你给自己写程序的时候,只要你愿意,就可以用很多(或者很少)的时间来...

    用户1289394
  • 从条件运算符说起,反思什么是好代码

    那什么样的代码才是优秀的代码呢?对于这个问题,我想每个人心中都会有自己的答案。今天我就来和你聊聊我的思考。

    架构师修炼
  • 高级Python工程师教你如何正确写代码

    我接手的第一样东西就是React UI。我们有一个主要组件,它容纳了其他所有组件。我喜欢在代码中加入一点幽默感,我想把它命名为GodComponent。在cod...

    小小科
  • Dead Code为什么能在代码库中永生?

    在一些遗留系统中,经常会看到大片大片灰掉的代码(被注释掉了),这种代码是死代码吗?如果要我下定义,我认为这些不是死代码,因为它们连代码都称不上,如何又能叫死代码...

    袁慎建@ThoughtWorks
  • JS逆向时碰到了恶心的死代码怎么办?手把手教你解决!

    你是否也曾有过「跟着代码跳了很久之后,才发现那一大坨代码其实没有任何作用」的惨痛经历?

    青南

扫码关注云+社区

领取腾讯云代金券