PHP-Variablen
Variable
1. Verwenden Sie Variablennamen, die die Bedeutung des Wortes verstehen
2. Dieselbe Entität muss denselben Variablennamen verwenden
3. Verwenden Sie suchfreundliche Namen (Teil 1)
4. Verwenden Sie suchfreundliche Namen (Teil 2)
5. Verwenden Sie selbsterklärende Variablen
6. Vermeiden Sie tiefe Nester und kehren Sie so früh wie möglich zurück (Teil 1)
7. Vermeiden Sie tiefe Nester und kehren Sie so früh wie möglich zurück (Teil 2)
8. Verwenden Sie weniger bedeutungslose Variablennamen
9. Fügen Sie keinen unnötigen Kontext hinzu
1. Verwenden Sie Variablennamen, die die Bedeutung des Wortes verstehen
Schlecht:
$ymdstr = $moment->format('y-m-d');
Gut:
$currentDate = $moment->format('y-m-d');
2. Dieselbe Entität muss denselben Variablennamen verwenden
Schlecht:
getUserInfo(); getUserData(); getUserRecord(); getUserProfile();
Gut:
getUser();
3. Verwenden Sie suchfreundliche Namen (Teil 1)
Code wird geschrieben, um gelesen zu werden. Daher ist es wichtig, Code zu schreiben, der gut lesbar und durchsuchbar ist. Wenn Sie Variablen benennen, die nicht aussagekräftig und leicht verständlich sind, erweisen Sie Ihren Lesern keinen Gefallen. Bitte machen Sie Ihren Code durchsuchbar.
Schlecht:
// 448 ™ 干啥的? $result = $serializer->serialize($data, 448);
Gut:
$json = $serializer->serialize($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
4. Verwenden Sie suchfreundliche Namen (Teil 2)
Schlecht:
class User { // 7 ™ 干啥的? public $access = 7; } // 4 ™ 干啥的? if ($user->access & 4) { // ... } // 这里会发生什么? $user->access ^= 2;
Gut:
class User { const ACCESS_READ = 1; const ACCESS_CREATE = 2; const ACCESS_UPDATE = 4; const ACCESS_DELETE = 8; // 默认情况下用户 具有读、写和更新权限 public $access = self::ACCESS_READ | self::ACCESS_CREATE | self::ACCESS_UPDATE; } if ($user->access & User::ACCESS_UPDATE) { // do edit ... } // 禁用创建权限 $user->access ^= User::ACCESS_CREATE;
5. Verwenden Sie selbsterklärende Variablen
Schlecht:
$address = 'One Infinite Loop, Cupertino 95014'; $cityZipCodeRegex = '/^[^,]+,\s*(.+?)\s*(\d{5})$/'; preg_match($cityZipCodeRegex, $address, $matches); saveCityZipCode($matches[1], $matches[2]);
Gut:
Besser, aber stark abhängig von der Vertrautheit mit regulären Ausdrücken
$address = 'One Infinite Loop, Cupertino 95014'; $cityZipCodeRegex = '/^[^,]+,\s*(.+?)\s*(\d{5})$/'; preg_match($cityZipCodeRegex, $address, $matches); [, $city, $zipCode] = $matches; saveCityZipCode($city, $zipCode);
Gut:
Verwenden Sie Unterregeln mit Namen. Sie müssen die regulären Regeln nicht verstehen, um sie zu verstehen
$address = 'One Infinite Loop, Cupertino 95014'; $cityZipCodeRegex = '/^[^,]+,\s*(?<city>.+?)\s*(?<zipCode>\d{5})$/'; preg_match($cityZipCodeRegex, $address, $matches); saveCityZipCode($matches['city'], $matches['zipCode']);
6. Vermeiden Sie tiefe Nester und kehren Sie so früh wie möglich zurück (Teil 1)
Zu viele if else
-Anweisungen erschweren normalerweise die Lesbarkeit Ihres Codes. Es ist besser, explizit als vage zu sein.
Ups:
if (empty($day)) { return false; } $openingDays = [ 'friday', 'saturday', 'sunday' ]; return in_array(strtolower($day), $openingDays, true); }
7. Vermeiden Sie tiefe Nester und kehren Sie frühzeitig zurück (Teil 2)
Ups:
function fibonacci(int $n) { if ($n < 50) { if ($n !== 0) { if ($n !== 1) { return fibonacci($n - 1) + fibonacci($n - 2); } else { return 1; } } else { return 0; } } else { return 'Not supported'; } }
Gut:
function fibonacci(int $n): int { if ($n === 0 || $n === 1) { return $n; } if ($n >= 50) { throw new \Exception('Not supported'); } return fibonacci($n - 1) + fibonacci($n - 2); }
8. Verwenden Sie weniger bedeutungslose Variablennamen
Lassen Sie die Leute, die Ihren Code lesen, nicht erraten, was die von Ihnen geschriebenen Variablen bedeuten. Es ist besser, klar als vage zu schreiben.
Schlecht:
$l = ['Austin', 'New York', 'San Francisco']; for ($i = 0; $i < count($l); $i++) { $li = $l[$i]; doStuff(); doSomeOtherStuff(); // ... // ... // ... // 等等, `$li` 又代表什么? dispatch($li); }
Gut:
$locations = ['Austin', 'New York', 'San Francisco']; foreach ($locations as $location) { doStuff(); doSomeOtherStuff(); // ... // ... // ... dispatch($location); }
9. Fügen Sie keinen unnötigen Kontext hinzu
Wenn einige Informationen bereits aus Ihrem Klassennamen oder Objektnamen gelernt werden können, wiederholen Sie diese nicht im Variablennamen.
Schlecht:
class Car { public $carMake; public $carModel; public $carColor; //... }
Gut:
class Car { public $make; public $model; public $color; //... }
10. Verwenden Sie Parameter-Standardwerte sinnvoll, es ist keine Standardwerterkennung in der Methode erforderlich
Nicht gut:
Nein, $breweryName
könnte NULL.
sein
function createMicrobrewery($breweryName = 'Hipster Brew Co.'): void { // ... }
Okay:
Es ist leichter zu verstehen als das vorherige, aber es ist besser, den Wert der Variablen steuern zu können.
function createMicrobrewery($name = null): void { $breweryName = $name ?: 'Hipster Brew Co.'; // ... }
Gut:
Wenn Ihr Programm nur PHP 7 unterstützt, können Sie mithilfe von Typhinweisen sicherstellen, dass die Variable $breweryName
nicht NULL.
ist
function createMicrobrewery(string $breweryName = 'Hipster Brew Co.'): void { // ... }