フリーソフト

« 書式 | トップページ | 終わりに »

ルールの例外

このドキュメントは、Google C++ Style Guideを翻訳、要約したものです。省略した部分や意訳した部分が多くあります。原文の意図が伝わるよう注意しましたが、誤りが含まれているかもしれません。正確な情報については、必ず原文を参照してください。

前へ | 目次 | 次へ

ルールの例外

ルールに準拠していない既存のコード

このスタイルガイドに準拠していないコードを扱うときは、既存のコードのスタイルとの一貫性を維持するためにルールから逸れてもよい。

Windowsのコード

Windowsには、WindowsヘッダやMicrosoftのコードに由来する独自のコーディングスタイルが存在する。しかしながら、皆が理解しやすいコードを書くためには、あらゆるプラットフォームに共通のガイドラインに従うことが重要である。

Windowsプログラマが注意すべき点を以下に示す。

  • ハンガリアン記法(例:整数の名前をiNumとする)は使用禁止。Googleの命名規則に従うこと。ソースファイルの拡張子も .ccとすること。
  • Windowsは基本型に対する独自の別名を多く定義している(DWORD、HANDLEなど)。Windows API関数を呼び出す場合は、これらの別名の使用を推奨する。ただし、できるだけC++の基本型に近いものを使用するようにすること。例えば、LPCTSTRの代わりにconst TCHAR * を使用すること。
  • Microsoft Visual C++でコンパイルする際は、コンパイラの警告レベルを3以上に設定し、すべての警告をエラーとして扱うこと。
  • #pragma once; は使用禁止。代わりにGoogleのインクルードガードを使用すること。インクルードガードのシンボル名のパスはプロジェクトツリーのトップからの相対パスとすること。
  • どうしても使用せざるを得ない場合を除き、非標準な拡張はすべて使用禁止(#pragmaや__declspecなど)。__declspec(dllimport) と__declspec(dllexport) は使用してもよい。ただし、DLLIMPORTとDLLEXPORTのようなマクロを通じて使用すること。コードを共有する際にそれらの拡張を簡単に無効にできるようにするため。

Windowsにおける例外を以下に示す。

  • COMやATL/WTLクラス、インタフェースを実装する際には多重継承を使用してもよい。
  • ATLやいくつかのSTL(Visual C++に付属しているものを含む)では例外が広く使用されている。ATLを使用する際は、_ATL_NO_EXCEPTIONSをdefineして例外を無効にすること。STLの例外を無効する方法も調べなくてはならない。無効にできない場合は、コンパイラで例外をONにしてもよい。(これはSTLをコンパイルするためだけである点に注意。例外をハンドルするコードを自分自身で書いてはならない。)
  • プリコンパイル済みヘッダを使用する場合は、それらを自動的にインクルードするためのコンパイラオプション/FIを使用すること。ソースファイルの先頭で特定のヘッダ(StdAfx.hやprecompile.hのような名前)を明示的にインクルードする方法はとらないこと。他のプロジェクトとコードの共有が困難となる。
  • リソースヘッダ(通常 resource.hという名前でマクロのみを含む)は、スタイルガイドに従う必要はない。

前へ | 目次 | 次へ

« 書式 | トップページ | 終わりに »

技術文書」カテゴリの記事