コード表記のルール

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

コード表記のルール

投稿記事 by zxc » 12年前

  いろいろあるでしょうが、個人的にはこんな感じ。
初心に帰ると言うか、いまだ初心者ですけど。まぁやる気出すついでに。

クラス関連
・構造体のメンバに関数を持たせないで、データの集合型として使う。
・クラスのメンバ変数には原則private。protect修飾子は使わない。publicなんてもってのほか。
・変数の変更等はpublicで定義した関数ですべて行う。
・コンストラクタは基本的に、仮引数なしを定義し、他のパターンはオーバーロードする。
・フレンド関数は原則使わない。使う場合は概念的に関連がないが、値を用いたい場合のゲッタくらいか。
・シングルトン等のパターンを用いる場合、明確に表記を隔てる。
・抽象クラスの頭には「abstract_」普通のクラスには「C_」をつける。
・出来るだけ概念ごとにクラスで分割し、継承する。
・仮想関数は使えたら積極的に使う。
・出来るだけ自分の感覚で把握しやすい直感的な、クラスや関数を定義・実装する。
・関数、変数、ファイル名は接頭で修飾し、名前から性質がわかるものにする。
・クラスのメンバ関数は特に、複数の目的を持たせない。一つの目的を達成するためだけの関数にする。
・小難しい実装や概念は隠蔽(?)して、使用方法と導かれる結果の法則性が分かるようにする(コメント等)
ことで、原理を忘れても使える関数、クラスを作るように心がける。
基本的には「しないなら、エラーが出ない」ではなく「出来ないから、エラーは出ない」というものにする

その他
・#ifndef等でヘッダファイルの重複includeを防ぐ場合、用いる文字列は「ファイル固有名_H」
(インクルードしたいファイルがSTL関連なら、ファイル固有名の前に「STL_」をつける)
・ifはelseが使えたら使ってしまう。(使わない方が良いという人もいるらしい)
・if文では基本的に発生頻度が多い条件から処理するように記述し、elseなどで少数派を処理する。
・goto文は使わない。
・ロード関数は何度も呼ばない。

まだやったことがないが気をつけたい。
・別々のオブジェクトが同一のアドレスをさす可能性があるなら、STLの使用は控える等の
対策するか、コピーコンストラクタに適切に定義して回避する(きっとできるはず・・・)
・初期化リストでの初期化

 当たり前のことが多いのではないでしょうか。多数派であると信じたい。
仮引数にconstをつけることも慣習化したい。

 仮想関数は作るのは難しくない。しかしながら、より直感的かつ分かりやすい、
便利なものは作れないからあまり触れたくない・・・ 使うべきですけどね。
基本的には仮引数がない、戻り値がない、というものなら楽かな。
仮想関数は概念ではなく、機能と考えるべきか・・・?

  何でも出来るからこそ、処理の達成だけでなく、感覚的にあったものにしたい。むしろ感覚優先で。

トントン
記事: 100
登録日時: 14年前

RE: コード表記のルール

投稿記事 by トントン » 12年前

一部どのようにするのか気になったので質問します。
(コーディング規約は人それぞれだと思うので否定しているとかではなくてあくまで参考に聞きたいだけです)

>・シングルトン等のパターンを用いる場合、明確に表記を隔てる。
どのように隔てることを表記させるのでしょうか?

>・抽象クラスの頭には「abstract_」普通のクラスには「C_」をつける。
abstractが小文字、C_は大文字である理由はなんでしょう?
(見易さ的な感じ?)

>・#ifndef等でヘッダファイルの重複includeを防ぐ場合、用いる文字列は「ファイル固有名_H」
>(インクルードしたいファイルがSTL関連なら、ファイル固有名の前に「STL_」をつける)
「インクルードしたいファイルがSTL関連なら」というのはどのような状態でしょうか?

CODE:

#ifndef STL_VECTOR
#define STL_VECTOR
#include 
#endif
こんな感じでしょうか?

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

Re: コード表記のルール

投稿記事 by zxc » 12年前

こんな感じで隔てています。まぁあんまり意味はないですが、個人的にやった方がましです。

CODE:

class{
////////パターン名////////
パターンの実装
/////////パターン名end////////////

その他の実装

};
 STLの下りはそのとおりです。
mapにlistにvector。いずれも使われることが少なくない名称でしょうし、
STL以外のものを指していてもまったく違和感がありません。
別の箇所で使われていることもあるでしょう。

そういうことで、明確に明記できる場合には極力STLと明記します。
個人的には読みやすいですし、Dxlibで大量のエラーが出た苦い思い出があるので。
(Dxlibでは VECTOR とすでに宣言されているみたいです)

トントン
記事: 100
登録日時: 14年前

Re: コード表記のルール

投稿記事 by トントン » 12年前

zxc さんが書きました:  STLの下りはそのとおりです。
mapにlistにvector。いずれも使われることが少なくない名称でしょうし、
STL以外のものを指していてもまったく違和感がありません。
別の箇所で使われていることもあるでしょう。

そういうことで、明確に明記できる場合には極力STLと明記します。
個人的には読みやすいですし、Dxlibで大量のエラーが出た苦い思い出があるので。
(Dxlibでは VECTOR とすでに宣言されているみたいです)
stlのライブラリ内でも既にインクルードガードが入っていたと思うので不要かなと思います。
といっても、
>Dxlibで大量のエラーが出た苦い思い出があるので
とあるので、何か影響していたんですかね。

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

Re: コード表記のルール

投稿記事 by zxc » 12年前

  自分もよく分かりませんが、3D関係で「vector」という
名前の何かしらを使う場面があるようで、そのあたりかなぁ、と思っています。