優れたソフトウェア開発者であるとはどういう意味ですか?
まず、作業している特定の技術スタックに関する深い知識が必要です。LAMP開発者の場合は、間違いなくPHPとMySQLの専門家であり、最新のフレームワークを知っており、Linux管理にある程度のスキルを持っている必要があります。
次に、重要なことですが、ワークフローで日常的に使用する補足ツールの実用的な知識です。
バージョン管理システム、継続的インテグレーションツール、仮想マシン管理サービス(Vagrantなど)、そして明らかに統合開発環境(IDE)を適切に操作できる必要があります。
この記事では、人気のある堅牢なIntelliJ IDEA IDE PhpStormと、わずかな労力で効率を簡単に2倍にし、コーディング中のバグを防ぐ方法について説明します。
IDEにとって最も単純で、おそらく最も重要なスキルである適切なキーボードの使用法から始めましょう。
経験豊富なプログラマーと通常のPCユーザーを比較すると、最初に気付くのは、プログラマーがほとんどすべての時間をキーボードの使用に費やし、マウスに触れることはほとんどないということです。それには理由があります:それははるかに効率的です。
タイピングはIDEスキルに直接関係していませんが、キーボードを凝視してすべてのキーを見つける必要がある場合、ショートカットは役に立ちません。
まだ1分間に50語(WPM)を入力していない場合は、次のようなタッチタイピングトレーニングウェブサイトを見つけてください。 TypingClub.com 、そしてあなたの速度を上げます。
次のような競争力のあるタイピングウェブサイトもあります TypingRaces.com 、タイピングで他の人と競争できる場所。私の推薦?毎日朝のウォームアップとしてレースに参加します。
学ぶための最速の方法は、キーボードショートカットに代わるものを自分に与えないことです。
ショートカットを勉強していたとき、すべてのメニュー、タブ、ナビゲーションバーなどをオフにしました。[表示]メニューに移動してすべてのマークをオフにすることでもできます([ステータスバー]を終了することもできます)。
私のIDEは次のようになります。
ご覧のとおり、ショートカットの使用は避けられません。
ラップトップを壊す調整段階を乗り越えるのに、約3〜4日かかりました。
モチベーションが低下していることに気付いた場合、PhpStormには生産性ガイドが組み込まれています。これには、機能のリストと各機能の使用統計が含まれています。 [ヘルプ]、[生産性ガイド]の順にクリックすると、次のように表示されます。
ご覧のとおり、ショートカットを使用すると、(6か月の間に)20,000を超える追加文字を入力する必要がなくなり、約1,000のバグを防ぐことができました。かなりやる気を起こさせます!
また、あまり使用しない機能も教えてくれ、ショートカットスキルを向上させることができる場所を特定します。統計を確認し、知識を賢く使用してください。
Jetbrainsは、利用可能なすべてのショートカットがリストされた便利なPDFを提供します。 公式ドキュメント 、さらに 「見逃せないキーボードショートカット」のリスト 。あなたがあなたの睡眠中にそれをすることができるまで、これをすぐに学び始めてください。
断然、私のお気に入りのショートカットは次のとおりです。
Ctrl+ E
-最近使用したファイルを切り替えますCtrl + /
-コードのブロックをコメント化/コメント解除しますCtrl + B
-クラス宣言に移動しますCtrl + N
-クラスに移動しますCtrl + R
-検索して置換Ctrl +Alt + L
-コードを再フォーマットしますAlt + Enter
-意図的なアクションとクイックフィックスを表示するCtrl + Shift + Enter
-完全なステートメントこれらのいくつかは自明であり、他はもう少しカバレッジを使用することができます。
2つのファイルを頻繁に切り替える必要があると想像してください。アプリのビジネスロジックを備えたPHPクラスと、それをレンダリングおよび出力するために使用されるテンプレートとの間。
多くの開発者は、キーボードからマウスに切り替え、ファイルのあるタブに移動してクリックし、スクロールホイールで必要な部分を見つけます。問題:非常に遅いです!
Ctrl + Eを押してからEnterキーを押すだけの方がいいのではないでしょうか。
Ctrl + Eを押すと、最近使用したファイルのリストが表示されます。すぐにEnterキーを押すと、現在のファイルの直前に使用したファイルに切り替わります。
戻りたい場合は、同じシーケンスをもう一度押してください。
これは、3回のキーストロークで、2つのファイルを切り替える最速の方法です。 1日に何百回もこれを行わなければならないときに、どれだけの時間を節約できるか想像してみてください。
最新のIDEはエラーを強調し、コードを改善するためのいくつかの提案を提供します。カーソルをコードの不完全または文書化されていない部分に移動すると、電球のアイコンが表示され、それをクリックすると、可能なアクションのポップアップメニューが表示されます。
Alt+Enter
を押すことで同じアクションを実行できますが、これははるかに便利です。
上のスクリーンショットの場合、PhpStormには2つのオプションがあります。関数にPHPDoc仕様を追加する(これは非常に良いアドバイスです。しばらくお待ちください)。未使用のパラメーターを削除します。
同じショートカットを他の多くの一般的なアクションに使用できます。クラスプロパティのゲッターとセッターの作成、コンストラクターでのフィールドの初期化、未定義のメソッドとプロパティの追加などです。
SpringBatch並列処理の例
このショートカットは非常に簡単であると同時に非常に便利であり、まさにその内容を実行します。
たとえば、$i = 0
と入力した場合次にCtrl+Shift+Enter
を押しますその直後に、PhpStormは式にセミコロンを追加します。 if
と入力した場合その後のショートカットで、PhpStormは角かっこを追加します。
このショートカットはできるだけ頻繁に使用してください。すべてのコードが標準構造で構成されているため、時間を大幅に節約できます。構造体の記述速度が上がると、コードの記述もはるかに高速になります。
ショートカットを使用すると生産性が大幅に向上しますが、それだけでは不十分な場合は、次のレベルはIdeaVimプラグインです。
ご存知かもしれませんが、 私が来た は、LinuxオタクやDevOpsのエンジニアがコマンドラインからリモートサーバーを管理するために広く使用しているコンソールテキストエディタです。
Vimには2つの重要な特徴があります。
まず、学ぶのは難しいです。第二に、あなたがそれをよく知っているならば、それは報われる。テキスト編集の生産性は、 どれか GUIエディター。また、キャリアの中で、Vimなどのコンソールエディターを使用せざるを得ない状況もあります(たとえば、リモートWebサーバーで何かを修正する必要があり、コンソールアクセスしかできない場合)。
しかし、VimはPhpStormとどのように関連していますか?
多くの開発者は、Vimの効率と最新のIDEの機能(コード補完、クラス検索、高度な検索、ナビゲーションなど)を組み合わせたいと考えています。そのために、IdeaVimプラグインが作成されました。
重要な注意:これからは、Vimの基本を知っていると思います。そうでない場合は、ほとんどすべてのLinuxディストリビューションでアクセス可能なvimtutorでVimの使用を開始できます。 openvim 。
1。 [ファイル]、[設定]、[プラグイン]の順に移動し、プラグインの検索ボックスに「IdeaVim」と入力します。プラグイン名の右側にあるチェックボックスをマークし、「適用」をクリックします。 2.2。 PhpStormを再起動します。 3.3。 [ツール]、[Vimエミュレータ]の順にチェックしてプラグインをオンにします
四。 元のPhpStormショートカットとVimショートカット(プラグインで有効)は互いに競合する可能性があるため、これらの競合を手動で解決する必要があります。 [ファイル]、[設定]、[その他の設定]、[Vimエミュレーション]の順に移動します。競合するショートカットのリストが表示されます。このリストでは、そのキーシーケンスにバインドされたPhpStormショートカットとVimショートカットのどちらを使用するかを選択できます。下のスクリーンショットで私の現在の選択を見ることができます。決定できない場合は、ショートカットを未定義のままにしてください。 PhpStormは、初めて使用するときに選択するように求めます。
プラグインをオンにすると、編集領域がVimのようになることがすぐにわかります。
この時点から、h
、j
を使用して、Vimで行うのとまったく同じようにファイルの編集を開始できます。 、k
、l
ナビゲーション用のキー、およびi
通常モードと挿入モードを切り替えるためのキーなど。
ほとんどすべてのVimショートカットがプラグインでサポートされています。
同時に、IDEのすべての機能が引き続き存在するため、キーボードのみを使用して(Vimのように)テキストを非常に高速に編集し、クラス、ファイル、使用法、定義の間をジャンプできます(PhpStormの最新のワークフローのように)。
通常のテキストエディタに対するIDEの最大の利点の1つは、高度な検索を実装できることです。
小さなプロジェクトだけで作業した場合は冗長に見えるかもしれませんが、クラス間の複雑なOOP関係を持つ大きなコードベースで作業を開始すると、それがいかに不可欠であるかがわかります。
一般的な検索(Ctrl + F
)または検索と置換(Ctrl + R
)によってファイル内の特定の文字列を見つけるのは簡単ですが、何千もの特定のクラスの定義を見つける必要がある場合はどうでしょうか。ファイル?または、数千行のコードを含むクラスで特定のメソッドを見つけたい場合はどうでしょうか。または、検索結果からすべてのコメントを除外したいですか?そこで、PhpStormのような最新のIDEが役立ちます。
このセクションでは、PhpStormで最も役立つ検索のバリエーションを紹介します。
通常の検索の後、最も簡単な検索は、プロジェクトのサブフォルダー内のすべてのファイルで特定の文字列を検索することです。 PhpStormに簡単に実装できるので、他のどの検索オプションよりもはるかに頻繁に使用します。
たとえば、クラスの使用法を検索しますUser
私のサンプルアプリでは。
1。 Ctrl + Shift + F
を押します。検索オプションを含むポップアップウィンドウが表示されます。クエリ文字列に「User
」と入力します。 [プレビュー]タブにいくつかの結果が表示されます。
2.2。 これで、[プレビュー]タブに切り替えて、必要な結果を手動で見つけることができますが、100を超える一致があります。面倒!もっと具体的にしましょう。
まず、クラスの使用法を検索しているので、「単語全体のみ」オプションをチェックしましょう。 E_USER_ERROR
のような結果を回避するのに役立ちます。
次に、コメントと文字列リテラルでの検索を除外し、結果を.php
で制限しましょう。ファイルのみ。
また、プロジェクトのより具体的なサブフォルダーを指定することが理にかなっている場合もあります。この場合、すべてのプロジェクト固有のコードはapp
にあります。フォルダ。
それでは、スコープディレクトリをexample-app/app
に変更しましょう。
これで、次のような検索ウィンドウができました。
検索パラメータをより具体的にすることで、結果の数を数百からわずか24に減らしました。
今では、それぞれを手動で調べるのは非常に簡単です。さらに、非常に便利なプレビュータブがあるため、各ファイルを個別に開く必要もありません。
オリンピックシンボルは、のゲシュタルト原理の例です。
日常の練習では、パス検索での検索は、私が行うすべての検索の約80%をカバーしています。非常に便利なので、検索に他に何も使用しなくても、かなり効率的です。
PhpStormのもう1つの非常に重要な機能(すべての最新のIDEと同様)は、クラスと関数の使用法と宣言の間をジャンプすることです。
新しいUser
を作成する関数があるとしましょう。明らかに、User
のすべてのメソッドとプロパティを覚えているわけではありません。クラスなので、クラスの宣言を調べて、必要なすべてのアクションを実行する方法を決定する必要があります。それを行うにはいくつかの方法があります。
まず、クラス宣言を読み取り専用のクイックポップアップウィンドウとして開くことができます。
カーソルを任意のクラスの使用法に移動し、Ctrl + Shift + I
を押すだけです。読み取り専用ウィンドウが表示されます。
必要なすべてのデータを調べて、最初のファイルに戻ることができます。非常に高速です。ファイルを切り替える必要もありません。
ただし、前述したように、ポップアップウィンドウは読み取り専用であるため、User
で何かを変更することにした場合クラスを調べている間、別のショートカットが必要になります:Ctrl + Shift + B
。
これにより、クラスに直接移動します。変更を加えるときは、Ctrl + E, Enter
を使用して簡単に初期ファイルに戻ることができます。前に説明したシーケンス。
私が日常的に使用している検索機能の最後のバリエーションは、「クラス構造による検索」です。 PHPクラスが非常に長く、特定のプロパティやメソッドを見つけるのが難しい場合があります。
Ctrl + F12
を押すとクラスファイルを開いている間、クラスの構造を示すポップアップウィンドウが表示されます。
メソッド名の入力を開始すると、入力したパターンに一致するメソッドのみが表示されます。
約100個のメソッドがあり(これは良い習慣ではありませんが、そのようなコードに遭遇する可能性があります)、2つを頻繁に切り替える必要があると想像してください。通常の検索を使用すると、夢中になります。
代わりにファイル構造検索を使用すると、すべてのスイッチで約5回のキーストロークが必要になります。 Ctrl + F12
と入力し、目的のメソッドの名前の入力を開始し、Enter
を押すだけで、その宣言が表示されます。
ちなみに、Ctrl + F12
は便利なショートカットではないため、別のショートカットに変更することを検討してください。個人的にはAlt + R
を使用しています。
PhpStormにはさらに多くの検索方法がありますが、これら3つはほとんどすべての日常の検索タスクをカバーできます。
Ctrl + Shift + F
)で検索を使用し、検索オプション(フィルタリング)をできるだけ具体的にするようにしてください。Ctrl + Shift + I
を使用してくださいクイックポップアップウィンドウで調べます(編集する必要がある場合は、代わりにCtrl + Shift + B
で宣言に移動します)。Ctrl + F12
を使用してください。デフォルトでは。ショートカットを使用すると、コードをすばやく記述してナビゲートできますが、オートコンプリートとライブテンプレートなど、コードをさらに改善する方法があります。
基本的なオートコンプリートは非常に簡単であり、あなたは確かにそれについて知っている必要があります。
クラス、メソッド、または変数の名前を入力し始めると、優れたIDEは、可能な終了のリストを表示します。それらのいずれかを選択し、最後まで入力しないようにすることができます。
そうは言っても、ライブテンプレートを使用するとさらに先に進むことができます。
このセクションでは、私が日常業務で使用しているライブテンプレートを学習します。私はそれらを3つのグループに分けます:基本的な言語構造、長い名前の関数、そしてHTMLチャンク。
言うまでもなく、開発者はwhile
、for
、foreach
、if
などの標準言語構造を使用します。 1日に何度も入力するため、毎回最初から入力するのは非常に非効率的です。そのため、PhpStormにはそれらの組み込みのライブテンプレートがあります。
人生を変えるライブテンプレートマジックの場合は、PhpStormを開いて、forek
と入力します。編集エリアで、Enter
を押します。これが表示されます:
PhpStormは、テンプレートを完全なforeach
に置き換えました必要なすべての変数のスタブを循環させて準備します。正しい変数名を入力するだけです。
Ctrl + J
を押すと、コードの現在の場所に適用できる、現在サポートされているライブテンプレートのリストが表示されます。あなたはそれらのどれでも選ぶことができます。
お気づきかもしれませんが、ここでは非常に頻繁な構造が欠落しています。たとえば、私は常にwhile
のライブテンプレートを見逃していますサイクルなので、作成しましょう!
[設定]、[エディタ]、[ライブテンプレート]の順に移動し、[PHP]を選択して、ポップアップウィンドウの右上にある緑色の[+]をクリックします。
「abbreviation」フィールドに「wh」を入力し、「description」フィールドに「while(bool_expr){…}」を入力します。 「テンプレートテキスト」フィールドには、次のものが必要です。
while($EXPR$) { $END$ }
「テンプレートテキスト」テキスト領域の下にある「定義」リンクをクリックし、リストから「PHP」を選択すると、このテンプレートをどのコンテキストで使用するかがわかります。
ダッシュボードのデザイン方法
それでは、それがどのように機能するかについて説明しましょう。
wh, Enter
と入力すると編集領域では、テンプレートテキストに置き換えられます。
カーソルは最初のテンプレート変数$EXPR$
に移動します。この場合、任意の式($i > 0
など)を入力してEnter
を押すことができます。再び。
その後、カーソルは次の変数(この例では1つしかありません)に移動します。 $END$
は、すべての変数が入力された後にカーソルが移動する場所を示す特別な変数です。
変数は1つしかないため、$END$
に移動されます。 $EXPR$
を入力した直後に、サイクルボディを入力する準備が整います。
頻繁に使用するすべての言語構造用に独自のライブテンプレートを作成します。このような構造を最初から入力することに毎日時間を費やすよりも、事前に時間を費やす方がはるかに優れています。
残念ながら、PHPは、長くて一貫性のない関数名を持つ言語の評判があります。
良いニュースは、ライブテンプレートを使用してそれらを短い略語に置き換えることができるということです。たとえば、配列にキーが存在するかどうかを適切に確認する場合は、関数array_key_exists($my_key, $my_array)
を呼び出す必要があります。
標準のオートコンプリートを使用しても毎回入力するのは非常に面倒なので、そのような場合はすべてライブテンプレートを作成するだけです。
個人的には、array_key_existsには「ake」が好きです。他のものを選択できます。 「ake」ライブテンプレートを作成する方法は次のとおりです。
最後に、ライブテンプレートの最も一般的な使用法は、HTMLチャンクの処理です。
ライブテンプレートをまだ使用していない場合は、標準のHTMLマークアップ要素を作成するために、多くの面倒な(そして基本的には役に立たない)作業を行っているに違いありません。ライブテンプレートは、上記で行ったことを実行することでそれを変更しますが、「テンプレートテキスト」フィールドはHTMLです。
これまで、PhpStormの効率に関するヒントとコツを学びましたが、まだまだあります。効率はそれが役立つ唯一の領域ではなく、プログラムを最初に実行する前であっても、バグを回避するのに役立ちます。
箱から出して、PhpStormは明らかなエラーについて教えてくれます。
たとえば、ステートメントの後にセミコロンを忘れた場合、セミコロンは赤でマークされますが、その機能は簡単なので、説明しません。
興味深いのは、PhpStormがはるかに複雑なバグについて教えてくれたとき、PHPDocsを介して必要な情報を提供したときです。
理想的には、PHPDoc仕様はすべてのメソッドでチームに必須であり、可能な限り厳密に作成されています。 User
の例を考えてみましょう再びクラス。 User
の配列を返す関数があると仮定します。オブジェクト:
デフォルトでは文書化されていないため、他の開発者は戻り値のタイプを知らず、不適切に使用する可能性があります。
たとえば、他の開発者がユーザー名のリストを取得したいと考えています。何らかの理由で、彼女は、User
と考えています。オブジェクトにはgetName()メソッドがあります。しかし実際にはそうではないので、開発者は間違いを犯します。
PhpStormは、$ user変数について何も知らないため、これをバグとして扱いません。そのため、気付かれずに、非常に厄介なエラーが発生します。
最初のオプションは、PHP7で可能になった厳密な型指定をオンにすることですが、何らかの理由でそれができないと仮定しましょう。たぶん私たちはレガシーコードを扱っています。この場合、PhpStormは私たちがそれを許せば私たちを助けてくれます。
これを機能させるには、すべての関数に対してPHPDocを生成する必要があります。これは一般的に良い習慣と考えられており、バグを回避したり、他の開発者と仲良くしたり、雇用主がソースコードを調べるインタビューに合格したりするのに役立ちます。
PHPDocを生成するには、カーソルを関数の名前に移動し、Alt + Enter
を押し、ポップアップメニューで[関数のPHPDocを生成]項目を選択して、Enter
を押します。再び。
基本的なPHPDocテンプレートが表示されます。
PhpStormは戻り値が配列であると推測しましたが、User
の配列であるとは推測できませんでした。オブジェクトなので、代わりに「array」を「User []」に変更して、これを明示的に規定しましょう。
PhpStormにメソッドについて知っておくべきことを伝えたので、getUserNames()
に戻りましょう。メソッド呼び出し:
PhpStormがPHPDocの戻り値の型宣言を解析できるようになったので、エラーを指摘し、正確に何が間違っているかを示唆することさえできます。 PhpStormをPHPDocsと組み合わせると、PHPを非常に厳密な言語にすることができます。素晴らしい結果です!
カバーされているすべてのトピックは PHP開発 、PhpStormは非常に強力なIntelliJプラットフォームに基づいており、PHPの世界から遠く離れたさまざまな言語、フレームワーク、および技術スタックでの使用を可能にします。
バックエンド開発者であっても、フロントエンドの問題を時々解決する必要があります。これは、HTMLマークアップの簡単な修正、RESTクライアントへのパラメーターの追加、AngularJSでの記述などです。幸いなことに、これらはすべてPhpStormで実行できます。
基本的な経験則は次のとおりです。箱から出してサポートされているかどうかを確認します。そうでない場合は、プラグインを探してみてください。
たとえば、Javascript、CSS、およびLESSやSASSなどの一般的なCSSプリプロセッサがすぐにサポートされます。 AngularJSのサポートはプラグインとして簡単に追加できます(インストールパスはIdeaVimプラグインの場合と同じです)。この考え方により、考えられるほぼすべてのフロントエンドタスクを解決できるようになります。
通常、アプリケーションデータベースはコマンドラインまたはMySQL Workbenchなどの特別なツールを介して管理されますが、PhpStormはここでも役立ちます。
画面の右端にある[データベース]をクリックするだけで、利用可能なデータベースのリスト(最初は空)と、共通の編集領域のようにオートコンプリート機能を備えたクエリウィンドウが表示され、非常に便利です。
PhpStormは、ほとんどすべての最新のデータベースをサポートしています。 MySQL、PostgreSQL、Oracle Database、およびSQLiteはすぐにサポートされますが、MongoDBはプラグインのインストールによってサポートされます。
最後の最も驚くべき非PHPの例は、MEANスタック開発です。
MEANは、MongoDB、ExpressJS、AngularJS、Node.jsの略です。
これはトレンドのテクノロジースタックであり、ほぼすべての場所で使用されています。これは非常に高速で、高速で軽量のWebサービスに非常に適しています。
PHP開発者としても、私は時々作成します Node.js PHPプロジェクトの補足ツールとしてのサービス(WebSocketサービス、単純なチャットボットバックエンドなど)。
ご想像のとおり、MEANスタックのすべてのコンポーネントはPhpStormでサポートされているため、MEANスタックプロジェクトを作成する必要がある場合は、別のIDEは必要ないことに注意してください。 PhpStormは完璧に仕事をします。
PhpStormのパワーとこの記事で取り上げた主要なスキルセットを使用すると、入力を完了する前に効率を高めてバグを防ぐことができます。
関連: 言語サーバープロトコルチュートリアル:VSCodeからVimへ