コーディングスタイルにこだわるスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/28(日) 15:59:010232デフォルトの名無しさん
2009/02/17(火) 00:23:21ああ、それはそうだな。
Cライクな真偽値と、C++のboolを併用するときはしかなないのかね。
static_cast<bool> とかするとどうなるんだろう。
0233デフォルトの名無しさん
2009/02/17(火) 00:25:080234デフォルトの名無しさん
2009/02/17(火) 00:25:560235デフォルトの名無しさん
2009/02/17(火) 00:52:23式が bool じゃなくて return するのに問題があるというのなら、
? の左に書くのだって同じ問題があるはずじゃないか。
やっぱり、? 以降は単純に冗長だよ。
0236デフォルトの名無しさん
2009/02/17(火) 22:58:25どのコンパイラでも警告でないならそのまま返したいさ、そりゃ。
0237デフォルトの名無しさん
2009/02/18(水) 01:36:14うるさいっていうかアホだろ。
return での bool への変換は警告するのに
? 演算子の前に置いたときの bool への変換は出ないとか、
意味がわからん。
そもそも警告を黙らせるためのコードなんか書いちゃいけない。
警告によって指摘された問題に対策しないといけない。
0238デフォルトの名無しさん
2009/02/18(水) 04:04:58そこでbool型への変換だなんて警告が出るわけない。
0239デフォルトの名無しさん
2009/02/18(水) 04:33:49何を根拠にそんなこと言うの?
C++ の ? は bool に変換して評価するよ。
5.16 Conditional operator p1
> The first expression is contextually converted to bool (Clause 4).
0240デフォルトの名無しさん
2009/02/18(水) 05:14:14C99だけ見ていたが、こっちは、0と比較して云々となっていて、
_Boolへ変換するとは書かれていなかった。
C++もそんな調子だと思っていたよ、すまない。
0241デフォルトの名無しさん
2009/02/18(水) 13:47:17それもアホだな。
0242デフォルトの名無しさん
2009/02/18(水) 14:45:41結局のところ "? true : false" がまったく冗長なだけの記述には違いないね。
0243デフォルトの名無しさん
2009/02/18(水) 19:22:440244デフォルトの名無しさん
2009/02/18(水) 21:31:42変数のタイプをプリフィックス/ポストフィックスとして
つける命名規則だけは絶対裂けるべきだ
一部に改訂が入って、使ってる型の定義が変わった場合の
メンテナンスはとんでもないことになる
0245デフォルトの名無しさん
2009/02/19(木) 00:03:28チーム全体に徹底させるだけの権限と統治力を持ってない場合は特に。
人は力強く押さないとあらぬ方向に進むが、引っ張れば割とすんなり思った方向へ進む。
0246デフォルトの名無しさん
2009/02/19(木) 12:32:31WIN16→WIN32→WIN64の悲劇ですね。
0247デフォルトの名無しさん
2009/02/19(木) 21:33:35たぶん・・・
0248デフォルトの名無しさん
2009/02/19(木) 23:15:01C++のcppの方にソースを見やすくするために関数を小分けにしたものを
staticで記述して使ってるんだが、private関数にするべきかね?
0249デフォルトの名無しさん
2009/02/19(木) 23:28:51privateにしなくてもいいんじゃね?
C++のprivateって、そもそもが美しくないし。
0250デフォルトの名無しさん
2009/02/19(木) 23:47:33クラスのインターフェイスとは関係ない、実装側だけの問題なら、実装側で完結してるほうが美しい。
static 関数なら、いくら変更しても外部には影響しないし。
0251デフォルトの名無しさん
2009/02/20(金) 00:02:01だけつけときゃいいのか。
0252デフォルトの名無しさん
2009/02/20(金) 00:02:30外に出しちゃうのも良い鴨
0253249
2009/02/20(金) 00:05:44勘違いしてた。
0254デフォルトの名無しさん
2009/02/20(金) 00:16:570255デフォルトの名無しさん
2009/02/20(金) 01:12:07.cpp ローカルな関数は static じゃなくて無名名前空間を使う。
private にすべきかどうかはクラスのメンバであるべきかどうかで区別する。
何も考えずに書くと private 関数の宣言をヘッダに書くことになるんで何かおかしな
感覚になるけど、 pimpl とかインターフェース継承とか使って隠せば問題ない。
0256デフォルトの名無しさん
2009/02/20(金) 01:22:53そこまで意識して気をつけようとも思わないけど、気が付くと疑問に思う。
0257デフォルトの名無しさん
2009/02/20(金) 01:25:22関数や変数だけならいいんだけど、 C と違って .cpp ローカルな struct や enum も
グローバルに置いてると定義がかぶってアウトだから、なるべく無名名前空間を使う
癖をつけておいたほうがいいよ。
0258デフォルトの名無しさん
2009/02/20(金) 12:56:17それだけなら別にアウトじゃない。
規格としてはダメかもしれんが。
ただ、メンバ関数はリンケージをファイル
スコープにできないから、無名名前空間が
絶対必須。
0259デフォルトの名無しさん
2009/02/21(土) 17:20:060260デフォルトの名無しさん
2009/02/21(土) 17:28:41eraseは消去、removeは除去。ついでに言えばdeleteは削除。
まぁ、それでも巧く決まらないときは既存ライブラリの命名に倣ったりするが。
0261デフォルトの名無しさん
2009/02/21(土) 17:48:20appendは追記みたいな
順序付きリストの末尾に付け加えるということなのか
add⊇append
議論領域をUとすると
remove A from Bの操作の後はA B∧A∈Uだけど
erase A from Bの場合はA B∧A Uとまぁそんな感じ?
delteはcomputer上での操作を強調してあったけど
メモリから消えるって事だからプログラミングっていう議論領域だとeraseに近いのかな?
0262デフォルトの名無しさん
2009/02/21(土) 21:03:27delete(A) はAを削除する
remove(A) はAを取り除くが削除されるかどうかは仕様次第
0263デフォルトの名無しさん
2009/02/22(日) 13:37:57例えば map や set には使えない
でも add なら使えると思う
0264デフォルトの名無しさん
2009/02/22(日) 17:56:130265デフォルトの名無しさん
2009/02/23(月) 13:48:140266デフォルトの名無しさん
2009/02/23(月) 14:29:25javaや.NETのコレクションではそうなってる
0267デフォルトの名無しさん
2009/02/23(月) 16:32:130268デフォルトの名無しさん
2009/03/21(土) 10:44:110269デフォルトの名無しさん
2009/04/17(金) 16:59:50if(hoge(var) == 0) じゃなくて、絶対 if (0== hoge(var)) 派だ
なぜなら左辺が変数のときに
if(var == 0) じゃなくて、絶対 if (var = 0) と書いてバグらせてしまう
奴がプロジェクトに出るからだ(中々見つけにくいんだな、このバグ)
後、関数の出口の return が必ず末尾の一つだけってプロジェクトに
参加したことがあるけど、処理の条件が変わっても、メモリリークが
出にくい構造になるのは良いと思った
0270デフォルトの名無しさん
2009/04/17(金) 17:10:55> 参加したことがあるけど、処理の条件が変わっても、メモリリークが
> 出にくい構造になるのは良いと思った
これは結局ケースバイケースで、関数的(副作用がない)なコードが主か、
副作用とかバリバリか、で変わってくるよね。
あと、例外的な場合の処理にgotoを許すか、とか。
0271デフォルトの名無しさん
2009/04/17(金) 17:44:38最近のコンパイラなら確実にwarning出すんでそうでも無い
0272デフォルトの名無しさん
2009/04/17(金) 22:26:290273デフォルトの名無しさん
2009/04/18(土) 01:02:210274デフォルトの名無しさん
2009/08/21(金) 17:39:24OOPが可能なら、RAII(厳密にはデストラクタによる資源解放)の徹底も可能だよな
0275デフォルトの名無しさん
2009/08/31(月) 12:09:43C/C++で、zeroとの比較をするのであれば、
if (hoge(var) == 0)とぜすに、if (!hoge(var))の方が目的がはっきりする
比較する数値がたまたまzeroであるのなら、数字で比較すべきではない
定数化された変数を用いるか、#defineマクロで名付けられた定数を用いるべきだ
よって条件式に、数字が書き込まれている時点で何かおかしなコードであると思われる
0276デフォルトの名無しさん
2009/08/31(月) 12:32:58しかしstrcmpの時ははゼロを扱っていいと思う。
0277デフォルトの名無しさん
2009/08/31(月) 12:38:200278デフォルトの名無しさん
2009/08/31(月) 12:55:27その場合、BASE_CMPとか名付けて比較したほうが分りやすい予感
0279デフォルトの名無しさん
2009/08/31(月) 13:11:50少なくとも俺は今、BASE_CMPナニソレ?(´・ω・`) ってなってるが。
0280デフォルトの名無しさん
2009/08/31(月) 13:12:58CMP_OBJCTじゃね?
0281デフォルトの名無しさん
2009/08/31(月) 13:15:20あほか。
「ゼロと比較する」という処理ならコードにそのまま書いたほうがいいだろjk
0282デフォルトの名無しさん
2009/08/31(月) 13:22:580283デフォルトの名無しさん
2009/08/31(月) 13:28:21それなら辛うじて許せるような気もするが、
strcmpくらいそのまま使えよ、ってのが正直なところ。
strcmp(a, b) < 0 // a < b
strcmp(a, b) > 0 // a > b
strcmp(a, b) == 0 // a == b
という、並べて書いた上での法則がせっかくあるのに。
0284デフォルトの名無しさん
2009/08/31(月) 18:55:48わかりやすくねーよ。
イディオムはそのままにするべき。
0285デフォルトの名無しさん
2009/08/31(月) 19:01:39比較対象と同等か、大きい、もしくは、小さいだから
>>282よりはマシだろ
0286デフォルトの名無しさん
2009/08/31(月) 19:04:58意味不明(´・ω・`)
0287デフォルトの名無しさん
2009/08/31(月) 19:25:05> if (hoge(var) == 0)とぜすに、if (!hoge(var))の方が目的がはっきりする
そんなバナナ
0との比較なら素直に==0、真偽値としての比較ならそのまま、ってのが普通の感覚だと
思うけどなぁ。まぁ最後は主観だからあれだけど。
0をマクロに入れるなんてのは論外。
0288デフォルトの名無しさん
2009/08/31(月) 19:51:240289デフォルトの名無しさん
2009/08/31(月) 20:10:030との比較の「0」とは何かという話じゃないの?
0290デフォルトの名無しさん
2009/08/31(月) 20:14:06お前ら二人は一体なにをいってるんだ?
0291デフォルトの名無しさん
2009/08/31(月) 21:11:580292デフォルトの名無しさん
2009/09/05(土) 23:12:56if (!cond)ってどちらにすべきですか?
ずっと後者だと思っていたのですが、前者もたまに見かけるので
わからなくなってしまいました。
0293デフォルトの名無しさん
2009/09/05(土) 23:50:59論理定数との比較はそもそもナンセンスなので、前者は論理値に対する理解が
あやしい感じがする。
たいした理由じゃないんだけど、どちらかというと後者にしといたほうがいいと思うよ。
0294デフォルトの名無しさん
2009/09/06(日) 00:27:29ありがとうございます。このまま後者の書き方を続けていきます。
0295デフォルトの名無しさん
2009/09/06(日) 10:41:39availability とか visibility とかだと、「可視性ですか?」 じゃ頭弱いみたいだから 「可視性は偽ですか」の方が分かりやすいと思う。
専用に enum 作れという話だけど。
0296デフォルトの名無しさん
2009/09/11(金) 19:06:43hoge(foo,bar);
//これはおk
hoge(foo, bar);
0297デフォルトの名無しさん
2009/09/11(金) 20:49:451TBS って初めて聞いた。
0298デフォルトの名無しさん
2009/09/11(金) 21:31:02これ思ったけど、1TBSの方が図2のような間違いは簡単に検出できるような。
(単純に /;\s*{/ で検出できる。オールマンスタイルの場合、ツールによってはマッチしない)
でも個人的にはオールマンスタイルのが好きだけどな。
0299デフォルトの名無しさん
2009/09/12(土) 07:31:42もちろん黒すぎるのは辛いけど、オールマンだとちょっと白っぽく感じる
まぁこれはさすがに完全に好みの問題だろうと思うな…
0300デフォルトの名無しさん
2009/09/13(日) 02:47:080301デフォルトの名無しさん
2009/09/13(日) 03:18:160302デフォルトの名無しさん
2009/09/13(日) 11:47:430303デフォルトの名無しさん
2009/09/25(金) 00:36:47if(!x)
とか
if(!(z=x-N))
とかやることが多いから==使わないな。
0304デフォルトの名無しさん
2009/09/25(金) 07:48:410305デフォルトの名無しさん
2009/09/25(金) 09:26:210306デフォルトの名無しさん
2009/09/25(金) 10:21:31&& や || のショートカットと関数の副作用の関係
f0() || f1() || …
f0 が成立すると f1 以降が評価されないってのを知らないやつがいるそうだ
なので、こう書かなきゃいけない。とてもうざい。
v0 = f0(); v1 = f1(); …
if (v0 || v1 || …)
0307デフォルトの名無しさん
2009/09/25(金) 10:25:40それ、 (s && strlen(s) > MIN) とかいう時はどうすればいいの?
0308デフォルトの名無しさん
2009/09/25(金) 10:59:33if (!s) {
len = strlen(s);
if (MIN < len) {
...
}
}
0309デフォルトの名無しさん
2009/09/25(金) 11:00:200310デフォルトの名無しさん
2009/09/25(金) 11:26:08何なの?ばかなの?しぬの?
0311デフォルトの名無しさん
2009/09/25(金) 12:08:10元請けにコードの監査部隊がいて意地でも書き直させる方法を取っていた
うざくってしょうがなかった
0312デフォルトの名無しさん
2009/09/25(金) 12:10:140313デフォルトの名無しさん
2009/09/26(土) 21:43:06一方、漏れらに308の書き方を強制しても、せいぜい能率が落ちるだけ。
実戦の世界じゃ、手駒の性能を上げるよりは数を増やす方が効果的だしな。
平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
冷徹ではあるが正しい方策。
0314デフォルトの名無しさん
2009/09/26(土) 23:32:37決めてるやつがヘボいだけだろうな。ほとんどの場合。
それに「ヘボいヤツを使うためにヘボいコーディングルールが有効」理論が、本当に正しいかすごい疑問だし。
0315デフォルトの名無しさん
2009/09/26(土) 23:42:03ウンココーダの頭数揃えても、精鋭一人にも劣る
0316デフォルトの名無しさん
2009/09/27(日) 09:34:49> 平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
> 冷徹ではあるが正しい方策。
「人月の神話」に燦然と挑戦しているな。
まぁそのような開発分野もあるんだろう。多分。
0317デフォルトの名無しさん
2009/09/28(月) 09:09:58十分な精鋭を確保できるプロジェクトなんてほとんど無いんだから、大量のヘボが存在
するのは前提だと思う。
加えて上司も無能だと、そのヘボが逐次投入されてチームは恐竜に、プロジェクトは
タールの沼に。
0318デフォルトの名無しさん
2009/09/29(火) 21:53:42そうでもないと思うが。
1つのプロジェクトに投入する人員については、「人月の神話」の理論で良いけど、
複数のプロジェクトに人員を配置する場合は、>313の理論の方が適している。
308みないなルールは大規模なプロジェクトほど多く、小規模なプロジェクトほど比較的フリーだろ?
(逆な例もある事は承知している)
0319デフォルトの名無しさん
2009/09/29(火) 21:57:10さすがに切り捨てても困らないと思うけどな
0320デフォルトの名無しさん
2009/09/29(火) 22:31:14のこりはじゃまにならないように遊ばせておいても、あんがい生産性あがるんじゃないかって気もする。
0321デフォルトの名無しさん
2009/09/29(火) 23:13:59人月の神話、読んでないか忘れてるだろ。
>>319
短絡評価に限って言えばその通りだけど、教えられても理解できない部分は人によって違うから。
>>320
論文報告を楽しみに待ってる。
0322デフォルトの名無しさん
2009/09/30(水) 00:10:590323デフォルトの名無しさん
2009/10/01(木) 20:40:570324デフォルトの名無しさん
2009/10/11(日) 14:52:50つまり、たとえば優秀なプログラマなら3ヶ月で終わる仕事を一年かけて
(原則同じくらいの人数で)やるけど、
同時に抱えられるプロジェクト数を増やして会社としてのスケールメリットを得るって話?
要するに節約できるのは総務だの人事だのの管理コストの話であって
プロジェクトそのものの効率は上がってないと思うが…
0325デフォルトの名無しさん
2009/10/12(月) 02:57:19プロジェクトの効率は上がらなくても、利益は上げられる罠。
場合にもよるが。
下手すりゃ投入人員と期間を増やせばその分儲かる。
糞ルールがまかり通ってる現場って、大体は上がこんな思想で動いてる希ガス。
0326デフォルトの名無しさん
2009/10/12(月) 03:57:310327デフォルトの名無しさん
2009/10/17(土) 11:55:45public void XXX() throws YYY, ZZZ {
}
のthrows以下が長くなると80桁超えますけど見やすい折り返し方ないですか?
eclipseのデフォルトで整形すると
public void XXX() throws YYY,
ZZZ {
}
とやってくれましたけど見づらいな。
0328デフォルトの名無しさん
2009/10/17(土) 12:44:58思想とか計算づくで、レベル低いんじゃなくて、ただレベル低いだけなんじゃないの?
効率が利益に結びつかないから、淘汰されないだけで。
0329デフォルトの名無しさん
2009/10/18(日) 21:42:59保守要員みたいなところにエース級は投入せんだろ。
むしろ OJT で勉強させるために新人を。。。
0330デフォルトの名無しさん
2009/10/20(火) 11:51:05行が長くなるときどう折り返すか
ttp://java-house.jp/ml/archive/j-h-b/009166.html#body
0331デフォルトの名無しさん
2009/10/20(火) 12:09:53してたんだけど、 Python 使い出したらそうもいかなくなって、今は微妙な気持ちです。
■ このスレッドは過去ログ倉庫に格納されています