0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミング言語 C++ 第4版 第6章

Posted at

『プログラミング言語 C++ 第4版』(ビャーネ・ストラウストラップ著)第6章の学習メモ。
章末のアドバイスへ、章の内容で補足を記載していく形式でまとめていく。

アドバイス

( "→" 以降は補足説明。)

  1. 言語仕様の決定事項は、ISO C++標準を参照しよう。
    → ISO:国際標準化機構。ISO C++標準はC++言語の国際規格。
  2. 指定されない動作と定義されない動作を避けよう。
    →標準が指定しない、あるいは、定義しない、とするものを使わないように動力することは、そのための時間と労力に見合うはずだ。
  3. 処理系定義の動作に依存する必要があるコードは、分離しよう。
    →処理系定義の機能は、プログラムを実行するハードウェアの違いと関連するものが多い。
    →処理系依存の影響を抑えるため、標準ライブラリ機能を可能な限り利用しておく。
  4. 文字の値に関する不必要な仮定は避けよう。
    →一般的な文字の値は0~127の範囲に収まっているので、その範囲外の文字だけが問題となる。
  5. 0で始まる数値が8進数であることを忘れないように。
    →単なる0は、10進数ではなく8進数。
  6. マジック定数を避けよう。
  7. 整数の大きさに関する不必要な仮定は避けよう。
  8. 浮動小数点型の精度と範囲に関する不必要な仮定は避けよう。
    →浮動小数点数リテラルの型は、デフォルトではdoubleとなる。
  9. signed charとunsigned charよりも、単なるcharを優先しよう。
    →ほとんどのアプリケーションでは、論理値にboolを、文字にcharを、整数値にintを、浮動小数点値にdoubleを用いれば済む。これら以外の基本型は、最適化、特殊用途、互換性のためのモノであって、使う必要がなければ、無視してかまわない。
    strcmp()のような標準ライブラリ関数は、単なるcharのみを引数として受け取る。
    →全体を通じて単なるcharを利用したうえで、負数にならないようにすれば、問題や混乱を避けられる。
  10. 符号付型と符号なし型とのあいだの型変換には注意しよう。
    →大きな正の数を表現するための1ビットをかせぐためにunsignedを利用する、というのは、よい考えではない。暗黙の返変換規則によって打ち砕かれることが多い。
  11. 一つの宣言では一つの名前だけを宣言しよう
    →宣言演算子(ポインタ(*)や参照(&)など)は、一個の名前のみに作用する。int* p, y;と宣言した場合、int* yとはならない。このような誤解を避けるため。
  12. 一般的で局所的な名前は短くして、そうでない名前は長くしよう。
    →名前を隠すのを最小限にするため。広域変数や大規模関数の局所変数に、ixなどの名前を用いるのは、トラブルの原因となる。
  13. 見た目が似ている名前は避けよう。
    →"o"の大文字(O)とゼロ(0)、"L"の小文字(l)と"i"の大文字(I)と数字の1など。
  14. オブジェクトには、型ではなく意味を反映した名前を与えよう。
    →char*の名前をpcnameとしたり、intのカウンタをicountとするなどは避ける。名前の型を変更する場合、その名前を利用するすべての箇所を変更しなければならない、プログラムの抽象化レベルを低下させるなどの問題がある。
  15. 命名規則は、一貫性を維持しよう。
  16. すべてが大文字となる名前は避けよう。
  17. スコープは、狭くしよう。
  18. 内側のスコープと外側のスコープとで同じ名前を利用しないように。
  19. 型名を用いた宣言には、{}構文の初期化子を使おう。
    →縮小変換を避けることができる。
  20. autoによる宣言には、=構文の初期化子を使おう。
    →autoの場合、{}はinitializer_listとして導出されてしまうため。
  21. 未初期化の変数は、使わないように。
  22. 組み込み型が表現する値が変化する可能性がある場合は、意味ある名前を定義するために別名を使おう。
  23. 型の同義を定義するために、別名を利用しよう。新しい型を定義するのであれば、列挙体とクラスを利用しよう。
  24. ポインタは暗黙裡にboolに変換できる。if(p!=nullptr)よりもif(p)を好んで利用する。
    →"pが有効ならば"を直接的に表現できるうえ、記述が短くなる。記述が短いほうが、エラーにつながりにくい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?