我是一名Web开发人员,我在PHP/Laravel框架中编写代码。我一直在遵循编写代码的最佳实践,并且我知道在函数中编写15-20行代码并在类中编写最多200行代码是一种很好的做法。但是每次我最终都会在函数中写出最少40-50行。例如在这里我写的代码片段来获取客户端和指定用户的详细信息。如何减少PHP中的代码行数?
public function preMessageSend($client, $assigned)
{
$ticket_number = $client->ticket_number;
$title = $client->title;
$department = $client->department;
$priority = $client->priority;
if ($client->first_name !== null || $client->first_name !== '') {
$client_name = $client->first_name." ".$client->last_name;
} else {
$client_name = $client->username;
}
if ($client->email !== '' || $client->email !== null) {
$client_email = $client->email;
} else {
$client->email = 'Not available';
}
if($client->mobile !== null || $client->mobile !== '') {
$client_mobile = $client->code."".$client->mobile;
} else {
$client_mobile = 'Not available';
}
if($assigned != null) {
if ($assigned->first_name !== null || $assigned->first_name !== '') {
$assigned_name = $assigned->first_name." ".$assigned->last_name;
} else {
$assigned_name = $assigned->username;
}
if ($assigned->email !== '' || $assigned->email !== null) {
$assigned_email = $assigned->email;
} else {
$assigned->email = 'Not available';
}
if($assigned->mobile !== null || $assigned->mobile !== '') {
$assigned_mobile = $assigned->code."".$assigned->mobile;
} else {
$assigned_mobile = 'Not available';
}
if ($assigned->address !== null || $assigned->address !== '') {
$assigned_address = $assigned->address;
} else {
$assigned_address = 'Not available';
}
$this->sendMessageWithAssigned($ticket_number, $title, $department, $priority, $client_name, $client_email, $client_mobile, $assigned_name, $assigned_email, $assigned_mobile, $assigned_address);
} else {
$this->sendMessageWithoutAssigned($ticket_number, $title, $department, $priority, $client_name, $client_email, $client_mobile);
}
请告诉我如何减少我的类和函数中的loc,以及避免编写如此长的函数的最佳做法是什么。 TIA
第一个问题:为什么您需要将所有这些客户端对象属性分配给本地作用域变量? –
我认为你可以做一个空的检查,而不是所有那些'不为空的字符串' – danopz
你可以将你的大部分条件改写成三元运算符一行'$ client_mobile =($ client-> mobile!== null || $ client-> mobile!=='')? $ client-> code。“”。$ client-> mobile:'Not available';' –