コーディングスタイルにこだわるスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/28(日) 15:59:010659デフォルトの名無しさん
2011/02/07(月) 09:11:44> スマートポインタを使えない状況も考慮すると、NULL埋めを徹底させた方がいい気もするなぁ
どんな状況だ?
最低でも std::auto_ptr は使えるだろ。
0660デフォルトの名無しさん
2011/02/07(月) 10:28:070661デフォルトの名無しさん
2011/02/07(月) 11:28:210662デフォルトの名無しさん
2011/02/07(月) 11:37:220663デフォルトの名無しさん
2011/02/07(月) 11:42:210664デフォルトの名無しさん
2011/02/07(月) 11:47:12組み込み系やデバイスドライバ開発だと
スマポが使えない/使わないケースがよくあるよ
場合によってはC++ NGでCだけでの開発を求められたりとか
0665デフォルトの名無しさん
2011/02/07(月) 11:50:40それ、技術的な制約でそうなるの?(だとしたらどんな制約?)
それとも決定権のある人が無理解なだけなの?
0666デフォルトの名無しさん
2011/02/07(月) 12:25:09OSが提供する安全なユーザ空間の上でしかプログラムを組んだ事の無い
アプリ屋さんだと、ちょっと想像しにくいと世界だと思う
そういうもんなんだよとしか言えないし面倒なんで詳しい説明はしない
OSの構造や設計法あるいはリアルタイムOSの解説など
ネットで調べるなり本を読むなり該当スレへ質問するなり自分で考えてくれ
0667デフォルトの名無しさん
2011/02/07(月) 12:32:07いや、俺は組み込み屋なんだが。
幸いにして関わったプロジェクトでは C++ コンパイラが使えたんで、
何の問題も無く使えている(ような気がする?)。
もちろん OS のある環境とまったく同じというわけにはいかないけど、
少なくともスマートポインタを使わない理由は無い。現に使えている。
なんだろうな?
まぁもうちょっと調べてみるよ。
0668デフォルトの名無しさん
2011/02/07(月) 12:39:41deleteの書き忘れ?
deleteを書き忘れちゃうようなコードを書く人のためのもの?
0669デフォルトの名無しさん
2011/02/07(月) 13:33:50コンパイラの信頼性とか、そういう世界なのかな。
0670デフォルトの名無しさん
2011/02/07(月) 14:26:40マーフィーの法則によるとdeleteを書き忘れない人は存在しない
0671デフォルトの名無しさん
2011/02/07(月) 14:35:02カーソル移動して中身を後から書いてる。
同様に、new書いたらdeleteを直後に書く。
直後じゃなかったとしても、生成と破棄はセットで設計してるから大丈夫。
対になるものはいつも対応を取りながら進めていく。
0672デフォルトの名無しさん
2011/02/07(月) 14:57:55ちなみにターゲットマシンのCPUは何でございましたでしょうか?
0673デフォルトの名無しさん
2011/02/07(月) 17:30:18だからそれを人力でやってるのが駄目なんだっつーの。
そりゃ普通そう書くよ。
0674デフォルトの名無しさん
2011/02/07(月) 23:04:20変なフレームワークや仕様を強要されてる場合、newとdeleteを
別々のクラス/関数/スレッド/etcで実行せざるを得なかったりして
必ずしも1対1にできるとは限らないと思う。
0675デフォルトの名無しさん
2011/02/07(月) 23:29:24そのやりかただと return や例外やその他いろいろ破綻する可能性が残る。
>>668 スマートポインタはこういった問題を防ぐためにある。
0676デフォルトの名無しさん
2011/02/07(月) 23:31:54ARM7,9,11 と PowerPC 系が少し。
0677デフォルトの名無しさん
2011/02/08(火) 01:00:25そういうときはまず設計を改めたいものだ。
生成期間の管理があやふやになってスマポに頼るような時、
すでに半分棺桶に体突っ込んでるようなもの。どの道破綻する。
0678デフォルトの名無しさん
2011/02/08(火) 01:23:28ゲーム? のはずないか。
そのあたりは c++ いけるしな。
0679デフォルトの名無しさん
2011/02/08(火) 07:58:22> そういうときはまず設計を改めたいものだ。
メッセージ作って他のスレッドに投げてそのスレッドがさらにまた…
ってな事はしないのか?
0680デフォルトの名無しさん
2011/02/08(火) 14:14:39・どれを weak_ptr にするかでどうせ後々面倒が起こって、それじゃ delete 忘れ修正の手間と大差ない
・余分なメモリアロケーションが発生するのが嫌だ
のどちらかが大きいのではなかろうか。
参照カウンタではなくリンクリストで実装された侵入型ならどちらも回避できる。
が、リンクリストでの実装は参照カウンタに比べて遅いのだとか。
スマポが delete 忘れを解決するというが、たとえばコンストラクタで new したものを
delete する程度なら、調査追跡も楽だから、スワポなんて無くていい。
スワポがあると助かるのは、例えば、寿命の管理が面倒な場合など。
例えば、何らかのキューにオブジェクトを突っ込む必要があるような場合、突っ込んだ
側にとってはもう不要だが、キューから取り出す側はまだ delete されると困る、という
ような場合。
他には例えば、 Factory メソッドで生成するとか、new するオブジェクトと delete する
オブジェクトが違う場合などは、delete 忘れの追跡が面倒になることもあるから、スワポ
が便利。
スワポが必要になる状況が無いとか、ハンドルとかのスワポ以外の対策があるなら、
別に無理に使う必要は無い。
>>679
俺はスマポ反対ではないが、そういうときにリソースをやりとりして
誰の持ち物か分からなくなるようなのは行儀悪すぎるだろう。
0681デフォルトの名無しさん
2011/02/08(火) 14:32:50> ・どれを weak_ptr にするかでどうせ後々面倒が起こって、それじゃ delete 忘れ修正の手間と大差ない
> ・余分なメモリアロケーションが発生するのが嫌だ
なら std::auto_ptr や boost::scoped_ptr を使わない理由は無いな。
> スマポが delete 忘れを解決するというが、たとえばコンストラクタで new したものを
> delete する程度なら、調査追跡も楽だから、スワポなんて無くていい。
そのやりかただと代入やコピーコンストラクタや例外やその他いろいろ破綻する可能性が残る。
> スワポがあると助かるのは、例えば、寿命の管理が面倒な場合など。
スワポってなぁに?
> 俺はスマポ反対ではないが、そういうときにリソースをやりとりして
> 誰の持ち物か分からなくなるようなのは行儀悪すぎるだろう。
boost::scoped_ptr なら移動不可能な単一所有権。
std::auto_ptr (std::uniqe_ptr) なら移動可能な単一所有権。
boost::shared_ptr なら共有される所有権。
単一所有権なら誰の持ち物かは明白。
共有される所有権が誰の持ち物か分からなくなるのは、まぁ当然だよね。
0682デフォルトの名無しさん
2011/02/08(火) 14:33:540683デフォルトの名無しさん
2011/02/08(火) 15:16:56createみたいなメソッドはもう格上げして、
使う側からしたら (new, create) <--> delete
という扱いにすればその心配はないかも。
deleteの追跡とやらは、createを呼び出した側での話しになる。
0684デフォルトの名無しさん
2011/02/08(火) 21:24:29> なんせ未だにカラム制限のあるコーディング規約もあるくらいだ。
Linux カーネルとか *BSD とか Solaris とかのの話か?
0685680
2011/02/08(火) 23:55:19> なら std::auto_ptr や boost::scoped_ptr を使わない理由は無いな。
scoped_ptr の類まで嫌う人たちがいるのかな?
> スワポってなぁに?
市況2板を見た後だったので FX 脳になってた。
0686デフォルトの名無しさん
2011/02/09(水) 00:31:41んにゃ、某大手家電メーカーの特定部署。1行80カラム以内で
コメントは(行単位でないなら)41カラムだかどこだかより前に出現してはいけない。
インデントも確か特殊だった記憶がある。
0687デフォルトの名無しさん
2011/02/09(水) 10:18:540688デフォルトの名無しさん
2011/02/13(日) 00:26:14富士通みたいな所だな。
0689デフォルトの名無しさん
2011/02/22(火) 12:38:52.11自動的にテスト仕様書を生成するために
//: unkがmoreそうな場合はleaveする
if (iUnk < iMore) {
User::Leave(EGodBlessYou);
}
みたいに、「//:」を0カラム目にしてコメントを書け
という規定があるね
0690デフォルトの名無しさん
2011/02/27(日) 23:18:33.78もう直ったのかshc
0691デフォルトの名無しさん
2011/03/02(水) 16:28:45.71関数名のプリフィックスを2文字、機能単位で3文字、ユニークな部分を3文字に制限された
チームがあった
0692デフォルトの名無しさん
2011/03/02(水) 20:36:20.170693デフォルトの名無しさん
2011/03/06(日) 19:22:45.45std::auto_ptrのみで、このスレで紹介されたような状況を対応する方法はあるのだろうか?
0694デフォルトの名無しさん
2011/03/06(日) 19:35:04.41コピーしたときの妙な特性さえ把握してれば普通に使える奴だよ std::auto_ptr は。
何が心配なの?
0695デフォルトの名無しさん
2011/03/10(木) 22:21:32.27すまん、書き方が悪かった。
一番聞きたかったのは、boost::sheard_ptrでないと解決できないような問題は存在する(多いのか)?
大抵の問題はstd::auto_ptrを駆使すれば問題を解決できるのか。
boost::sheard_ptrはboostが使える環境でないと使えない。(あたりまえだけど)
で、組込み系だと使えるライブラリが制限されていることは多いんで、
boostがあれば解決、だと、現実解にならない場面が多いのよ。
0696デフォルトの名無しさん
2011/03/11(金) 00:39:48.77boostが使えない環境で boost::sheard_ptr 相当の、
あるいは必要な部分だけの機能を自作することは現実的ではないの?
0697デフォルトの名無しさん
2011/03/11(金) 01:27:42.99そんなもん、「作るものによる」としか言えないに決まってるじゃねーか。
心配している「状況」を挙げないと。
0698デフォルトの名無しさん
2011/03/11(金) 19:06:21.02スレ違い。
本を読んで自分で考えろ。その後まだ質問があれば、適切なスレで質問するといい。
0699デフォルトの名無しさん
2011/03/20(日) 01:23:32.020700デフォルトの名無しさん
2011/06/05(日) 05:34:53.68フルHDのモニタでエディタ全画面表示にしてもラップするって酷いお
0701デフォルトの名無しさん
2011/06/05(日) 06:57:16.180702デフォルトの名無しさん
2011/06/06(月) 00:11:56.44お前に俺の気持ちは分からない
0703デフォルトの名無しさん
2011/06/06(月) 01:25:22.030704天使 ◆uL5esZLBSE
2011/07/03(日) 22:33:58.14ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな
本当にバカだな
0705デフォルトの名無しさん
2011/07/03(日) 23:46:31.280706デフォルトの名無しさん
2011/09/17(土) 23:31:20.71CHoge() : hoge1(0), hoge2(0), hoge3(0), ...
この初期化子を1行1メンバで並べるときインデントはどうしてますか?
VS2008だと半角スペースが2つ入るんだけどMSはそういうスタイルなのかしら
0707デフォルトの名無しさん
2011/09/18(日) 00:35:41.14量(空白3つ分とか)をユーザーが設定することはできないの?
0708デフォルトの名無しさん
2011/11/22(火) 12:56:04.400709デフォルトの名無しさん
2011/11/22(火) 16:45:32.56同意だわ。読みづらい。
最近は異常に識別名が長すぎるんだよな。
■ このスレッドは過去ログ倉庫に格納されています