私は最近C ++の学習を始めましたが、とても楽しんでいます。
私はよく、多くの言語よりもC ++で悪いコードを書く方が簡単で、見た目よりもはるかに深いことを読んだことがあります。
悪いコードを書かないようにしたいので、C ++で良いコードを書くために、私が何をしてはいけないのか、何をすべきなのかを考えていました。
私は最近C ++の学習を始めましたが、とても楽しんでいます。
私はよく、多くの言語よりもC ++で悪いコードを書く方が簡単で、見た目よりもはるかに深いことを読んだことがあります。
悪いコードを書かないようにしたいので、C ++で良いコードを書くために、私が何をしてはいけないのか、何をすべきなのかを考えていました。
回答:
C ++には非常に多くの落とし穴があり、それらを知らないと、非常に不安定なコードが作成され、大量のメモリリークとバッファオーバーランが発生します。ガベージコレクションを備えたより現代的な言語と比較すると、すべてのメモリを自分で解放する必要があります。また、コードは非常に低レベルです。独自のプログラムコード(多くのIEハックで悪用されています)を上書きすることを妨げるものは何もありません。
したがって、次に学ぶ必要があるのは、これらのリスクを軽減するプログラミング方法です。たとえば、スマートポインターを使用してオブジェクトを解放したり、データを処理するクラスでバイト配列をラップしたりします。
Scott Meyersの著書「Effective C ++」と「More Effective C ++」をお勧めします。
それらの本は本質的に私にC ++の美しさを教えてくれました。これらは初心者向けの本ではないことに注意してください。彼らはあなたがすでに言語に精通していることを前提としています。
C ++はさまざまな機能をサポートしています。同様に、さまざまな方法やスタイルで簡単に使いたくなるかもしれません。残念ながら、それはそれらの多くにうまく適合しません-したがって、そのような方法では、退屈でエラーが発生しやすくなったり、遅くなったりします。
または別の言い方をすれば、実際に何をしているのかがわからなくても、C ++を間違った方法で使用するのは信じられないほど簡単です(他の言語でははるかにサポートされています)。したがって、平易に学ぶことは間違った方向に導く可能性があります。そのため、良い本を読むことはおそらく他の言語よりも重要です(同じトピックに関するこの投稿を参照)。
たとえば、Javaは本質的にオブジェクト指向の言語です。あなたはそれを大きく異なるようにプログラムすることはできません。ただし、C ++ではできます。CまたはJavaで行うのと同じように使用できます。C++が優れているのはどちらの方法でもないため、このような場合はCまたはJavaを使用することをお勧めします。
したがって、C ++を最初から正しく実行するには、適切なスタイルとイディオムを知る必要があります。残念ながら、最初はかなり複雑になる可能性がありますが、単純なものから高度なものまで、いくつかあります。
const
inline
機能を、<<
または*
など?)void*
)。参照またはスマートポインターを使用するC ++の力は、それが素晴らしい言語であることです。C ++の欠点は、それが素晴らしい言語であることです。それは恐ろしいと同時に恐ろしいことでもあります。
あなたがそれを学びたいのなら-そして、あなたがそうすべきでない理由がないなら-あなたはそれをよく学ぶ必要があります。たくさん読む必要があります。途中で役立つ本がいくつかあります。特に演習を行う場合は、Accelerated C ++を使用すると始められます。効果的なC ++、効果的なSTL、卓越したC ++、およびそれらの継続的なシリーズは、作業方法を改善する方法について一口サイズのヒントが得られるゲームで最高です。
優れたコードを開発する上で役立つ1つのことは、経験です。とりあえず、言語にこだわって、使用法を改善する方法を検討するのに十分慣れるまで、「ベストコーディングプラクティス」についてあまり心配しないでください。あなたは何が良いのか、何が悪いのかを認識することを学びます。言語が下がったら、振り返って「わかりました。これを別の方法で実装する必要があった」または「これは面倒に見えますが、どうすれば改善できますか?」
私はそれについて次のように考えています。新しい話し言葉を習得する場合、単純な単語や「バス停はどこですか」の学習を始める前に、すぐに飛び込んですべての文法規則を学ぶのではありません。プログラミング(IMO)は第2言語(または第3、第4など)のようなものです。他の言語と同じように扱い、実践することで学びます。残りは時間とともに来るでしょう。
ほとんどの言語よりもC ++で悪いコードを書く方が簡単で、見た目よりもはるかに深いことをよく読んでいます
明確化:C ++では、他の言語よりも意図せずに悪いコードを書くことが簡単です。どんな言語でも悪いコードを書くことができますが、C ++では意図的に最善を尽くして着手しますが、C ++のせいで予期しないところに行き着くことがよくあります。実際よりも。しかし、C ++は進化しており、すべての新しいテンプレートライブラリはあなたの生活をより簡単(そして安全)にします。