[雑談]ソースコード内のspaceの使い方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
kazuoni
記事: 17
登録日時: 13年前
住所: 愛知
連絡を取る:

[雑談]ソースコード内のspaceの使い方

#1

投稿記事 by kazuoni » 12年前

お久しぶりです。セミが鳴かないなーって思ってたら一昨日ぐらいから大合唱でちょっとうんざりしてます。

今回は雑談でトピックを立てさせていただきました。
件名のとおり、ソースコード内のspaceの使い方をお聞きしたいです。
下にソースコードの例を挙げます。
私は次のようにコードを書きます

コード:

int function(int val){
  return val*val;
}

int main(){
  int val;
  for(int i=0; i<0; ++i){
    val = function(i);
    println(val);
  }
  return 0;
}

※ソースは適当です。

私の身近の人は次のようなコードを書く方がいます。

コード:

 
int function ( int val ) {
  return val * val;
}

int main () {
  int val;
  for ( int i = 0; i < 0; ++i ) {
    val = function( i );
    println( val );
  }
  return 0;
}
私は
・関数引数が複数個あるとき

コード:

val1, val2, val3, ...
・代入演算子
・for文の;
・計算式が複雑なとき

コード:

exp(-( (x+y-l) * (x+y-l) / ((x-y-l)*(x-y-l)*2.0*alpha*alpha) ));
これはかなり自分の中でもあいまいに書いているのですが、
今回の場合x+y-l=A, (x-y-l)*(x-y-l)*2.0*alpha*alpha=Bとすると
exp(-( A * A / B ))
A*A/Bを明確にするのが目的だと思います。(自分でも無意識に使っているので・・・)
これ以上に長くなる場合は改行を使っている気がしますが。


それ以外は基本的にスペースは使いません。


この話題では「自分で好きなように書けば?」の一言で終わってしまうのですが、
皆さんがどのようにソースコードを書いているのか気になったしだいです。
おそらく複数人での開発経験のあるかたは既存のプログラムの書き方に統一して書いていると思われるのですが、
そのときはどのようにスペースを入れているのでしょうか?

これは個人的、一般的、皆さんの経験など、どの立場からコメントしていただいてかまいません。
いろいろな意見をお聞かせください。

よろしくお願いします。

アバター
kazuoni
記事: 17
登録日時: 13年前
住所: 愛知
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#2

投稿記事 by kazuoni » 12年前

for文がおかしいですが気にしないでください。。。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#3

投稿記事 by Dixq (管理人) » 12年前

kazuoniさん
こんにちは、お久しぶりです。

私は後者(スペース空ける)型です。
VC++のように演算子等を見やすく表示できるエディタならいいですが、
シェルから直接見るviのようなエディタだと、パッと見演算子との区別が分かりにくいこともあるので、後者型にしてます。
人のコードを読む時も、オープンソースを読む時も、後者型が多いように思います。

expの書き方がよいかは分かりませんが、パッと見 A*A/B には見えないような気がします。
x*x + y*y = r*r
のような単純明快で良く知られた式なら掛け算ごとにくっつけても良いかもしれません。

アバター
GRAM
記事: 164
登録日時: 13年前
住所: 大阪

Re: [雑談]ソースコード内のspaceの使い方

#4

投稿記事 by GRAM » 12年前

自分の場合「こうしよう」という大体の思いはありますが、よく崩れますorz

演算子については
基本:
オペランドと演算子の間は1つスペースを空ける

例外:
operator, は左側のオペランドに演算子をくっつける。
単項演算子はオペランドと離さない
operator.とoperator->の両側は空けない
演算順序が左から右でないときは見やすさのためスペースを空けないことがある
ex: d = a * a + b * b + c * c;  //読みにくい 
   d = ( a * a ) + ( b * b ) + ( c * c );
 →d = a*a + b*b + c*c;

その他の決まりは
():それぞれ両側を空ける(上のように)
<>: 両側を空ける(テンプレートが入れ子になってるとたまにoperator>>みたいに見えるので)
ただ()のネストが深くなったときは臨機応変に自分に読みやすいように変えます・・・

コード:

exp(-( (x+y-l) * (x+y-l) / ((x-y-l)*(x-y-l)*2.0*alpha*alpha) )); 
これは自分にとってはすでに読みにくい領域ですね・・・おそらく

コード:

auto nume = x + y - l;
auto deno = x - y - l;
exp( -( nume*nume ) / ( 2.0 * deno*deno * alpha*alpha ) ); 
・・・とするかなぁと。

アバター
クローバ
記事: 12
登録日時: 13年前
住所: 東京23区内

Re: [雑談]ソースコード内のspaceの使い方

#5

投稿記事 by クローバ » 12年前

言葉で説明出来るほど自分の中で明確化していないので、元のソースコードを使って書くと、以下の感じですかね^^

コード:

int function(int val){
  return val*val;
}
 
int main(){
  int val;
  for(int i = 0; i < 0; ++i){
    val = function(i);
    println(val);
  }
  return 0;
}
チョット行数が少ないのでどっちともとれない微妙さが伝わらないなとも思ったのですが。
友達の場合はなんか無駄じゃね?
と思える位スペース大好きっ子なので以下の感じでスペース入れまくりですよ^^;

コード:

int function(int val){
  return val*val;
}
 
int main(){
  int val ;
  for (int i = 0 ; i < 0 ; ++i )
 {
    val = function( i ) ;
    println( val ) ;
  }
  return 0 ;
}
まあ正直なところ、最後の;の前にスペース入れたりforと()の間にまでスペース入れられると・・・
動かないけど・・・
と相談された時に問題の箇所を見つけにくくて仕方が無いです^^;
なんか視覚的に今まで見た参考書やサンプルソースでも見た事ないスペースの開け方されていると・・・
目がショボショボすると言うか・・・

まあ、関数名の決め方含めコーディング規約の本を読んだ時に見やすさやらを意識し始めてからスペースを入れ始めた口ですが^^;
それまでのコードなんて見たくない(´∀`*)
かと言って、今の自分のソースが見やすいかと言うと・・・ orz

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: [雑談]ソースコード内のspaceの使い方

#6

投稿記事 by bitter_fox » 12年前

kazuoni さんが書きました: 皆さんがどのようにソースコードを書いているのか気になったしだいです。
そのときはどのようにスペースを入れているのでしょうか?
僕のスタイルは次のような感じです。

コード:

int function(int val)
{
  return val * val;
}

int main()
{
  int val;

  for (int i = 0; i < 0; ++i)
  {
    val = function(-((x + y - l) * (x + y - l) / ((x - y - l) * (x - y - l) * 2.0 * alpha * alpha)));
    println(val);
  }

  return 0;
}
文章で表すと
・二つ項を取る演算子にはスペース
・if, for, whileなどの制御構文への()は間に一つスペース
・forの()内の;の後ろにスペース
と言った感じでしょうか?

あと、
-((x + y - l) * (x + y - l) / ((x - y - l) * (x - y - l) * 2.0 * alpha * alpha))
みたいなのが出てきたらGRAMさんのように一回変数に代入してからこの演算に持っていきますね。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#7

投稿記事 by みけCAT » 12年前

私は基本的にスペースは入れません。
やっぱり入れたほうがいいのでしょうか?

コード:

int function(int val) {
	return val*val;
}

int main() {
	int val;
	for(int i=0;i<0;++i) {
		val=function(i);
		println(val);
	}
	return 0;
}
あ、関数とかforとかwhileとかifとかswitchとかの)と{の間には入れますね。

追記
ちなみにインデントもスペースではなくタブを使ってます。
最後に編集したユーザー みけCAT on 2011年7月24日(日) 16:17 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Ciel
記事: 252
登録日時: 13年前

Re: [雑談]ソースコード内のspaceの使い方

#8

投稿記事 by Ciel » 12年前

面倒臭いので入れません
oui C'est la Vie♪

アバター
ジュンヤ
記事: 8
登録日時: 13年前
住所: 東京都
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#9

投稿記事 by ジュンヤ » 12年前

見やすいと思うので、必ずスペースは空けるようにしてます。
色分けの機能などがないエディタなどで見たときに見ずらいからです。

それとブレースを入れる時には改行してますね。
そうした方がif文やfor文を使う時に一行コメントするだけで、条件式を無効にできて便利なので。

コード:

 
int function ( int val )
{
return val * val;
}

int main ()
{
int val;
for ( int i = 0; i < 0; ++i )
{

val = function( i );

println( val );
}
return 0;
}

アバター
kazuoni
記事: 17
登録日時: 13年前
住所: 愛知
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#10

投稿記事 by kazuoni » 12年前

帰ってきたらこんなにもレスが!ご回答ありがとうございます。

> Dixqさん
お久方ぶりです。
正直空白を適当に使うほうが多いだろうなっというのは
オープンソースコードを読んでいる自分も想像できたことなんですが、
ちょっとした興味から聞いてみたくなりました。
可読性はどの開発環境でも気にしながら開発を行ったほうがいいですよね。
ちなみに大学では私もVi使いです・・・

> GRAMさん
自分もなるべく統一性を重視しているつもりなんですが、
気がつかないうちに体裁がかわっていってしまうんですよね。修行不足です。
代入はごもっともな意見です。演算子が増えるならば分解したほうが見やすいですよね。
ただ、このような代入用の変数でソースコードが溢れかえってしまうのもたまに経験します。
そして、「これはなんでこっちで一回計算しているの?わかりにくいよ」とバイトで言われたことがありました。
(変数名のつけ方も不適だったと思いますが)

> クローバさん
自分とは違うソースコードの「動かないんだけど・・・」
は私も経験しました。授業のTAを通じてですが。
小規模ならいいんですけど、ソースコードが中規模になるとちょっと面倒ですよね。
コーディング規約の本は読んだことがありませんが、ちょっと気になるので暇があったら図書館見てきます。

> bitter_fox さん
bitter_fox さんの書き方はなんとなくよく見るような書き方かなって感じました。
私の友人のSEの方に聞いたときも同じような回答をしていた記憶があります。


> みけCATさん
スペースを入れる入れないは個人の自由かと思いますので、
そんなに気にしなくてよいかと思います。
インデントは環境がVC,eclipseなら私もタブになりますね。(自動ですが)
今回はemacsで適当に書いていたのでスペースになっていますが。

> Cielさん
バイト初め一発目の提出物でスペースなしで提出したら一喝された記憶がありますw
個人で書く分では私もあまりスペースを入れないかもしれません。

> ジュンヤさん
自分はほとんどが変数、関数などは色分けされていたのであまり意識したことがありませんでした。
一度色分けなしのエディタで開発してみるのもいいかもしれませんね。

> そうした方がif文やfor文を使う時に一行コメントするだけで、条件式を無効にできて便利なので。
おーそういえばそうですね。まったく気にしたことがありませんでした。


たくさんのコメントありがとうございます!
スレが下がっていったら解決にしておきます。

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

Re: [雑談]ソースコード内のspaceの使い方

#11

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

こっちは、こんな感じで。

コード:

int function(int val)
{
	int square = val*val;
	return square;
}

int main()
{
	int val;
	for(int i=0 ; i<0 ; i++ ) {
		val = function(i);
		println(val);
	}
	return 0;
}
こっちは、こんな感じ。

コード:

	double a = x+y-l;
	double b = x-y-l;
	exp(-( (a*a) / ((b*b)*2.0*(alpha*alpha)) ));
私なりの見やすさと、デバッガでの調べやすさを優先してます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

jay
記事: 314
登録日時: 13年前
住所: 大阪市
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#12

投稿記事 by jay » 12年前

for文一つとっても
・セミコロンの前にスペースを置く人
・セミコロンの後ろにスペースを置く人
・両方に置く人
・両方置かない人

と4つのタイプがある訳ですしね~
でもどれが一番見やすいかというのは人によるんでしょうね・・・

僕の場合

コード:

int function(int val)
{
    int square = val*val;
    return square;
}
 
int main()
{
    int val;
    for(int i=0 ;i<0 ;i++ )
    {
        val = function(i);
        println(val);
    }
    return 0;
}

コード:

 double a = x+y-l;
    double b = x-y-l;
    exp(-( (a*a) / ((b*b) * 2.0 * (alpha*alpha)) )); 
こんな感じでしょうか
for文やif文の場合、判定文に計算が含まれる場合は i+1 > 0 といったように関係演算子や等価演算子の前後にもスペースを入れます。

余談ですが
プログラミングを初めてまだ3年と3ヶ月くらいなんですけど、1年半前に自分が書いたコードに”こういうこと”に関してはまとまり(決まった形)が見られませんでしたw
そういうことを僕が意識してコードを書くようになったのは1年くらい前からみたいです。
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

naohiro19
記事: 256
登録日時: 13年前
住所: 愛知県

Re: [雑談]ソースコード内のspaceの使い方

#13

投稿記事 by naohiro19 » 12年前

自分は引数のついたものはスペースを空けます。

コード:

MessageBox(NULL, L"なんらかの文字列", L"なんらかの文字列", MB_OK);
for文

コード:

for(int i = 0; i < 20; i++){
    printf("%d ", i);
}
prinf("\n"); 

アバター
BEAT
記事: 4
登録日時: 13年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#14

投稿記事 by BEAT » 12年前

自分は「記号と文字の間はスペースを入れる」ですね

コード:

for( int i = 0; i < 20; i++ ){
    printf( "%d ", i );
}
printf( "¥n" );
forでいえばこんな感じです。

「コメントをどのように入れるようにしているか」というのも面白そうですね

アバター
バグ
記事: 130
登録日時: 13年前
住所: 愛媛県
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#15

投稿記事 by バグ » 12年前

自分はこんな感じかな。
個人的にキレイに見える形にしてるだけなので、あんまりこだわりはないですが・・・w
強いて言えば、スコープを分かりやすく{ }の位置を揃えるくらいかな?

コード:

int function(int val)
{
	int square = val * val;
	return square;
}

int main()
{
	for (int i = 0; i < 0; ++i)
	{
		int val = function(i);
		println(val);
	}
	return 0;
}

コード:

double a = x + y - l;
double b = x - y - l;
exp(-((a * a) / ((b * b) * 2.0 * (alpha * alpha))));

アバター
沖 滉均
記事: 237
登録日時: 13年前
住所: K県F市

Re: [雑談]ソースコード内のspaceの使い方

#16

投稿記事 by 沖 滉均 » 12年前

私は趣味でコードを書く場合はbitter_fox君と同じスタイルですね
ただし、仕事だとコーディング規約の関係もあって

コード:

int function(int val) {
  return val*val;
}
 
int main() {
  int val;
  for(int i=0; i<0; ++i) {
    val=function(-((x+y-l)*(x+y-l)/((x-y-l)*(x-y-l)*2.0*alpha*alpha)));
    println(val);
  }
  return 0;
}
こんな感じですかね。
・演算子の間は空白を入れない(見づらいので苦手ですが…)
・)と{の間は1文字空白を入れる
・for文の;の後ろに1文字空白を入れる

最近、C/C++は限られた用途でしか使用していないのであまりスタイルは固まっていないかもしれませんね。

[追記]
あと、少し気になったのですが、printlnってC++にもあるのでしょうか?
あまり、C++を使ってないのであるのかな?と疑問に思った程度でして
javaでだったら見たことあるのですが…
There is no royal road to learning.
codeタグで指定できる言語
画像

アバター
kazuoni
記事: 17
登録日時: 13年前
住所: 愛知
連絡を取る:

Re: [雑談]ソースコード内のspaceの使い方

#17

投稿記事 by kazuoni » 12年前

最近猛烈に忙しくて返信が遅れてしまい申し訳ありませんでした。

> softyaさん
関数で返却する値に名前をつけるのはあとから見返すとき楽なんですよね。
私はつけていなかったですが・・・。
1週間後に見て理解できるコードってあこがれます。

> jayさん
書き方は本当に十人十色でおもしろいです。
私も同じくプログラミングを始めて3,4年です。
私も最初はとにかく書くことに専念していて、保守なんてまったく気にしていませんでした。
当時自分がつくったPSPのプログラムも今見てみるとカオス過ぎて先日削除しました。

> naohiro19さん
引数スペースは最近自分も意識し始めるようになりました。
ただ、なんだか最近引数が猛烈に多い関数を使うようになってから、
引数が短ければつなげて、長ければ改行みたいな書き方になってますね。

> BEATさん
自分の中だけなんですけど、「 ( 」のあとにスペースがあるとどうしても気になってしまいます。
先日プログラムを知人にいただいたのですが、「 ( 」のあとのスペースをまずreplaceしてました。
コメントも確かに興味はありますね。関数定義の上のusagem, return membet等のコメントの書き方とか結構重要ですし。
最近は日本語入力が面倒で自分の開発では英文で書いてしまってます。

> バグさん
スコープは私も昔はバグさんと同じだったのですが、なんだか最近はやめてしまいました。
やはりそちらのほうが見やすいのですかね。なんだか「 { 」一文字が無駄なんじゃないかと思い始めてるのかもしれません。
あ、私事になりますが、ナンプレをARで解くアプリを友人に作らされました。本当に大変でした。


> 沖 滉均さん
コーディング規約は慣れないと私には大変でした。
といってもまだソフトウェア開発経験はバイト程度なんですけど。

> ・)と{の間は1文字空白を入れる
これが一番慣れませんでした・・・

> println();
申し訳ありません。
最近Javaでの開発が多くて、何も考えずに書いてしまいました。
おそらくC++には無いと思います。
printf("%d\n",val)って最近ほとんど書かないですね・・・


ここで一応閉めさせていただきます。
人それぞれで大変興味深い内容でした。
まだまだヒヨっ子ですが精進してまいります。
皆様のご意見本当にありがとうございました!

閉鎖

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