[JAVA] Schreiben Sie solide mit PhpStorm

Einführung

PHP Adventskalender 2016 Dies ist der Artikel am 20. Tag.

Der Artikel Schreiben von robustem Code in PHP7 ist zu einem heißen Thema geworden. Ich habe nur die Folien gesehen, aber es gab viele Dinge, mit denen ich sympathisierte. Vor diesem Hintergrund habe ich versucht herauszufinden, worauf ich achte und was ich bei der Entwicklung mit PHP mache.

Ursprünglich hatte ich langjährige Erfahrung mit Java und habe IntelliJ IDEA verwendet, daher entwickle ich mit PhpStorm vom selben Ort aus. Es ist eine Geschichte, dass Sie mit dieser Funktion Code schreiben können, der in gewissem Maße Java ähnelt.

Dokumentationskommentar, der angibt, welcher Typ die Variable ist

Wenn Sie es aus dem Symfony-Container nehmen, haben Sie möglicherweise Probleme, den Typ und die Methode zu kennen. In einem solchen Fall erkennt PhpStorm den Typ der Variablen und vervollständigt die Methode usw., wenn Sie die lokale Variable wie unten gezeigt kommentieren.

Es ist ein Zitat von http://symfony.com/doc/current/service_container.html, aber wenn es wie folgt belassen wird, wird die Sendemethode von "$ mailer" nicht abgeschlossen.

class HelloController extends Controller
{
    // ...

    public function sendEmailAction()
    {
       
        $mailer = $this->get('app.mailer');
        $mailer->send('[email protected]', ...);← Ich kenne den Typ nicht. Wenn es sich also um PhpStorm handelt, wird eine Warnung angezeigt.
    }
}

Wenn Sie Folgendes tun, wird die Warnung ausgeblendet und die Methode der Mailer-Klasse wird als Abschlusskandidat in "$ mailer" angezeigt.

/* @var $mailer AppBundle\Mailer */
$mailer = $this->get('app.mailer');

So fügen Sie Dokumentationskommentare für typisierte Arrays in PhpStorm hinzu

Zum Beispiel, wenn Sie ein Array mit einem bestimmten Typ schreiben möchten, z. B. "Array von Zeichenfolgen" oder "Array von Klassen, die Sie in phpdoc erstellt haben". Wenn Sie neu in Java sind, werden Sie es wollen.


* @return string[]
* @return Sample[]

Wenn Sie also XXX [] ausführen, ist dies in Ordnung.

Liste, wo die Methode unter Verwendungen suchen verwendet wird

Sie können herausfinden, wo eine Methode aufgerufen wird, indem Sie nach Alt + F7 suchen (Verwendungen im Kontextmenü suchen) und auflisten. Dies ist nützlich, um herauszufinden, inwieweit sich das Fixieren einer Methode auswirkt und wie sie verwendet wird.

public function isXXX() {...}← Konzentrieren Sie sich auf den Methodennamen Alt+F7 oder Rechtsklick

Hinweis Wenn es für eine Vorlage wie z. B. twig verwendet wird oder wenn PhpStorm so verwendet wird, dass der Typ nicht bestimmt werden kann (z. B. wenn es mit einem Symfony-Service-Container abgerufen wird), wird es nicht in den Suchergebnissen angezeigt. Solche Fälle können nur durch eine Zeichenkettensuche im Projekt erfasst werden. Strg + Umschalt + F öffnet diesen Dialog.

Nutzen Sie Dokumentationskommentare wie "@ see" und "@ veraltet"

Beim Ändern oder Hinzufügen von Funktionen gibt es Fälle, in denen alte und neue Klassen aufgrund von Arbeit und Spezifikationen nebeneinander existieren (z. B. altes Routing bleibt erhalten und wird an eine neue URL umgeleitet). Zu diesem Zeitpunkt besteht eine Lösung darin, "@ veraltet" hinzuzufügen, um das Verständnis von Alt und Neu zu erleichtern. Darüber hinaus können Sie mit "@ see" eine Route erstellen, die auf eine neue Klasse verweist. Konzentrieren Sie sich auf den Klassennamen bei "@ see" und drücken Sie Strg + B (Verknüpfung zum Aufrufen des Deklarationsteils), um die Klasse zu öffnen.

@veraltete alte Fabrikklasse
@siehe NewFactory Neue Fabrikklasse
public class OldFactory {
}

Da "@ veraltet" an eine Methode angehängt werden kann, habe ich sie ad hoc und unvermeidlich erstellt, aber es scheint, dass sie auch verwendet werden kann, um zu appellieren, dass ich nicht möchte, dass sie anderweitig verwendet wird.

@veraltet Bitte verwenden Sie es nicht in Neuentwicklungen, da es zu viele Nebenwirkungen hat und es gefährlich ist, es nicht mehr zu verwenden
public function dirty_method() {...}

In jedem Fall ist es jedoch eine wichtige Voraussetzung, dass das Team ein gutes Verständnis dafür hat, wie diese verwendet werden und welche Art von Kommentaren zu hinterlassen sind.

Sehen Sie sich die Git-Schuld an und legen Sie den Verlauf fest

Öffnen Sie die Datei, deren Schuld oder Verlauf angezeigt werden soll, klicken Sie mit der rechten Maustaste auf> Git> Kommentieren, um die Git-Schuld anzuzeigen, und auf Verlauf anzeigen, um eine Liste der vergangenen Festschreibungsverläufe anzuzeigen.

git_annnotate.png

Dies ist nützlich, wenn Sie aus dem Festschreibungskommentar Informationen darüber erhalten möchten, in welches Ticket der Prozess eingegeben wurde und wofür der Prozess bestimmt ist, oder um zu sehen, wer ihn geschrieben hat.

Wie bei GitHub können Sie auch von der Schuld auf den Unterschied des entsprechenden Commits übergehen. Dies ist nützlich, wenn Sie keinen Git-Repository-Browser haben oder nur etwas wollen.

Ergänzen Sie die PECL-Methoden mit PhpStorm

https://github.com/JetBrains/phpstorm-Laden Sie Stubs herunter und wechseln Sie in das Standardverzeichnis.Preferences | Languages & Frameworks | PHP | Include path Hinzugefügt zu.

Einige Warnungen kommen heraus, weil sie mit der ursprünglichen in Konflikt stehen, aber wenn Sie nichts dagegen haben, irgendwie.

Vergleichsproblem

Es ist eine abgenutzte Geschichte, aber ich bin in dieser Hinsicht schon oft gefangen, deshalb kann ich sie nicht organisieren. Es ist eine Geschichte, dass unerwartete Ergebnisse aufgrund eines losen Vergleichs durch == erhalten werden. Standardmäßig wird in PhpStorm beim Vergleich mit == eine Warnung angezeigt, sodass es bis zu einem gewissen Grad leicht zu bemerken ist, aber es passt, wenn es passt. Wenn Sie also das Muster des Problems kennen, ist es die Ursache, wenn Sie darauf stoßen Es ist leicht zu erreichen.

2a Problem

Es scheint so berühmt zu sein, dass es super wird.

$a = '2a';
$b = 2;
print ($a == $b);
// =>  true 

Wie oben erwähnt, ist es ein Phänomen, dass die Zeichenkette "2a" und die Zahl "2" gleich sind. Dies kann vermieden werden, indem ein strikter Vergleich einschließlich des Typs mit === durchgeführt wird.

0e Problem

Es scheint berühmt für den Vergleich von Hash-Werten von md5 zu sein.

$a = '0e678342453'
$b = '0e123435465'
print ($a == $b);
// => true

Es ist ein Phänomen, dass die Zeichenketten völlig anders aussehen, aber gleich sind. Was passiert ist, dass das e als Exponentialschreibweise interpretiert wird.

Da "0 ^ 673 = 0 = 0 ^ 123" ist, sind beide 0, was einem losen Vergleich entspricht. Dies kann auch durch Vergleich mit === vermieden werden.

switch-Anweisung

Da der Vergleich der switch-Anweisungen in case == ist, ist es leicht, im obigen Problem stecken zu bleiben. Die folgenden Artikel sind gut organisiert. Bitte beziehen Sie sich auf sie. Sechs Dinge, die PHPer über switch-Anweisungen wissen sollte

Referenzseite

Recommended Posts

Schreiben Sie solide mit PhpStorm
Schreiben Sie einen reaktiven Server mit Micronaut
symfony / http-kernel mit phpstorm & docker phpunit & xdebug
Schreiben Sie Tests für JavaFX-Anwendungen mit TestFX