【雑談】プログラムのソースコードの書き方について

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

【雑談】プログラムのソースコードの書き方について

#1

投稿記事 by mi_l » 11年前

いつもお世話になっております。
まだ未解決のトピックはありますが、この場を借り、ソースコードの意味とかではなく、書き方について質問します。


※質問は多少長い文章になり、最後まで読んでいただければわかるのですが、回答の仕方がものすごい面倒くさいものとなっていますので、お時間がゆっくりある時でいいので、回答してください。


まず、私の通学先にプログラムにたけている講師(教授?)がいまして、その方に「ソースコードの書き方は人それぞれだし自分のルールがあるから」と言われました。

そこで、皆様の、ソースコードを書くときに「ここはこうしないと気が済まない!」とか「どんなに忙しくて、眠くてもここはこうする!」とか「意識しなくても気づいたらこのように書いてるし・・」という身についている自分の書き方のルールを教えてください。

しかし、そのようなことを質問すれば、回答数がものすごいことになり、回答してくださるかたにとてつもない労力をかけてしまいますので、回答は何個でも構いません

以下は私の自分のルールの中の1つ、及び回答例(この回答例に従わなくてももちろんいいです)


・if文のカッコは必ずifの下に

コード:

if(x == 0){
       //処理
}

//ではなく・・・

if(x == 0)
{
       //処理
}
個人的な利点;分岐の始まりと終わりがカッコの位置でわかるから
個人的な欠点;ほとんどの参考書はこのような書き方をしていない・・


利点と欠点は「なんとなく」でも「その方が見やすいから」でもなんでもいいです。感じていることを書いてくれれば。(なければかかなくていいです)

(どんな小さなことでも、私にとっては参考になる可能性のあることなのでお願いします。自分勝手ですが・・・)


また、このトピックはあくまで「自分のルール」を書いていただくだけなので、閲覧した際に「これ普通じゃん・・」と思うかもしれません。
それは承知で、その中で、私の知らない皆様の自己流の書き方が書かれていれば、見せていただき、参考にしようと思っているだけですし、自分と同じ書き方が回答されていたら、変な親近感がもてますし・・


よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 【雑談】プログラムのソースコードの書き方について

#2

投稿記事 by softya(ソフト屋) » 11年前

とりあえず過去ログを上げておきます。
「{}の位置 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11078

それと、これはコーディングスタイルとかプログラミング作法と呼ばれるものですので、もっと奥深いです。
「プログラミング作法 - Wikipedia」
http://ja.wikipedia.org/wiki/%E3%83%97% ... C%E6%B3%95
「コーディング規約」
http://www.geocities.jp/bleis_tift/cpp/codingrule.html
重要なのは、1つのプロジェクトでは統一しておくことです。

色んなスタイルはネットに転がっているので、まずそれを研究して貰いたいなとは思うんですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: 【雑談】プログラムのソースコードの書き方について

#3

投稿記事 by 海Sea » 11年前

僕もmi_lさんとカッコの位置は同じです。
個人的にはそちらのほうが見やすいですね。
また、自分にも他人にも見やすいコード、
変数やクラスの名前をつけるというのが理想です。

余談ですが仕事になれば、コード規約というものがあり、
その規約にのっとりコードを書かなければならない場合がままあります。
自分のルールで書くことはできないので、
ここ数年極端な自分流というのは無くなりましたね。

mi_l

Re: 【雑談】プログラムのソースコードの書き方について

#4

投稿記事 by mi_l » 11年前

返信ありがとうございます。

とても参考になります。

この手のトピックは「解決」をつけるタイミングがわからず、解決しないままになってしまうので、今つけてしまいます。

以降も私はこの掲示板に来た時にこのトピックを見ますので回答よろしくお願いします。

アバター
usao
記事: 1887
登録日時: 11年前

Re: 【雑談】プログラムのソースコードの書き方について

#5

投稿記事 by usao » 11年前

コード:

//クラスのメンバ変数はm_から始める
//staticメンバだとms_になる.たまに モビルスーツ? って聞かれる
class C
{    //※{}は縦位置を揃える派
private:
    int m_IntValue;
    static int ms_StaticInt;
};

//でも単純な構造体だとm_をつけない
struct S
{
    int IntValue;  //変数名先頭大文字
    int *pIntPointer;  //ポインタはp,参照はrを変数名の頭につける
    double HeuristicXXXThresholdForYYYCalculationFunc;  //長ったらしい変数名も平気で付ける.
};

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: 【雑談】プログラムのソースコードの書き方について

#6

投稿記事 by ISLe » 11年前

わたしのこだわりは空白の入れ方ですね。

関数名に続く開き括弧の前は空けない。関数名に続かない開き括弧の前は空ける。
引数の括弧の内側は空けない。初期化の括弧の内側は空ける。
閉じ括弧に続く開き括弧とのあいだは空ける。
コメントの開始・終了記号の前後は空ける。
二項演算子の前後は基本的に空ける。
といったところですかね。

折り返しについては、自分流のスタンダードはありますが、特にこだわりはないです。
掲示板に投稿するときできるだけ縦に短くなるようにしたりしますし。
制御文の開き括弧は気分で折り返したり折り返さなかったりします。

アバター
せんちゃ
記事: 50
登録日時: 13年前
住所: 江別市東野幌町
連絡を取る:

Re: 【雑談】プログラムのソースコードの書き方について

#7

投稿記事 by せんちゃ » 11年前

コード:

class MainProgram { // クラス名は先頭大文字。これはJavaなどの作法がそうであるための習慣として
public :
	int m_hoge; // メンバはm_から始まる。関数パラメータとの衝突が減るのでパラメータに役割のわかりやすい名前を気軽に付けれる
	int m_frametime; // Javaを書いていた頃はキャメル記法じゃないと落ち着かなかったのですが、この頃はスネーク記法に寄っています。
	                 
	                 
	// 文字の形的に気持ち悪いときとか、たまにキャメル記法になることもある。
	// 例えば
	int m_isactive; // これは気持ち悪い
	int m_isActive; // これはカッチョいい!!(個人的に)
	
	MainProgram* m_instance;
	//	公開関数名はキャメル記法
	void initialize(){
	}
	
private :
	//	非公開関数名は私は先頭に_を付ける習慣がありますが人によっては凄い嫌がられるのでケースバイケース。
	//	非公開関数はスネーク記法になりやすいですが、気分に応じて。
	void _state_00(){ // "{"は()の隣に書きます。昔は嫌いでしたが、ソースの行数が長くなり、
	                  // 安易にファイルも増やしたくないという状況になることが多かった名残的な部分があります。
	                  
		if( !m_isActive ) return; // 1行しか書かない制御構造は{~}を省略しがち。これも好みが非常に分かれる
		if( !m_instance ) return; // ポインタはアドレスがNULLであるか否かで判断(C/C++の場合です)
		if( m_instance == NULL ) return; // こういう書き方はCだとあまりやらないです...
		if( m_instance ){ // 制御構造の{の位置は全てここです。
		}
		
		try
		{
			//	try~catchは{を次の行に書きます。
			//	基本的try~catchはに制御構造というより例外処理だから、という理由だったと思います。
			
			m_instance->initialize( // 関数のパラメータが多い時にこんな書き方をよくやります。
				0 , 
				0 , 
				m_frametime , 
				m_hoge 
			); // 閉じカッコは必ず宣言した場所と同じ位置に...
		}
		catch( Exception e )
		{
		}
	}
};
typedef struct {
}enemydataS; // 構造体名はtypedefもstructもサフィックスにSを付けるケース。気分に応じて_tになることも
class ICallbackListener { // インターフェース的な役割を持つものにはプレフィックスにIを付けるケース。C#とかJavaの流儀に従っているのかもしれない
};

lib層やapp_sys層を作るときは全体公開なのでなるべく統一性を心がけますが、最上位のアプリ層は公開範囲が限られるので結構気分で命名していたりします。

半年くらいの周期で書き方が変わるのは職業病だと思っております
ヽ(*゚д゚)ノ カイバー

閉鎖

“C言語何でも質問掲示板” へ戻る