自分でも具体的に言いたいことが表せないかもしれませんが
よろしくお願いします。
なかなかこれで決まりというスタイルが確立しないのですが、
何かに頼りたい自分としては、そういうことを幅広く扱っている
本などがあれば参考にしたいです。
結局最後は自分で決定するしかないということは、頭では分かっているつもりですが・・・
悩んでいることの例としてはたくさんあって、
・エラーを表示する関数名として
disp_errorなのかdisply_errorなのかshow_errorなのか
それともアンダーバー無くしてshowerrorなのか
・最大アイテム数を表す定数名として
ITEM_MAXなのかMAX_ITEMなのかITEM_NUMなのか
・データを格納するテーブル名を表す変数名として
tablenameなのかtableだけでいいのか
・~の~の~のアイテムという変数名の場合
など、これだけならそれらを聞けば解決するのですが、まだまだあります・・・
周りからみれば些細(どうでもいい)なことだと思うので
本とかをあまり見かけないのですが、
こういうことに言及しているサイトなり本などはご存知でしょうか?
No.5ベストアンサー
- 回答日時:
★私の場合
・表示関連の関数が多数ある場合は統一させる意味で DispError() としています。
よって表示関連の関数群は DispXXXX() と先頭4文字をつけます。
その他
初期化用なら→InitXXXX()
アイテム関連→ItemXXXX()
と先頭n文字を統一させています。
・記号定数の場合も考えは同じで
最大~~~は MAX_XXXX
最小~~~は MIN_XXXX
アイテム関連は ITEM_MAX_XXXX のように ITEM_XXXX から始めます。
・テーブルの場合は末尾を Table の5文字に統一させています。
名前テーブル→NameTable
道具テーブル→ItemTable
魔法テーブル→MagicTable
コメントもなるべく文字数を揃える(構造体,共用体,クラスなど)
・C言語の時
ローカル変数はすべて小文字(単語区切りは(_)下線文字)
グローバル変数は先頭を大文字、2文字目から小文字(単語区切りは(_)下線文字)
※グローバル変数は構造体を使って1つだけを定義するのが基本。→extern の場合は。
・C++言語(クラス)の時
グローバル変数は先頭に g_ を追加
クラスのメンバ変数は先頭に m_ を追加
class hero {
int m_x;
int m_y;
int m_Lv;
int m_HP;
int m_MP;
long m_exp;
long m_gold;
public:
hero();
~hero();
public: ←区切りの意味で記述
int getX();
int getY();
int getLevel();
void setLevel( int n );
long getGold();
public: ←区切りの意味で記述
その他のメンバ関数
};
クラスのメンバ関数は小文字から始めて単語の境で大文字を混ぜる。
・こんな感じです。
参考資料:
http://sec.ipa.go.jp/download/files//report/2005 …→『コーディング作法ガイド』
http://sec.ipa.go.jp/download/dl.php?filename=ev …→『高品質実装のためのコーディング作法』
書籍:
http://www.amazon.co.jp/dp/4798111899/→『組込みソフトウェア開発向けコーディング作法ガイド』
過去質問より:
http://oshiete1.goo.ne.jp/qa2271876.html→『あなたのC言語コーディング規約』
http://oshiete1.goo.ne.jp/qa2963476.html→『C/C++ ソースのコーディングについて』
↑
私も以前こちらで質問した過去があります。
参考URL:http://www.amazon.co.jp/dp/4798111899/
ご返答ありがとうございます。
Oh-Orangeさんも質問されてたんですね。
>・表示関連の関数が多数ある場合は統一させる意味で DispError() としています。
なるほど、使い分けということですね。
自分はさらにDispかDisplyかっていうところまで気になっちゃうんですよね(もう病的かもしれません・・・)
Displyにしたら、そのプログラム内では他の関数名もなるべく省略しないように
書くべきというかそうした方がいいんですか?例えば、InitならInitialize
>http://sec.ipa.go.jp/download/files//report/2005 …
これ凄いですね・・・
言語ごとにこういうのがあれば見たいのです。
例えばPHPとか基本的(大まか)な書き方は大体同じような感じがしますが、
なんとなく違くないですか?
どちらも別に詳しくは知らないので、イメージだけで言ってますが・・・
>クラスのメンバ変数は先頭に m_ を追加
自分の中で常に小規模(規模ってほどでもないか)なプログラムしか
想像してないからかもしれませんが、
>int m_x;
>int m_y;
これだけ抜きとって見ると、なんか違和感があって
だったらxやyだけでいいや、という気持ちになります。
ただこういうのは絶対にm_や他のプリフィックスが必要だと感じていて
自分の中で踏ん切りをつけたいですね。
No.6
- 回答日時:
この様な話ははっきりいって宗教論なので、
絶対にこのようにするというようなことはありません。
なので、これらを使うように強く流布している物は殆どありません。
あとはセンスの問題でもあるかもしれません。
殆どの場合が、そのプロジェクトや会社、グループの単位で
コーティング規則を設けるなど対策を講じています。
どの様に書くかは状況によって変えられるような視野を
持つことが大切だと思います。
プロジェクト単位でコーティング規則が無い場合は、
他人が書いたコードを編集する場合など出来るだけ、
周りの前任者のコードに合せてコードを編集することです。
でなければ、いくら可読性を考慮した書き方であっても、
イキナリ全く違う規則が入り混じって書かれたコードは
ナンセンスだからです。
つまり、どれだけ自分の信じた方法が良いと思っていても、
ソースコードがどれだけ一貫して書けるかに尽きると思います。
例えば:
・フラグを表す変数として
hogeflagと書かれていて、長すぎるから今回から追加する、
テーブル名の変数名としてfhugaにしようというのはまずいです。
#hogeflagであるならhugaflagにすべきという意味です。
#ただこれも人によって違うと思うので参考程度に。
ご返答ありがとうございます。
自分なりに理解できました。ありがとうございます。
>他人が書いたコードを編集する場合など出来るだけ、周りの前任者のコードに合せてコードを編集することです。
こう考えると、やっぱり全世界でって言ったら大げさですけど
ある程度書き方は統一した方がいいなぁと改めて実感しますね。
No.4
- 回答日時:
反対意見が多いことを覚悟で、私のやり方を紹介します。
最近はいろいろ考えるのが面倒なので、自分で命名規約を決められる場合(その方が多いのですが...)には、日本語で命名しています。
例えば、最大アイテム数を表す定数名であれば、
const std::size_t 最大アイテム数 = 10;
のようにです。
Visual C++で日本語の識別子を使えるようになったのがきっかけですが、可読性が著しく向上しました。
こんなことで悩むのは時間の無駄ですから。
日本語識別子が使えない状況であれば、標準C++ライブラリまたはBoost C++ Librariesの命名方法に準拠しています。
ご返答ありがとうございます。
良い意味で衝撃を受けました。
なるほど、そういう考え方もあるんですね。
自分はこの書き方はしないと思いますが、
こういう分かりやすくしたいという考え方は
好きです(分かりやすいかどうかは別の議論になりそうですが)
そういえば空白を多く入れてるソースをたまに見かけますが、
例えば(毎回例えが変ですいません・・・)
s[i] = (int)(3+5); を
s[ i ] = (int)( 3 + 5 ); ←書き込んだときにスペースが入ってるか心配・・・
と書いてるケースです。
圧倒的に上の書き方が多いと思いますが、
下の書き方も自分では見やすくて好きなんですよね。
ただ自分は上の書き方ですが
No.3
- 回答日時:
とあるプログラマです。
> 周りからみれば些細(どうでもいい)なことだと思うので
いえいえ、プロジェクトで仕事をするときなどでは
特に重要なことですよ。
命名規則を含めたコーディングのルールは
「コーディング規約」などといいます。
下記のサイトはとてもよくまとまっていますね。
(私の書き方もこれに近いです。)
http://www.shos.info/develop/xp/cplusstd.html
※クラス名、変数名を ClassName や variableName のように
書く方法を「キャメル記法」といいます。
あとC言語で有名なコーディング規約に
「GNU コーディング規約」があります。
その中の「Writing C」を使う方もいると思います。
http://www.sra.co.jp/wingnut/standards-j_toc.html
ご返答ありがとうございます。
>http://www.shos.info/develop/xp/cplusstd.html
このサイトも素晴らしいですね。
特に>(15) 名前の対称性 で
例えば登録処理、編集処理、削除処理があった時に
登録はaddなのかregistなのか、じゃあaddで決めた時に
削除はdeleteなのかremoveなのか、こういうのでも自分はまだ悩んでる段階です・・・
ただこのケースは上で書かれてるような決まりとは
別の決定の仕方かもしれませんが、参考にしたいと思います。
No.2
- 回答日時:
takagoo100さんの質問って些細なことですが、重要な問題ですよね。
自分も迷いますが、基本的にはプロジェクトにプログラミング規約があればそれに従いますが、無い場合は、自分は以下のサイトの規約に則るようにしています。
http://segroup.fujitsu.com/sdas/technology/devel …
(Javaのプログラミング規約ですが)
または、Javadocをみて参考にします。
http://java.sun.com/javase/ja/6/docs/ja/api/inde …
自分の場合は、最初に身に付けた言語がJavaなのでそれが基本になってますね。
>・エラーを表示する関数名として
>disp_errorなのかdisply_errorなのかshow_errorなのか
>それともアンダーバー無くしてshowerrorなのか
この場合は、自分はshowError()ですね。
displayError()でも良い気がしますが、何かshowの方が良く聞くので。。。(^_^;)
>・最大アイテム数を表す定数名として
>ITEM_MAXなのかMAX_ITEMなのかITEM_NUMなのか
この場合、最大アイテム数なので、MAXは入れたいですね。
なので自分は、最初の2つのどちらか、ITEM_MAX_NUMにします。
>・データを格納するテーブル名を表す変数名として
>tablenameなのかtableだけでいいのか
自分は、nameTableかもしくは、nameTblにしてしまいます。
>・~の~の~のアイテムという変数名の場合
上記は、ちょっと自分ではイメージが出来ませんでした。。。。
ここであげた例は、あくまで自分だったらの場合なので、ご参考程度までに。
ご返答ありがとうございます。
>・~の~の~のアイテムという変数名の場合
説明が足りず申し訳ないです。
自分でも何か良い例がないかと探していたのですが、
例えば、「使っても減らなくて、初期化されてない、アイテム」
無理やりすいません、今のところこれしか浮かびませんでした・・・
uninitialized_item_of_nodecrease
これは・・意味わかんないですね・・・
>http://segroup.fujitsu.com/sdas/technology/devel …
これはいいですね。自分でも知りたいことが多々ありました。
参考になります。
>なので自分は、最初の2つのどちらか、ITEM_MAX_NUMにします。
ANo.5でのOh-Orangeさんもそうなのですが、どうやら対象となる物を
先頭に記述して統一感をもたせて、次にMAXや状態を書くやり方が多そうですね。
>displayError()でも良い気がしますが、何かshowの方が良く聞くので
自分もそういう決め方です(この例ではshowErrorが良さそうだと思います)
ただこの決め方だと、例えば
エラー表示関連ではshowError派が多いのでshowErrorを使うことにして
状態表示関連ではdisplayState派が多いのでdisplayStateを・・・
ということだと、統一感がなくなってしまうので(まぁ悩む以前にこの場合は
showで統一するのが当たり前だと思いますが・・・)
1つ1つを多数派で決定できればできれば楽なのになぁと思ったりします。
No.1
- 回答日時:
本、サイトは良く知らないので紹介できませんが、
自分は「主語(目的語)+動詞」を使ってます。エラーなら
Err_Set() // エラー値の設定
Err_Reset() // エラー値の解除
Err_Display() // エラー値の表示
つまり「日本語の語順」のまんまです。欧米のPGは一般に
「動詞+目的語」を使いますが、日常会話の語順を採用しただけで
特に意味はありません。この人たちが命名した関数群をブラウザで
一覧すると互いに関連の無いオブジェクトに関するGet~()やSet~()
がずらずらと並んでいて使えない辞書の見本の様になってます。
たぶん彼らはそんなことには頓着しないのでしょう。つまり、
命名に関して彼らの意見を聞いても無駄なのかも知れません。
ご返答ありがとうございます。
たしかに気にしすぎてもしょうがないということですよね・・・
ただ自分の場合は、気にする以前のレベルだと思うので
まず何かに頼りたいというのがあって、
本題とは少しずれますが、みなさんの意見を聞けるだけでも助かります。
>欧米のPGは一般に「動詞+目的語」を使いますが、
自分の場合、まずここで悩むんですよね・・・
たしかに「主語(目的語)+動詞」の方がすっきりする感じもしますし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
HEW4での通信エラーについて
-
fortranでプログラムを実行する...
-
デバッグ中のエラーのことで教...
-
winnetwk.hについて
-
Excelのエラーで困ってます。
-
sys/time.hのインクルードがで...
-
Octaveが勝手に閉じる.
-
UNIX-Cのsystem関数でエラーを...
-
プログラムが動きません。。。...
-
キーの自動入力
-
構文エラーについて
-
BC30002: 型 'ListItem' が定義...
-
MakeSureDirectoryPathExists
-
C言語について質問です
-
Windowsプログラミングのひな形...
-
multiple definitionというエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
sys/time.hのインクルードがで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
Visual Studioのstrcpy_sについて
-
RightとLeft関数のライブ...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
コンパイルできません。
-
multiple definitionというエラー
-
ビルド失敗 指定されたファイ...
-
レコードセットをcloseする所で...
-
左側がクラス、構造体、共用体...
おすすめ情報