// bad code, 條件太長了
if ($conditions['status'] === true && $conditions['is_test'] === false && $conditions['type'] === 'boolean') {
echo 'hello';
}
// good code, 換行,這種方式還能寫註解
if ($conditions['status'] === true
&& $conditions['is_test'] === false
&& $conditions['value'] === 'hello') {
echo 'hello';
}
// good code, 萃取出新的方法
if ($this->canEcho($conditions)) {
echo 'hello';
}
// bad code
collect($products)->map(function($product) use ($request) {
return [
'id' => $product->id,
'name' => $product->name,
'status' => $product->status && $request->can_display
]
});
// good code
collect($products)->map(fn($product) => [
'id' => $product->id,
'name' => $product->name,
'status' => $product->status && $request->can_display
]);
// 變數
$name = $displayName
? $product->name
: '商品';
// 陣列
[
'name' => $displayName
? $product->name
: '商品'
];
// 變數
$coupon = empty($coupon) ? null : [
'id' => $coupon->id,
'name' => $coupon->name
];
// 陣列
[
'coupon' => empty($coupon) ? null : [
'id' => $coupon->id,
'name' => $coupon->name
]
];
// 變數
$coupon = $coupon['default'] === 'default'
? $this->formatDefaultCoupon($coupon)
: $this->formatCoupon($coupon);
// 陣列
[
'coupon' => $coupon['default'] === 'default'
? $this->formatDefaultCoupon($coupon)
: $this->formatCoupon($coupon)
]
];
// 雙引號
"{$product['name']}, is {$this->getColor($product)}"
// heredoc, 可以直接換行
<<<MESSAGE
{$product['name']}, is {$this->getColor($product)}
MESSAGE;