私はそれについてあまり心配する必要がないほど幸運だったのですか、それとも私は悪いプログラマーですか?
要件を気にしますか?パフォーマンスが要件でない場合は、心配する必要はありません。それにかなりの時間を費やすことは、あなたの雇用主に対する不利益です。
ある程度のパフォーマンスは常に要件です。あなたがそれについて考えずにそれを打つことができるなら、あなたはそれについて考えないことを正当化されます。
個人的には、テストに合格するまでに時間がかかると、ほとんどの場合、パフォーマンスに左右されます。一連のテストがパスする間、5分間待つのが待ちきれません。しかし、それは通常、テストをいじることによって解決されます。
私の質問は、なぜ多くのプログラマーがそんなに気にするのかということです。それは本当にほとんどの開発者にとって問題ですか、
気にかけていることを正当化する多くのプログラマーがいます。そうでない多くの人がいます。そうでない人について話しましょう。
プログラマーが学校で最初に学ぶことの1つは、物事を実際に機能させる方法の後、大きなO表記法です。それらの多くはレッスンを適切に学習し、nによって劇的に影響を受けるものに適切に焦点を合わせます。他の人は、数学を取得せず、一度動作する必要があるという教訓を取り除くだけです。さらに悪いことに、これらの学生の何人かは、コードを機能させ、高速に機能させること以外に、コードで何をすることが重要であるかについて他のことをまったく学ばない。見落とされた教訓:読みやすく、うまく設計し、理由もなく遊んではいけません。
Knuthは正しかった。時期尚早の最適化がすべての悪の根源だ。しかし、それが機能したら、次のステップは何ですか?速いよね?番号!次のステップは読みやすいです。読み取り可能は、最初、次、中間、最後のステップです。不要なパフォーマンスの最適化を行う人の多くは、バスの下で読みやすくしています。
一部の人は、コードがどれだけ読めないかというスリルを味わうことさえあります。彼らは、他の人が作成したコードを理解するのに苦労しなければならなかったので、今は投資回収の番です。
私はこれをしていたので、これを知っています。構造が完全に読み取り可能な5行を判読不能な1行のブール式にリファクタリングしたことがあります。私は望んでいた賞賛を得ることができませんでした。
コードが読みやすいままであれば、後で高速化するのは簡単です。それが、Knuthが「不要」ではなく「時期尚早」を強調している理由です。確かに、速いほど優れているからです。しかし、良いのは、あなたがそれのために何を犠牲にするかによってのみ良くなります。そのため、実際に必要なパフォーマンスがわかるまで待ってから、犠牲を払ってください。読みにくくなると、消極的になります。
可読性を超えて、ソフトウェア設計の全世界があります。このサイトの内容。設計に関して何をすべきかわからない人もいます。だから彼らはデザインに感銘を与えられないので、彼らは判読できない混乱を作ります。誰もコードを修正しないので、適切なコードである必要があります。
一部の人にとって、パフォーマンスとは、やりたいことをすべて実行するための言い訳です。プログラマーには多くの力と自律性があります。それらに信頼が置かれています。信頼を濫用しないでください。