C++の開発者が設計した際のルールの一つに
「C++はもしプログラマが間違っている可能性が
あったとしてもプログラマに選択の余地を与える。 」
とあるそうです(Wikipediaより)。
この「選択の余地」のおかげでC++の可能性が大きく
広がったのだろうと思います。
STLやMFCなど全く性格の違うライブラリが
開発されたり、テンプレート・メタ・プログラミングの
ようなトリッキーな手法も登場しました。
しかし、「選択の余地」が広いことによりシステムの
ソースコードが十人十色なってしまい、メンテナンスが
大変になりやすいのも事実だと思います。
関数の中で変数のメモリ一つ確保するにも、実態を定義
してスタックに確保するのか、ポインタとnewでヒープに
確保するのか、ヒープに確保するにしてもSTLのスマート
ポインタを使ってnew・deleteを隠蔽してしまうのか
プログラマの考え方一つで変わってしまいます。
こういった言語だからこそ、「Effective C++」のように
ルールとその根拠を挙げてくれる本は、コーディングに
一貫性を持たせてくれるので、今後の開発にとっても
役に立つと思います。
自分のコーディングを見直す新しいルールや、おぼろげながら
実践していた事が正しかったと確信するルールなど、最初から
最後まで中だるみすることなく楽しく読めました。