C/C++ Coding Style Thread

このエントリーをはてなブックマークに追加
705デフォルトの名無しさん:2009/01/30(金) 09:37:33
どこに改行/空白入れる? typedef/usingする?
std::list<mylib::common::MyClass<charT>* > container;
std::vector<std::basic_string<CharT> >
もにょもにょ・・・
std::transform(
boost::make_indirect_iterator(container.begin()),
boost::make_indirect_iterator(container.end()),
std::back_inserder(strs),
boost::bind(&mylib::common::MyClass<charT>::format,_1,"%1:%2:%3");
);
706デフォルトの名無しさん:2009/01/30(金) 09:44:12
なんかひどいから書き直す
template<class CharT>
func(std::list<mylib::common::MyClass<CharT>*> container,
std::vector<std::basic_string<CharT> > &strs)
{
もにょもにょ・・・
std::transform(
boost::make_indirect_iterator(container.begin()),
boost::make_indirect_iterator(container.end()),
std::back_inserder(strs),
boost::bind(&mylib::common::MyClass<charT>::format,_1,"%1:%2:%3") );
}
707デフォルトの名無しさん:2009/01/30(金) 10:03:06
template<class CharT>
func(std::list<mylib::common::MyClass<CharT>*> container,
std::vector<std::basic_string<CharT> > &strs)

この3行は改行しないで一列にしちゃうな。
なんでかっていうと、VC++2008では、{ }内全体を隠す機能があって
1関数/1クラスが1行にまとまって検索しやすくなるので。
708デフォルトの名無しさん:2009/01/30(金) 10:40:16
小まめに改行してるソース読むと、いい加減モニタ買い換えろよと思う
709デフォルトの名無しさん:2009/01/30(金) 11:07:24
80桁ルールを守る価値はそれなりにあるぞ
710デフォルトの名無しさん:2009/01/30(金) 12:17:05
今となっては80桁は窮屈だぞ。
711デフォルトの名無しさん:2009/01/30(金) 12:37:23
Unix系の端末で快適にソースを閲覧できる状態というのは確かに必要なこともあるし、
80桁ってのはデファクトとしてそれなりの意味があるんじゃないのかな。
事実色んなオープンソースプロジェクトが80桁ルールを守って書かれてるし
やろうと思えば全然難しくないしね。

まあ80桁は狭いと思うにしてもせいぜい100桁か120桁くらいが限界じゃないかな。
あまり横に突き出してしまうと、結局折り返しが発生する環境が出てきて、
可読性が損なわれてしまう。
自分が読めればいいだけならいくらでも横に伸ばせばいいけど。
712デフォルトの名無しさん:2009/01/30(金) 14:42:11
713712:2009/01/30(金) 14:42:57
714デフォルトの名無しさん:2009/01/30(金) 17:10:00
エディタ横2列で見ることもあるから80桁は守ってる(厳密ではないが)
715デフォルトの名無しさん:2009/01/31(土) 00:45:27
自宅と会社のWindowsでは、xyzzyでバッファ2枚取ると丁度100カラム。
客先と会社のLinuxでは、端末エミュレータを3枚並べると丁度100、100、80カラム。
なので80-100で収まるようにコーディングしている。
716デフォルトの名無しさん:2009/01/31(土) 07:39:44
teratermだろどうせ
無理すんな
717デフォルトの名無しさん:2009/01/31(土) 10:06:10
端末エミュレータと聞いて、teratermを連想する馬鹿発見。

まぁ、客先の現場に行くとサーバがSunだしLinux端末がないから使っているけどさw
718デフォルトの名無しさん:2009/01/31(土) 14:53:56
俺、Xでもだいたいターミナルエミュレータいくつか並べる使い方しかしないから、
最近はもっぱらWindowsからTeraTermでつないで使ってる。
719デフォルトの名無しさん:2009/01/31(土) 17:25:33
色づけ厨なのでputtyしか使わない
720デフォルトの名無しさん:2009/01/31(土) 23:06:17
仮想化おいしいです。
721デフォルトの名無しさん:2009/10/10(土) 03:00:50
ソースコードがMacで保存されているとかいうエラーが出るのだけど、どういうこと?
722デフォルトの名無しさん:2009/10/10(土) 03:33:25
>>721 きっと、ソースコードがMacで保存されているんだと思う。
723デフォルトの名無しさん:2009/10/11(日) 22:31:03
LF
724デフォルトの名無しさん:2009/10/18(日) 17:03:53
今時そんなエラー吐くエディタは要らんな。
725デフォルトの名無しさん:2009/10/18(日) 18:12:05
for ( ; ; )/*~~~~ \(; ; )*/


無限ループはこうかく
726デフォルトの名無しさん:2009/10/18(日) 23:37:59
こうだろ

#define _

for(;_;)
727デフォルトの名無しさん:2009/10/19(月) 00:18:53
#define は反則だろ・・。

#define do_ob (for)
#define p_q (;;)

do_ob (p_q)
728デフォルトの名無しさん:2009/10/19(月) 00:25:14
>727
展開すると

 (for)((;;))

コレが通るコンパイラを教えてクレ。
729デフォルトの名無しさん:2009/10/19(月) 21:38:33
>>728


defineのあとのカッコ()は無視されます
730デフォルトの名無しさん:2009/10/20(火) 00:48:44
>729

#define A (1+2)
#define B (3+4)

printf( "%d\n", A * B );
731デフォルトの名無しさん:2009/10/20(火) 12:02:05
>>729
むしろ>>730のようにカッコを無視してもらっては困る場合が多いんだけど
732デフォルトの名無しさん:2009/10/20(火) 12:07:05
>>729
だから、どのコンパイラがそんな挙動をするのかと。
733デフォルトの名無しさん:2009/10/20(火) 17:47:26
>>730

11
734デフォルトの名無しさん:2009/10/20(火) 18:07:49
>>733
>732
735デフォルトの名無しさん:2009/10/20(火) 23:16:03
「コメントは無視される」と間違えてる気ガス。

#define A 1 // コメント書いてもちゃんと通るYO!
printf( "%d\n", A );
736デフォルトの名無しさん:2009/10/21(水) 02:42:12
香ばしいな
737デフォルトの名無しさん:2009/10/21(水) 09:36:17
>>735
>「コメントは無視される」と間違えてる気ガス。
誰が?
738デフォルトの名無しさん:2009/10/21(水) 09:42:54
>>737
>735は日本語が不自由なんだよ。>735は、
「>729はコメントが無視されることと同様にと括弧も無視されると勘違いしているのじゃないか」
と言いたいのだろ。

まぁ、普通はそんな間の抜けた勘違いはしないがな。
739デフォルトの名無しさん:2009/10/21(水) 19:34:08
俺の書いた>>325のせいで殺伐としてるなw
740デフォルトの名無しさん:2009/10/21(水) 19:35:12
#define 325 735
741デフォルトの名無しさん:2009/10/21(水) 19:35:56
上記2つ725の間違いです><
742デフォルトの名無しさん:2009/10/21(水) 20:18:01
スタイルの前にまともに動くコードを書けって感じ、、、
743デフォルトの名無しさん:2009/10/21(水) 22:36:02
#define good ;;
744デフォルトの名無しさん:2010/11/12(金) 22:53:49
お?
745デフォルトの名無しさん:2010/12/29(水) 23:38:20
String ToString()
{
return ( this->Type == HogeType.A ) "A" :
( this->Type == HogeType.B ) "B" :
( this->Type == HogeType.C ) "C" :
( this->Type == HogeType.D ) "D" :
( this->Type == HogeType.E ) "E" :
( this->Type == HogeType.F ) "F" :
( this->Type == HogeType.G ) "G" :
( this->Type == HogeType.H ) "H" :
( this->Type == HogeType.I ) "I" : "";
}
746745:2010/12/29(水) 23:39:55
「?」付けるの忘れた・・・orz
747デフォルトの名無しさん:2011/01/08(土) 01:49:46
>>745
きもいw 許せないw
俺ならハッシュ使って返すw
748デフォルトの名無しさん:2011/01/21(金) 19:55:39
MFCみたいに継承つかったら?
749デフォルトの名無しさん:2011/01/21(金) 20:22:09
クラスの頭にCつけるのなんでかと思ってたけど、
public:
 const CHoge&Hoge()const{return hoge;}
ができるのね。
ちょっと惹かれる。
750デフォルトの名無しさん:2011/01/21(金) 23:21:04
GetHogeにするのは嫌なのか・・
751デフォルトの名無しさん:2011/01/22(土) 00:14:39
>>749
頭のC要らないよ。クラスであることを表すってことなら class ってふつうに書けばいいんだよ。
public:
 const class Hoge&Hoge()const{return hoge;}
752デフォルトの名無しさん:2011/01/22(土) 00:19:55
>>750
単に値を取り出すだけなのに動詞とかキモイ。
「x の hoge」は x.Hoge() が自然。 x.GetHoge() ってなると自然に読み下せない。
取り出した値を使った式を書いた場合にさらに読みづらくなる。
753デフォルトの名無しさん:2011/01/22(土) 00:37:47
>>751
コンストラクタと名前被るからって意味じゃないかとエスパー。
754デフォルトの名無しさん
それでは読み出し専用なのか書き込み専用なのか読み書き両用なのかわからないじゃないか!

…などと、どうでもいいことをぐりぐり掘り返してみた。
個人的にはどっちでもいいやって感じ。