Error First Style

function demo() {
    /****************
    /* Code Chunk 1 *
    /****************

    if(validation_successful) {
        /****************
        /* Code Chunk 2 *
        /****************
        
        if($result = another_method()) {
            /****************
            /* Code Chunk 3 *
            /****************
         	
            return $something;   
            
        } else {
            // log error
            // generate error message      
            
        }
    
    } else {
    	// log error
        // generate error message 
        
    } 
    
    return FALSE;
    
}
function demo() {
    /****************
    /* Code Chunk 1 *
    /****************
    /****************
    /* Code Chunk 2 *
    /****************

    if(!validation_successful) {
        // log error
        // generate error message 
        return FALSE;
        
    }
    
    if(!($result = another_method())) {
        // log error
        // generate error message
        return FALSE;
        
    }   
            
    /****************
    /* Code Chunk 3 *
    /****************
         	
    return $something;

}
function demo() {
    /****************
    /* Code Chunk 1 *
    /****************

    if(!validation_successful) {
        // log error
        // generate error message 
        return FALSE;
        
    }
    
    /****************
    /* Code Chunk 2 *
    /****************
    
    if(!($result = another_method())) {
        // log error
        // generate error message
        return FALSE;
        
    }   
            
    /****************
    /* Code Chunk 3 *
    /****************
         	
    return $something;

}

Examples

Generation_lib.php::update_user_reading()

function update_user_reading_modified($meter_id, $reading_id, $period, $reading, $date) {
	/*** Part 1. Initialization ***/
	$cut_off_timestamp = mktime(0, 0, 0, Date("n"), $this->cut_off, Date("Y"));
	$start_timestamp   = mktime(0, 0, 0, Date("n"), 1, Date("Y"));
	$reading_date      = strtotime($date);
	$today             = strtotime('now');
	$generation        = strtotime($period);

	$meters = $this->ci->meters->getByID($meter_id);
	$meter  = $meters[0];
	// $location = $this->ci->location->getById($meter['locations_id']);
	$data['meter_readings_id']   = $reading_id;
	$data['reading_type']        = $meter['meter_reading_style'];
	$data['reading_source']      = "user";
	$data['user_reading']        = $reading;
	// Only for cumulative meters
	if($meter['meter_reading_style'] == 'cumulative') {
		$data['user_reading_taken']  = Date("Y-m-d", $reading_date);

	}
	// $data['verified_reading'] = 0;
	$data['production']          = 0;
	$data['carryover']           = 0;
	$data['cumulative']          = 0;
	$data['srecs']               = 0;
	$data['remainder']           = 0;
	$data['verified']            = 0;
	$data['verified_by_user_id'] = 0;
	$data['verified_date']       = '0000-00-00 00:00:00';
	$data['verified_reading']    = NULL;
	$data['date_read']           = Date("Y-m-d", $generation);
	$data['user_id']             = $this->ci->tank_auth->get_user_id();
	$data['admin_note']          = NULL;
	// $data['date_created']     = Date("Y-m-d H:i:s");
	$data['date_changed']        = Date("Y-m-d H:i:s");

	/*** Part 2. Failures ***/
	// if(($cut_off_timestamp >= $reading_date) && ($reading_date <= $today) && ($reading_date >= $start_timestamp)) {
	if( !($meter['meter_reading_style'] == 'actual' && ($cut_off_timestamp >= time())) &&
		!($meter['meter_reading_style'] == 'cumulative' && ($cut_off_timestamp >= $reading_date) && ($reading_date <= $today) && ($reading_date >= $start_timestamp))) {
		log_message('debug', 'Generation_lib update_user_reading() ERROR');

		if($reading_date > $today) {
			$this->error = array('reading_date' => "The reading date cannot be a future date");

		} else {
			$this->error = array('reading_date' => "The reading date must be between the 1st-" . $this->cut_off . ordinal_suffix($this->cut_off) . " of the current month");

		}

		return FALSE;

	}

	if(!$this->ci->generation->update($data, $reading_id)) {
		log_message('debug', 'Generation_lib update_user_reading() ERROR inserting new data');
		$this->error = array('required_reading' => "There was a problem recording your meter reading.  Please try again or contact customer service.");

		return FALSE;

	}

	/*** Part 3. Success ***/
	$this->copy_meter_readings_to_change_log($reading_id);

	if(!is_null($verified = $this->sync_with_gats($reading_id))) {
		// return $verified;

	}

	// log_message('debug', 'Generation_lib update_user_reading() has been run');
	return TRUE;

}

Fat Controller Method

function controller_method() {
    /***************
    /* Code Block 1
    /***************

    if($this->input->post('do_this')) {
    	// do this 
    
    } elseif($this->input->post('do_that')) {
    	// do that
    
    } elseif(...) {
    
    } ...
      ...
      ...

    /***************
    /* Code Block 2
    /***************
}

Conditional Statements 1

function lib_method($var1, $var2, $var3) {
    model_method_1($var1, $var2, $var3);
    
    /****************
    /* Code Chunk 1 *
    /****************
}

// In a model class
function model_method_2($var3, $var4, $var5) {...}

function lib_method($var1, $var2, $var3, $var4, $var5) {
    if(...) {
    	model_method_1($var1, $var2, $var3);
    
    } else {
    	model_method_2($var3, $var4, $var5);

    }
    
    /****************
    /* Code Chunk 1 *
    /****************
}

function lib_method_2($var3, $var4, $var5) {
    model_method_2($var3, $var4, $var5);
    
    private_method();
}

private function private_method() {
    /****************
    /* Code Chunk 1 *
    /****************
}

Conditional Statements 2

function lib_method(...) {  
    /****************
    /* Code Chunk 1 *
    /****************
    
    if(...) {
    	foo(...);
    } else {
    	foo(...);
    }
    
    /****************
    /* Code Chunk 2 *
    /****************
    
    if(...) {
    	...
    } else {
    	...
    }
    
    /****************
    /* Code Chunk 3 *
    /****************
}




SRECTrade Coding Recommendations 9/26/2019

By David Zheng

SRECTrade Coding Recommendations 9/26/2019

  • 21