合理的思考-stitcher.io
(jp) =
<!–
–>

ときどき、Twitter で簡単なコーディング スタイルの質問をするのが好きです。 通常は次のようになります。ドキュメント ブロックに FQCN (完全修飾クラス名) を記述しますか? つまり、次のようなコードを記述しますか。
$arrayOfFoo = …
またはこのように:
$arrayOfFoo = …
もちろん、2 番目の例では、ファイルの先頭に完全なクラス名をインポートしたことを前提としています。
use \App\Models\Foo;
$arrayOfFoo = …
私はこの質問を何年にもわたっておそらく 3 ~ 4 回行ってきましたが、多くの回答者から一貫して同じ回答を得ています。彼らが何を扱っているかを知るためにファイルします。
私の答えは、何度も何度も、次のようなものでした。 プロパティの型、引数の型、戻り値の型? その場合も完全なクラス名を使用しますか?
class Bar
public function baz(\App\Models\Foo $foo): \App\Models\Foo
実際、その質問に「はい」と答えた人が 1 人いますが、公平に言えば、彼らは一貫しています。 しかし、他のすべての人はそうではないと言います。 彼らは次のように書いています。
use \App\Models\Foo;
class Bar
public function baz(Foo $foo): Foo
では、doc ブロック型 (PHP の型システムが制限されているために必要になる場合もあります) と実際の型の違いは何でしょうか? 一方をインポートしたいのに、もう一方をインポートしたくないのはなぜですか。 そして、一貫性がない場合、「一番上までスクロールしない」ことはどのように良い議論になるのでしょうか?
プログラマーは、自分の合理的な思考に誇りを持っていることがよくあります。 私たちは、非プログラマーとは少し異なる角度から問題を見ます。 多くの人が最初からプログラミングを始めたのは、おそらくこの性格特性です。
doc ブロックの内外で型を記述する方法に一貫性がないことは気にしません。 しかし、私 午前 より深い質問をし始めると、人々がそれについてもう少し考えることを余儀なくされると、その意見を擁護するのがいかに難しいかに常に驚かされます.
私たちが確信していると思うような意見がもっとあるのではないかと思います。 しかし、実際には、私たちは実際にはそれほどよく考えていませんか? タブまたはスペース、明るい配色または暗い配色、アクティブなレコードまたはエンティティ マッパー、依存関係の挿入またはサービスの場所など。
結局、不合理であることが判明した「合理的な意見」はいくつありますか? 習慣に基づく意見。 私たちが「最良の選択肢」と考えているのは、そうであるからではなく、過去に機能しており、快適に使用できるからです.
私たち — 「合理的な思想家」 — は実際、他のすべての人と同じように、時にはそれを知らずに感情に影響されているのでしょうか?
ところで、doc ブロックで常に完全なクラス名を使用する本当の理由は、PHP に import ステートメント用のリフレクション API がないためです。 したがって、クラス名を doc ブロックからその FQCN にマップする場合は、その PHP ファイルを手動で解析する必要があります。 注意: import ステートメントは解析が非常に難しく、エイリアス、部分的な名前空間のインポート、グループ化されたインポート、関数のインポートなどがあります。
幸いなことに、ここで説明する問題は、もはや実際には問題ではありません。 というパッケージがあります。 phpdocumentor/type-resolver この種の解析を正確にサポートします。
だから唯一の 本物 doc ブロック タイプのインポートに反対する議論は、もはやあまり関係がないことが判明しました。
私たちは自分の意見をどのくらい確信していますか? それらの意見をよく考えていなくても、どれだけ激しく感情的に擁護するのでしょうか? そして、私たちが間違っていたときにそれを認め、謝罪して先に進むことができますか?
タイプをインポートするかどうかに関係なく、タブやスペースをめぐって争いを始めたくありません。 ただし、自分の意見を批判的に検討することをお勧めします。 それらを十分に検討したかどうか疑問に思います。 そして、あなたがそれらを変えたいと思うなら、それらがあなたが思っていたよりも偏っていることが判明した場合.
あなたは今怒っていますか? 私が間違っていると言いたいですか? 私にメールを送るか、 つぶやき ちゃんとしたネット対戦ができる! いいえ、そうではありません。同意しない場合は、これらの考えに異議を唱えていただければ幸いです。ご連絡をお待ちしております。
ああ、私のコンテンツやこの種の投稿について最新情報を入手したい場合は、私のニュースレターを購読することを検討してください.
//platform.twitter.com/widgets.js