なんであんなスタイルなんでしょうか?
特に{ }の置き方が生理的に受け付けられません。
{ }を独立した行に置くのはまだしも
for(i = 0; i < 10; i++)
{
hoge();
}
|<->|
この|<->|の間。{ }自体にもインデントをつけるのが
気持ち悪くて仕方がありません。
それでも、なんらかの利点や意味があって
あのようなスタイルにしているなら
理解したいと思います。
あのスタイルに何の利点や意味があるんでしょうか?
宗教論争や趣味や主観の問題は排除して
利点や意味を論理的に説明した回答を求めています。
あるいはこのスタイルのルーツがわかればそれでも可です。
http://www.hatena.ne.jp/1118328745 の再質問です。
http://www.hatena.ne.jp/経験則だけで済みませんが・・・:detail]
(1)
for(i = 0; i < 10; i++)
{ ←forの中の処理ということでインデント
hoge(); ←{の中の処理ということでインデント
}
入れ子構造になっている際にインデントを入れるという書き方になっています。
(2)
私個人的には
for(i = 0; i < 10; i++)
{
hoge();
}
が好みですが、Perlなどで文書構造解析させてインデントをつけなおしたりする際には入れ子になればインデントをつけるという(1)のほうが楽ですから、テキスト処理的に(1)が採用されているのではないかと思われます。
(3)
処理系さえ対応しているのであれば、
for(i = 0; i < 10; i++){hoge();}
などという書き方もOKですが「処理系さえ対応しているのであれば」という条件が付いてしまいますし、独自スタイルを進めてしまっては他人が作ったコードを見るときに辛くなってしまいますので、後々の事を考えれば出来る限りスタンダードとされている形でコーディングされるのがよろしいのではないでしょうか。
なぜ、
{ ←forの中の処理ということでインデント
が必要なんでしょう。。。
{} のインデントは中カッコがどれに対応しているかわかりやすくするためだと思います。if文の中にまたif文があるのが数回続いたときなどは、
インデントが付いていたほうがわかりやすいです。
わかりやすさの理由が無いと
主観の域を超えていないです。
http://www.hatena.ne.jp/1118405076#
人力検索はてな - GNUのコーディングスタイルが気持ち悪いです。 なんであんなスタイルなんでしょうか? 特に{ }の置き方が生理的に受け付けられません。 { }を独立した行に置くのはまだしも..
URLはダミーです
昔何かの本で、このスタイルを推奨しているものがあって、対応する括弧を見つけやすくするため、という理由がついていたような気がします。
読んだときには、自分のスタイルが既にできていたし流し読みしちゃってたんで、文献が提示できないんですけど、今考えてみると括弧のためだけのインデント位置があるので、例えば閉じ括弧から開き括弧を探すのに見落としが少ない、とかそういうのがあるのかもしれませんね。自分は対応する括弧の検索に苦労したことがないので、想像ですけど。
> 括弧のためだけのインデント位置があるので、
> 例えば閉じ括弧から開き括弧を探すのに見落としが少ない、
ふむふむ。
http://www.gnu.org/prep/standards/html_node/Formatting.html#Form...
Formatting - GNU Coding Standards
リンク先の中ほどに、
”We find it easier to read a program when it has spaces before the open-parentheses and after the commas.”
(直訳:我々は開き括弧の前とコンマの後ろにスペースがあるとプログラムがより読みやすいことを発見した。)
とあります。
だから利点は「読みやすいから」なのでしょう。私にはそうは思えませんが。
URLが提示され根拠に近づいた感じがします。たしかに、
We find it easier to read a program when it has spaces before the open-parentheses and after the commas
の理由が知りたいですね。
http://www.st.rim.or.jp/~phinloda/cprog.html
$B#C%W%m%0%i%_%s%0$NHk7m(J
利点の説明になってないので質問に添えているかわからないですが、私はプログラマですが、いままでそのインデントスタイルを推奨してる人には出合ったことがないです。
初心者~中級者向けの本や上のアドレスでは、わざわざ例をだして「よくない例」と説明してることさえあります。
まったく、利点の説明になっていません。
米ぬか酵素温浴の普及を目指すグループ
GNUを立ち上げた リチャードストールマンたちの妙なスタイルがそのままGNUスタイルになっただけだったと思います.
GNUコーディング規約の「ソースコードの整形」の節で,この妙なスタイルの利点について幾つか利点が書かれています.
ただこれらの利点は,やや後付けな感があります.GNUコーディング規約も含めて,コーディング規約の存在意義は,「一つのプログラムでスタイルを混ぜて使うと読みにくくなる」から,何か統一されたスタイルを使ってコーディングできるようにすることにあります.
ですので,スタイル自体に長所短所があるわけでは無く,GNUものが全てGNUスタイルで統一されていることに利点があると考えた方が良いと思います.
統一されていることに利点があるのは理解できますが、なぜそのスタイルなのかと。
http://dummy/あくまで想像ですが:detail]
あくまで想像になってしまうのですが、
1. 関数を示す{}はインデントを下げない(関数名と同じカラム)
2. 制御構造を示す{}はインデントを下げる
ということなのではないでしょうか?
あのスタイルをそのまま説明しただけでにしか聞こえませんが。
>関数定義なのか制御構造が一目で分かるというメリットがある、
なるほど。
-------
出尽くした感があるので終了します。
・括弧のためだけのインデント位置があるので、
例えば閉じ括弧から開き括弧を探すのに見落としが少ない。
・Formatting - GNU Coding Standards の一説。”We find it easier to read a program when it has spaces before the open-parentheses and after the commas”で読みやすいという主張がある。
・GNUを立ち上げた リチャードストールマンたちの妙なスタイルがそのままGNUスタイルになっただけだった(説)
・関数定義なのか制御構造が一目で分かるというメリットがある
回答をしていただいた方々にはもうしわけありませんが
いずれも、強いて言えば的な感はぬぐえなかったです。
もともとスタイルなど好みの問題ということもあるでしょうが。
この回答が質問の趣旨にあっていると本当に思っているんですか?