3.5 KiB
3.5 KiB
常规编码规范
目录
代码清晰性与注释
编写自解释的代码。谨慎使用注释——仅用于非显而易见的见解。
良好 - 代码能自我解释:
if ( $order->is_draft() && $user->can_delete_drafts() ) {
$order->delete();
}
避免 - 过度注释:
// 检查订单是否为草稿
if ( $order->is_draft() ) {
// 检查用户是否有权限
if ( $user->can_delete_drafts() ) {
// 删除订单
$order->delete();
}
}
何时添加注释:
- 不寻常的决定、变通方案或非显而易见的业务逻辑
- 性能考量
何时不应添加注释:
- 解释代码做什么(代码应该是自解释的)
- 重复陈述显而易见的内容
WordPress 编码标准
关注 WordPress 编码标准:
- Yoda 条件:
'true' === $value而非$value === 'true' - 间距:运算符周围、括号内部使用空格
- 大括号:左大括号在同一行,右大括号在新行
- 命名:函数和变量使用 snake_case
空值合并运算符
使用 ?? 替代 isset 检查数组访问。
推荐:
if ( 34 === ( $foo['bar'] ?? null ) ) {
// ...
}
$value = $options['setting'] ?? 'default';
避免:
if ( isset( $foo['bar'] ) && 34 === $foo['bar'] ) {
// ...
}
if ( isset( $options['setting'] ) ) {
$value = $options['setting'];
} else {
$value = 'default';
}
三元运算符
对于简单的条件返回或赋值,优先使用三元运算符而非 if-else 语句,除非情况非常复杂。
良好示例:
return $condition ? $true_value : $false_value;
$result = $is_enabled ? 'enabled' : 'disabled';
$price = $has_discount ? $product->get_sale_price() : $product->get_regular_price();
应避免:
if ( $condition ) {
return $true_value;
}
return $false_value;
if ( $is_enabled ) {
$result = 'enabled';
} else {
$result = 'disabled';
}
例外情况: 当条件复杂或每个分支需要执行多条语句时,使用传统的 if-else 语句。
// 当涉及复杂逻辑时,使用 if-else 是可以的
if ( $order->needs_shipping() && ! $order->has_valid_address() ) {
$this->logger->log( 'Invalid shipping address' );
$this->notify_customer( $order );
return false;
} else {
return true;
}
call_user_func_array() 用法
在使用 call_user_func_array() 时,始终为参数参数使用位置参数(数字索引数组),而不是命名/关联数组。
该函数按顺序使用数组值并忽略关键字,因此命名关键字会产生误导。
正确:
call_user_func_array( array( $obj, 'method' ), array( $code ) );
call_user_func_array( array( $obj, 'process' ), array( $id, $status, $data ) );
错误:
call_user_func_array( array( $obj, 'method' ), array( 'country_code' => $code ) );
call_user_func_array( array( $obj, 'process' ), array( 'order_id' => $id, 'status' => $status ) );
代码检查
仅修复您当前分支中已添加或修改代码的检查错误。
除非特别要求,否则请勿修复无关代码中的检查错误。