博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见的编码陷阱4
阅读量:7082 次
发布时间:2019-06-28

本文共 2209 字,大约阅读时间需要 7 分钟。

常见的编码陷阱

9.False——Happy方法

Ruby或Python开发者常常关注一些微小的异常,这是相当不错的事情。如果有地方出错就会抛出异常并且你会立即知道问题所在。

在PHP中,特别是使用比较老的框架,如CodeIgniter,与抛出异常相比,它仅仅返回一个flase值,并且把错误字符串分配给其他一些属性。这就驱使你使用get_error()方法。

Exception-happy远远好于false-happy。如果代码里面存在错误(例如不能连上S3下载图片,或者值为空等),然后抛出一个异常,你也可以通过继承Exception类来抛出特定的异常类型,例如:

1         classCustomExceptionextendsException{}

抛出自定义类型异常会让调试变得更加容易。

10.Use Guard Clauses

使用if语句控制函数或方法的执行路径是很常见的事情,如果if条件为true就执行if里面的代码,否则就执行else里面的代码。例如下面这段代码:

2         functionsomeFunction($param){

3         if($param=='OK'){

4         $this->doSomething();

5         returntrue;

6         }else{

7         returnfalse;

8         }

9         }

这是很常见的意大利面条式的代码,通过转换条件对上述代码进行优化,不仅可以增加其可读性,看起来还会更加简单,如下:

10     functionsomeFunction($param){

11     if($param!='OK')returnfalse;

12     $this->doSomething();

13     returntrue;

14     }

11.使用While进行简单的迭代

使用for进行循环是很常见的事情:

15     for(vari=0;i<x;i++){

16     ...

17     }

当然,for循环也有许多优势,但是对于一些的循环,使用while或许会更好:

18     vari=x;

19     while(i--){

20     ...

21     }

12.保持方法可维护性

让我们来看一下这个方法:

22     classSomeClass{

23     functionmonsterMethod(){

24     if($weArePilots){

25     $this->goAndDressUp();

26     $this->washYourTeeth();

27     $this->cleanYourWeapon();

28     $this->takeYourHelmet();

29     if($this->helmetDoesNotFit())

30     $this->takeAHat();

31     else

32     $this->installHelmet();

33     $this->chekcYourKnife();

34     if($this->myAirplain()=="F22")

35     $this->goToArmyAirport();

36     else

37     $this->goToCivilianAirport();

38     $this->aim();

39     $this->prepare();

40     $this->fire();

41     }

42     }

43     }

再看如下代码:

44     classSomeClass{

45     functionmonsterMethod(){

46     if($weArePilots){

47     $this->prepareYourself();

48     $this->tryHelmet();

49     $this->findYourAirport();

50     $this->fightEnemy();

51     }

52     }

53     privatefunctionprepareYourself(){

54     $this->goAndDressUp();

55     $this->washYourTeeth();

56     $this->cleanYourWeapon();

57     $this->chekcYourKnife();

58     }

59     privatefunctiontryHelmet(){

60     $this->takeYourHelmet();

61     if($this->helmetDoesNotFit())

62     $this->takeAHat();

63     else

64     $this->installHelmet();

65     }

66     privatefunctionfindYourAirport(){

67     if($this->myAirplain()=="F22")

68     $this->goToArmyAirport();

69     else

70     $this->goToCivilianAirport();

71     }

72     privatefunctionfightEnemy(){

73     $this->aim();

74     $this->prepare();

75     $this->fire();

76     }

77     }

对比两段代码,第二段代码更加简洁、可读和可维护。

 

转载于:https://www.cnblogs.com/Q685656/archive/2013/02/20/2918179.html

你可能感兴趣的文章
bash批量创建目录
查看>>
Windows pscp
查看>>
初学Python的学习笔记8----面向对象、数据封装、访问限制、继承和多态
查看>>
CAS注销后自定义跳转路径
查看>>
[大数据量]布隆过滤器(Bloom Filter)适用类型以及具体示例
查看>>
Linux | OOM机制的理解
查看>>
linux启动nagios无法通过web访问解决
查看>>
OpenSessionInViewFilter原理以及为什么要用OpenSessionInViewFilter
查看>>
决策树
查看>>
微服务实战(六):选择微服务部署策略
查看>>
mybatis入门教程(二)
查看>>
Java NIO(一)
查看>>
UIWebView类的调用
查看>>
MongoVE连接MongoDB 不显示数据问题
查看>>
npm 更新模块
查看>>
PhalApi 2.4.2 - 接口,从简单开始!(为了更好的接口开发体验,2019重新出发)...
查看>>
Docker介绍
查看>>
数组重复数去重
查看>>
清除旧版本kernel[Fedora/CentOS/RHEL]
查看>>
php_ldap.dll扩展加载
查看>>