关于编码常见的20个陷阱 你中枪了没?
作者:网络转载 发布时间:[ 2012/12/17 10:05:54 ] 推荐标签:
9、False——Happy方法
Ruby或Python开发者常常关注一些微小的异常,这是相当不错的事情。如果有地方出错会抛出异常并且你会立即知道问题所在。
在PHP中,特别是使用比较老的框架,如CodeIgniter,与抛出异常相比,它仅仅返回一个flase值,并且把错误字符串分配给其他一些属性。这驱使你使用get_error()方法。
Exception-happy远远好于false-happy。如果代码里面存在错误(例如不能连上S3下载图片,或者值为空等),然后抛出一个异常,你也可以通过继承Exception类来抛出特定的异常类型,例如:
class CustomException extends Exception {}
抛出自定义类型异常会让调试变得更加容易。
10、Use Guard Clauses
使用if语句控制函数或方法的执行路径是很常见的事情,如果if条件为true执行if里面的代码,否则执行else里面的代码。例如下面这段代码:
1.function someFunction($param) {
2. if ($param == 'OK') {
3. $this->doSomething();
4. return true;
5. } else {
6. return false;
7. }
8.}
这是很常见的意大利面条式的代码,通过转换条件对上述代码进行优化,不仅可以增加其可读性,看起来还会更加简单,如下:
1.function someFunction($param) {
2. if ($param != 'OK') return false;
3. $this->doSomething();
4. return true;
5.}
11、使用While进行简单的迭代
使用for进行循环是很常见的事情:
1.for (var i = 0; i < x; i++) {
2. ...
3.}
当然,for循环也有许多优势,但是对于一些的循环,使用while或许会更好:
1.var i = x;
2.while (i--) {
3. ...
4.}
12、保持方法可维护性
让我们来看一下这个方法:
1.class SomeClass {
2. function monsterMethod() {
3. if($weArePilots) {
4. $this->goAndDressUp();
5. $this->washYourTeeth();
6. $this->cleanYourWeapon();
7. $this->takeYourHelmet();
8. if($this->helmetDoesNotFit())
9. $this->takeAHat();
10. else
11. $this->installHelmet();
12. $this->chekcYourKnife();
13. if($this->myAirplain() == "F22")
14. $this->goToArmyAirport();
15. else
16. $this->goToCivilianAirport();
17. $this->aim();
18. $this->prepare();
19. $this->fire();
20. }
21. }
22.}
再看如下代码:
1.class SomeClass {
2. function monsterMethod() {
3. if($weArePilots) {
4. $this->prepareYourself();
5. $this->tryHelmet();
6. $this->findYourAirport();
7. $this->fightEnemy();
8. }
9. }
10. private function prepareYourself() {
11. $this->goAndDressUp();
12. $this->washYourTeeth();
13. $this->cleanYourWeapon();
14. $this->chekcYourKnife();
15. }
16. private function tryHelmet() {
17. $this->takeYourHelmet();
18. if($this->helmetDoesNotFit())
19. $this->takeAHat();
20. else
21. $this->installHelmet();
22. }
23. private function findYourAirport() {
24. if($this->myAirplain() == "F22")
25. $this->goToArmyAirport();
26. else
27. $this->goToCivilianAirport();
28. }
29. private function fightEnemy() {
30. $this->aim();
31. $this->prepare();
32. $this->fire();
33. }
34.}
对比两段代码,第二段代码更加简洁、可读和可维护。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11