关于编码常见的20个陷阱 你中枪了没?
作者:网络转载 发布时间:[ 2012/12/17 10:05:54 ] 推荐标签:
13、避免深层嵌套
太多层的嵌套会让代码很难阅读、理解和维护。看看下面的代码:
1.function doSomething() {
2. if ($someCondition) {
3. if ($someOtherCondition) {
4. if ($yetSomeOtherCondition) {
5. doSomethingSpecial();
6. }
7. doSomethingElse();
8. }
9. }
10.}
条件里面又嵌套多个条件,通过转换条件,我们对代码进行了调整:
1.function doSomething() {
2. if (!$someCondition) {
3. return false;
4. }
5. if (!$someOtherCondition) {
6. return false;
7. }
8. if ($yetSomeOtherCondition) {
9. doSomethingSpecial();
10. }
11. doSomethingElse();
12.}
相对于前面的代码,这段代码简洁了很多,并且所实现的功能也是一样的。
当你在if里面使用嵌套,请仔细检查代码,里面可能同时执行多个方法,例如下面这段代码:
1.function someFunc() {
2. if($oneThing) {
3. $this->doSomething();
4. if($anotherThing)
5. $this->doSomethingElse();
6. }
7.}
这种情况下,可以把嵌套代码提取出来:
1.function someFunc() {
2. if($oneThing) {
3. $this->doSomething();
4. $this->doAnotherThing($anotherThing);
5. }
6.}
7.private doAnotherThing($anotherThing) {
8. if($anotherThing)
9. $this->doSomethingElse();
10.}
14、避免使用匿名数字和字符串(Avoid Magic Numbers and Strings)
使用匿名数字和字符串是有害无益的,在代码里定义需要使用的变量和常量。比如下面这段代码:
1.function someFunct() {
2. $this->order->set(23);
3. $this->order->addProduct('superComputer');
4. $this->shoppingList->add('superComputer');
5.}
给23和“superComputer”赋予相应意义的变量名:
1.function someFunct() {
2. $orderId = 23;
3. $selectedProductName = 'superComputer';
4. $this->order->set($orderId);
5. $this->order->addProduct($selectedProductName);
6. $this->shoppingList->add($selectedProductName);
7.}
可能会有人认为,一些无意义的变量尽量少定义,虽然它们对性能的影响是微不足道的。但可读性永远处于优先地位。请记住:不要随便优化性能,除非你知道为什么。
15、使用Built-in数组函数
使用built-in函数来代替foreach()
差的代码:
1.foreach (&$myArray as $key =>$element) {
2. if ($element > 5) unset ($myArray[$key]);
3.}
改进后的代码:
1.$myArray = array_filter($myArray, function ($element) { return $element <= 5;});
PHP里面提供了许多数组方法。起初会混淆,但是试着花时间好好学学它们。
相关推荐
更新发布
功能测试和接口测试的区别
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