Index: [Article Count Order] [Thread]

Date:  Fri, 01 Feb 2002 11:41:24 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:03178] Re: C++	のコーディング標準について
To:  extremeprogramming-jp@....jp
Message-Id:  <20020201114124X.hiranabe@....jp>
In-Reply-To:  Your message of "Fri, 1 Feb 2002 11:02:45 +0900"	<200202010202.LAA05134@....jp>
References:  <200202010202.LAA05134@....jp>
X-Mail-Count: 03178

平鍋です.

私も調べたことがあるのですが,新しい ANSI/ISO の C++
を前提にしたものはしりません.

  http://www.multimania.com/pierret/cpp2.htm

に,いくつかリンクがありますが古いですね.

たぶん,C++コーディングルールでポイントとなるのは,

(1) template

オブジェクト指向から外れるので,なるべく使わない,という
方針もあり得る.し,「これぞ C++」という generic programming
を擁護することもできそう.(さらには generative programming へ)
(参考図書: Multi-Paradigm Design in C++
「マルチパラダイムデザイン」, Generative Programming)

# EC++ などでは template も使えないし...

(2) exception

少し前だと,これも使わないという方針を見受ける.
しかし,現代的にはこれがないと見にくいコードになる.
ただし,C++ でexception safeなコードを書くのは思っているより
10倍は厄介.template が絡んだ場合,exception nutral な設計
も必要となる.
(参考図書: Harb Sutter の Exceptional C++)

# EC++ などでは exception は使えないし...

(3) namespace

これが使える処理系であれば,うまく名前の衝突が避けられる.
昔は,クラスの先頭2文字をパッケージ毎に固定する,などのルー
ルが見られた.
(参考図書: Large-Scale C++ Software Design「大規模 C++ デザイン」)

# EC++ などでは namespace 使えないし...

(4) multiple inheritance

これも実装では避ける,という方針を見受ける.
これを使ってしまうと,思ってもみない厄介をしょいこむ可能性が
ある.特に,virtual inheritance.

# EC++ などでは multiple inheritance も使えないし...

その他,auto_ptr, オペレータ多重定義を使うか,などなど,
難しい問題が山程あります.

実際「現場の」コーディング標準では,ISO/IEC C++ 仕様をどこま
で絞って使うかがポイントと思います.絞り方は,

(1) オブジェクト指向設計で開発するのか
(2) 想定される処理系(多くのコンパイラで動かすのか)
(3) プログラマのスキルと教育
(4) あつかうドメイン(例えばコンテナライブラリの開発なら
templateは外せないでしょ)

などが基準となるでしょう.

以上