我最近从开发人员那里得到了这段代码,发现它非常令人困惑。他如何传递参数,然后在方法中将其重命名的方式使代码阅读起来更加复杂。我花了很多时间只是想弄清楚什么是$ block_options以及它的来源。在第一种方法中,他定义了变量 $ settings ,然后将其传递给 _start_block 方法,该方法仍称为 $ settings 。但是随后他将其传递给下一个方法 _ajax_param ,然后变量名更改为 $ block ,然后将其存储在 $ block_options 中。因此 $ settings 变为 $ block_options 。
通过这样的方法传递参数时,重命名参数是一种好习惯吗?
原始代码更复杂,并且在方法内部包含更多代码,这使其更加混乱。这是代码的简化版本:
protected function render() {
$settings = $this->get_settings_for_display();
$data = $this->_fetch_query_data( $settings );
$output = '';
$output .= $this->_start_block( $settings, $data );
echo $output;
}
protected function _start_block( $settings, $data = null ) {
$ajax_param = '';
if ( ! empty( $data ) && is_object( $data ) ) {
$ajax_param = $this->_ajax_param( $settings, $data );
}
$output = '';
$output .= '<div id="' . esc_attr( $settings['block_id'] ) . '" class="content-section section-recent-news tab-post" ' . esc_attr( $ajax_param ) . '>';
$output .= '<div class="recent-news-inner">';
return $output;
}
protected function _ajax_param( $block, $data_query ) {
//check
if ( empty( $block ) || empty( $block['block_id'] ) ) {
return false;
}
$param = array();
$block_options = $block;
$param['data-block_id'] = $block['block_id'];
//post per page
if ( ! empty( $block_options['posts_per_page'] ) ) {
$param['data-posts_per_page'] = $block_options['posts_per_page'];
}
return $param
}