不確実性、疑い、および静的分析

in Vlog

(jp) =

型システムと静的解析に関して言えば、PHP は奇妙な言語です。 作成された当時は、非常に動的で型付けの弱い言語でしたが、オプトインではあるものの、より厳密な型システムを持つ言語に向けてゆっくりと進化しています。 開発者は、必要に応じて動的で型指定されていない PHP コードを記述することもできますが、PHP の型システムを定期的に使用する傾向にある人が増えているようです。

この傾向はコミュニティ全体で見られます。

  • PHP の内部チームは、近年ますます多くの型システム関連の機能を作成しています。
  • PHPStan、PhpStorm、Psalm などの外部静的解析ツールの台頭。 と
  • フレームワークはますます厳密な型に依存するようになり、Laravel のジェネリックのようなサードパーティの静的解析構文を採用することさえあります。

これは良い進化だと思いますが、PHP コミュニティ内には、より厳密な型システムを使用したくない、または静的分析に依存したくないという大きなグループがあることも認識しています。

私は何年にもわたってそのグループと何度か話し合いをしてきましたが、意見が一致していないようです。 より厳密な型システムと静的分析を支持して議論を展開すると、応答として次のような結果が得られます。 確かに、しかし、これらすべてのタイプを記述するには冗長すぎるため、コードが自分の好みに合わせて厳密になりすぎて、十分なメリットが得られません。

そのため、null の問題に関する最新のビデオに取り組んでいるときに、議論を表現するさらに別の方法を考え出しました。これは、一部の人々に、型と静的解析が (そのオーバーヘッドにもかかわらず) 利益を得る可能性を少なくとも検討するよう説得することを望んでいます。彼ら。

それで、ここに行きます。 試行番号 I-lost-count:

コードの作成と保守に関する私の主な苦労は、どのパターンを使用するか、どのパフォーマンス最適化を適用するかということではなく、きれいなコード、プロジェクト構造、またはその他の問題でもありません。 それは不確実性と疑いについてです。 これは次のようになります。

  • この変数は常にインターフェイスのオブジェクトになりますか X?
  • プログラムがクラッシュしないことを確認するために、ここに余分な null チェックを書く必要がありますか?
  • これらのパラメーターをどの順序で再度渡す必要がありますか?
  • この配列にはどのようなデータが含まれていますか?
  • 外部ドキュメントを読まないと、この関数が何をするのかわかりません。

私が悩まされているのはこの種の質問と疑問であり、ほとんどの場合、静的アナライザーが私に代わって答えてくれるのはそのような種類の質問です。

いいえ、より厳密な型システムを使用し、静的分析に依存しても速度が低下することはありません。 生産性が 10 倍になり、多くの不確実性と疑いが取り除かれ、解放されます。これなしではコーディングできません。

tpyoに気づきましたか? PR を送信して修正することができます。 このブログの最新情報を知りたい場合は、私をフォローしてください。 ツイッター または私のニュースレターを購読してください:

//platform.twitter.com/widgets.js

関連記事

前の投稿
犬はトウモロコシを穂軸で食べてもいいですか?
次の投稿
なぜ犬は石を食べるのですか?