宣言の順番について(c++)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 宣言の順番について(c++)

Re: 宣言の順番について(c++)

#4

by Dixq (管理人) » 6年前

> 変数等の命名規則やconstexpr intなどを使うべきなど、参考書にはあまり書かれていないので

では書いてある参考書を読みましょう。





この2冊は中級者プログラマーのバイブルとも言えるでしょう。

Re: 宣言の順番について(c++)

#3

by 遊び人 » 6年前

回答ありがとうございます。
変数等の命名規則やconstexpr intなどを使うべきなど、参考書にはあまり書かれていないので勉強になります。

Re: 宣言の順番について(c++)

#2

by Dixq (管理人) » 6年前

1. #define はC++では使わないようにしましょう。constexpr intなどを使うべきです。
2. グローバル変数は使わないように設計しましょう。
3. C++であれば関数のプロトタイプ宣言をこのような場所につける必要はないです
4. C++では普通は定義と実装は違うファイルに書きます。(一緒に書いてしまうhppなるものもありますが)

従って一般的にこのようになるでしょう。

コード:

#include <...>

using namespace std;

constexpr static int aaaa = 114514;

int main()...
プロジェクトを分割しないことと仮定して・・っていうのは分割コンパイルや実装ファイル分けをしないってことでしょうか?

> 現在変数、クラス、関数の名前の付け方が全て一緒なのですが、皆様は区別してらっしゃいますか?

まず変数名について。
メンバ変数は
m_value;
mValue;
のように先頭にプレフィックスを付ける慣習があります。
また、生存範囲の短いローカル変数は少々省略形でもいいですが、なるべく一目でわかるような変数名にします。
aとかはありえないですし、flagという名前も分かりにくくなる典型です。

関数名について
私はJAVA人間なので、メソッド名は小文字から始める方が好きですが、C++では大文字から始める方が一般的です。
また、アンダースコアでつなげるか、ラクダ型にするかは好みですが、C++はラクダ型が一般的です。
(show_string → ShowString)

クラス名について
すべて大文字は一般的に定義で使われます。クラス名はTestのように書きましょう。

宣言の順番について(c++)

#1

by 遊び人 » 6年前

お世話になっております。
プロジェクトを分割しないことと仮定して、
現在私は、クラスや関数の宣言の順番を[define]→[include]→[関数の宣言]→[グローバル変数の宣言]
→[クラスや構造体の宣言]→[main関数]としています。
この順番が正しいのか間違っているのか分からないので、参考までにお伺いしたいのですが、
皆様はどうなさっておりますか?
こうした方が良いなど意見下さると助かります。
また、現在変数、クラス、関数の名前の付け方が全て一緒なのですが、皆様は区別してらっしゃいますか?

コード:

#define aaaa 114514

#include <iostream>
using namespace std;

class TEST;

// 関数プロトタイプ宣言
void show_string(const char*);	// 文字列を表示

// グローバル変数
extern int a;	
int number;

class TEST {
private:
	int x;
public:
	void change_x(int num);			// xの値を変更
	int show_x() const { return x; }	// xの値を渡す
};

int main() {
	show_string("遊び人");

	return 0;
}

// クラスのメンバ関数が先
// xの値を変更
void TEST::change_x(int num) {
	x = num;
}

// 一般は後
// 文字列を表示
void show_string(const char* str) {
	cout << str << endl;
}
 

ページトップ