我正在將一些代碼遷移到PSR-2標準。在我的代碼中,我有if語句多行作爲表達式:Long if語句和PSR-2
if ( $field->getBlockMode() == FieldInterface::BLOCK_MODE_HIDEVAR &&
!isset($this->enabledBlocks[$field->getBlock()])
) {
}
寫這樣的表達式的最佳做法是什麼?
我正在將一些代碼遷移到PSR-2標準。在我的代碼中,我有if語句多行作爲表達式:Long if語句和PSR-2
if ( $field->getBlockMode() == FieldInterface::BLOCK_MODE_HIDEVAR &&
!isset($this->enabledBlocks[$field->getBlock()])
) {
}
寫這樣的表達式的最佳做法是什麼?
如何使其成爲一個班輪,以避免這一問題,使表述更加可讀:
$blockModeIsHidevar = $field->getBlockMode() == FieldInterface::BLOCK_MODE_HIDEVAR;
$blockNotEnabled = !isset($this->enabledBlocks[$field->getBlock()]);
if ($blockModeIsHidevar && $blockNotEnabled) {
}
備選:
我通常用的方法去做,這可能 looke像這樣:
if ($this->blockModeIsHidevar($field) && $this->blockNotEnabled($field)) {
}
// ...
private function blockModeIsHidevar($field)
{
return $field->getBlockMode() == FieldInterface::BLOCK_MODE_HIDEVAR
}
private function blockNotEnabled($field)
{
return !isset($this->enabledBlocks[$field->getBlock()])
}
這樣,優化&&
仍然發生。
首先將其解壓縮爲較短的布爾表達式,然後在if()
語句中使用這些變量。
即:
$hideVarMode = $field->getBlockMode() === FieldInterface::BLOCK_MODE_HIDEVAR;
$enabledBlock = !isset($this->enabledBlocks[$field->getBlock()];
if($hideVarMode && $enabledBlock) {
....
}
(注意,我也把你的第一個測試到三相等,因爲這很可能是更好的;隨意更改回來,如果不爲你工作)
喜歡,但你想要的。建議使測試語句縮短:無論您如何編寫測試語句,都將無法閱讀。 – KingCrunch 2013-02-19 14:42:06
問題是,如果「if(」空格不允許,所以我不能將表達式設置爲與以下相同的hoirizobntal位置。並且據我瞭解,我無法在「if(」ether。 – Johni 2013-02-19 14:44:51