1 名前:デフォルトの名無しさん [2006/08/12(土) 01:56:11 ] 禁止ネタ(超既出) ・長い関数 ・深いネスト ・グローバル変数 ・goto ・memset ・malloc - free ・局所ブロック ・サンプルコードのtypo ・記述スタイル ・関数・変数名 過去スレ その4: pc8.2ch.net/test/read.cgi/tech/1153312202/ その3: pc8.2ch.net/test/read.cgi/tech/1149986051/ その2: pc8.2ch.net/test/read.cgi/tech/1142741989/ 初代 : pc8.2ch.net/test/read.cgi/tech/1141867015/
267 名前:デフォルトの名無しさん [2006/09/03(日) 10:40:55 ] >>266 >仕様としては、指定された名前のファイルがあれば追記でなければ新規作成。 >行の内容はタイムスタンプと指定された文字列。文字列中の非可読文字は適切に処理するってことで。 っていう関数(例えばwriteLog関数)を作って re = hoge.init(); if(re != S_OK){ writeLog("初期化失敗"); return; //処理によってreturnするもよし、続行するもよし } re = hogest.init(); if(re != S_OK){ writeLog("オプション無し"); } って話じゃないの? 別に関数の中で色々とやることにメリットを感じないんだけど? だってエラーがでた箇所みつけにくいじゃん。 ところで >指定された名前のファイルがあれば追記でなければ新規作成 これってfopenを'a'で開くだけじゃんw お前が何をいわんとするのかさっぱりわからない。
268 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 10:41:28 ] 俺もため息が出るよ。 醜くてもやむをえずそれを書いた人の心中察するあまり…
269 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 10:48:59 ] で、>>267 を try{ hoge.init(); hogest.init(); ・ ・ ・ } って書くと catch() catch() catch() ・ ・ ・ って書かなきゃいけないじゃん。 俺、これをやるぐらいなら>>267 のほうが100倍ぐらいいいと思うんだけど。 エラーが起きたらエラーが起きたその箇所にその内容が書いてあるほうがいいと思うんだけどなぁ。
270 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:21:30 ] >>267 >これってfopenを'a'で開くだけじゃんw あ、いけね、「新規作成して1行ファイル内容を出力」の肝腎な後半を忘れてた。 で、漏れはそのwriteLog()相当の中身の話をしたかったんだがなぁ。 それはさておき、>269のcatch()の連続は何?
271 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:24:21 ] C++でinitというメンバ関数名を見るたびに嫌気が差す。 コンストラクタでええやん。 コンストラクタがあるのに何がかなしゅうて一々ケッタイな初期化せにゃあかんねん。 >>270 たぶん、例外要因全部別々にcatchしてる例外初心者でしょ。 俺ならstd::exception.whatで終わらせるけど。
272 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:35:26 ] >>270 >あ、いけね、「新規作成して1行ファイル内容を出力」の肝腎な後半を忘れてた。 日本語でおk >で、漏れはそのwriteLog()相当の中身の話をしたかったんだがなぁ。 こんなのtrycatchに関係あるの?わからない。 >>271 >C++でinitというメンバ関数名を見るたびに嫌気が差す。 だってMFCからいってコンストラクタじゃウィンドウできてねーし。 継承して作ったら何もしようが無い。 >std::exception.what なにそれ?資料少なすぎてマイナーなんじゃね? なんかよくなるの? 基本的に処理とエラー内容はできるだけ離したくないんだけど? 俺のニーズにはあってるのかな?
273 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:39:47 ] >>272 標準ライブラリをマイナーと言われても困る。 >>270 俺は例外信者だけどこれ位の規模だと例外非使用でも大差ないと思う。 マルチバイト文字とかその辺まで凝るとまた話が違うかも知れんけど。 void writeLog(const char*filename,const char*logmsg){ char buf[64],c; FILE*fp = fopen(filename,"a"); if(fp){ time_t tm = time(NULL); strftime(buf,64,"%H:%M:%S | ",localtime(&tm)); fputs(buf,fp); while((c=*logmsg++)!='\0') fputc(isprint(c)?c:'.',fp); fputc('\n',fp); fclose(fp); } }
274 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:41:23 ] >>273 だって全然検索ヒットしないよ。 入れてみたものの誰も使ってないんじゃない? C言語のunionみたいさ。
275 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:43:14 ] >>271 コンストラクタでエラーが起きたときに それを通知するには例外を使うのが普通だろうけど そのリソースに代替物があって、初期化の失敗が 致命的なエラーにならないときには 例外ではなく戻り値で通知して欲しい、とか まあ、オブジェクトが正常かどうかを 問い合わせる関数を追加すればいいのだろうけど。
276 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:46:23 ] www.google.co.jp/search?q=std+exception+what std exception what の検索結果 約 4,800,000 件中 1 - 10 件目 (0.15 秒)
277 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:53:22 ] >>274 Cでunion使わないってありえねー。 C++だと継承でほぼ代用できるから利用価値が低下するけど。 >>275 その場合なら自分も例外処理にするよりも普通は成否を返すでしょうね。 C++のiostreamもそのパターンの場合は例外を投げないですしね。 例外を使う場合はむしろメモリ不足とかの代替とか無理な状況に使うほうが多いですし。
278 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:53:56 ] >>276 おお、検索の仕方が悪かっただけか。すまん。 でも、やっぱり、 catch() catch() catch() って書くみたいなんだけど?
279 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:58:19 ] >>273 fputs(), fputc(), fclose()のエラー処理も入れてくれ。 >>272 「新規作成して1行目にファイル内容の概略を出力」でいい? 要は、ファイル名がerror.logなら"; error.log"と書いておくとかそんな感じで。 #この件は説明不足が続いて失礼。 >>276 それは余りに無意味な検索の仕方だ。3つの単語を別々に検索してしまうジャマイカ。
280 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 12:04:37 ] >>278 int main() { try { // ... } catch(const std::exception& e) { std::cerr << e.what() << std::endl; return 1; } } そしてこのほかには殆ど完全にと言ってよいほどtry/catchが出てこないプログラム。
281 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 12:11:00 ] というか例外って使いこなせば使いこなすほど try catchをほとんど書かなくなるんだよな(C++では)
282 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 12:14:00 ] 処理を中断してログ吐いて終了するくらいしか手がないときにしか 例外って使わないしねぇ…
283 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 12:39:58 ] 非チェック例外以外にチェック例外も用意したJavaですら 最近は「例外は基本的に実行時例外だけにしとけ。 どうにもならんような状態を知らせるか、 プログラミングミスを検出する目的で使え。」な流れだよね。
284 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 12:45:01 ] >>277 > Cでunion使わないってありえねー。 > C++だと継承でほぼ代用できるから利用価値が低下するけど。 kwsk
285 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 13:30:24 ] プログラムにバグがあるときでも何とかごまかすために使ってる>>例外
286 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 15:03:27 ] 継承で利用価値が低下するってのは、俺にもよくわからんな。 struct RGBA { union { struct { unsigned char r, g, b, a; }; unsigned char rgba[4]; }; みたいなのを、 class RGBA { unsigned int rgba; public: void set(unsigned char r, unsigned char g, unsigned char b, unsigned char a); void set(unsigned int rgba); … } みたいに書くからって話かな?
287 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 15:13:10 ] union と継承の関係もよくわからんが、 >>296 のプログラムと継承の関係はもっとよくわからん。
288 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 15:23:20 ] >>287 ・>286のclass RGBAはunionを使っていない。 ・struct RGBAを含む構造体は内包で実現することになるが、 class RGBAを含む構造体は継承で実現できる。 #が、意味は微妙。
289 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 15:42:01 ] 277がC++だと継承で代用できるといったのはこういう例だと思う。 struct Hoge { enum type_t {Foo, Bar, Piyo} type; union { struct foo_t {/* ... */} foo; struct bar_t {/* ... */} bar; struct piyo_t {/* ... */} piyo; }; }; typeによってunionのどのメンバにアクセスできるかが決まるというもの。
290 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:02:36 ] そんなもんCでもできるし、継承関係ないけど…。 ひょっとして釣り?
291 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:24:48 ] いや、289のようにCでは共用体でやっていたのを、C++では継承で代用…ってことなんではないかと。 自分の勘違いだったら申し訳ないが、自分は290の読解力こそ疑うが…。
292 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:29:06 ] >>290 ここまで説明せにゃならんのか。 void HogeHoge(Hoge* hoge) { switch (hoge->type) { case Foo: /* fooの処理 */ break; case Bar: /* barの処理 */ break; case Piyo: /* piyoの処理 */ break; } } これをOOP風にすると、継承を使いunionを使わないようにすることができる。 class Hoge { virtual void HogeHoge() = 0; }; class Foo : public Hoge { virtual void HogeHoge() {/* fooの処理 */} }; //Bar, Piyoも同じ
293 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:50:11 ] union ってあるビットの塊をいろんなものに解釈するためにあると思うんだが。 Foo, Bar, Piyo が union だった場合、それぞれを Foo は Bar にも Piyo にも見えるけど、 Foo, Bar, Piyo が Hoge の派生だった時に、 Foo を Bar に見ることって無理っぽいんですが。
294 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:51:11 ] やっぱりUnionと関係ない気がするな。
295 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:57:45 ] 共用体だからって、別のものに解釈させて使わなきゃならないってことはないんで、 292の例は別解釈をさせずに、統一的に扱うために使ってるんではないかと。 WinAPIのSendInputで使うINPUT構造体なんかも292の例と同じ使い方だね。
296 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 19:57:59 ] >>293 289/292では、typeに指示された型以外で共用体のメンバにアクセスしてはいけないという仕様。 FooをBarとして見るなどといったことはできない。 Cでは、こういうunionの使い方をされることも全くないわけではない。
297 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 20:20:49 ] あるunionの使い方についてはC++の継承で表現できる、なら納得。
298 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:32:28 ] >>292 なんかすげーヘタな設計を見た気がする...。 > virtual void HogeHoge() {/* fooの処理 */} とか書いてごまかしてるけど、 union { char a; int b; float c; } x; に相当するもの書いてみ。自分がどんな変な設計してるかわかるから。 >>293 ビットレベルの別解釈と、メモリの節約 (=同一の領域をいろんな意味で使う) だろ。 >>295 それは、単にタグをつけてるだけの話。 継承とはまったく関係がない。
299 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 21:45:52 ] たとえば、Cでパーサを書くときって、Tokenをunionで実装したりしない? union Token { int keyword; char *identifier; int intValue; double doubleValue; }; これを、C++で書いたら、Tokenクラスを継承して、KeywordTokenとか、NumberTokenとかを 作成するような実装もありうると思うけど。
300 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 22:16:19 ] >>299 なるほど、すまんちょっと勘違いしてた >>292 class Base {}; class Char: Base { char a; }; class Int: Base { int b; }; class Float: Base { float c; } みたいなイメージやね。 まあ、>>297 が正しいと思う。
301 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 08:31:25 ] unionでセットしたメンバ変数以外のメンバ変数として解釈するのはANSI-C的にはNG 複数のビット表現として解釈する使い方が〜とかほざくやつは完全に標準違反。
302 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 14:56:30 ] だが、それを承知した上で使えば中々便利。
303 名前:デフォルトの名無しさん [2006/09/05(火) 02:16:44 ] ついに1000体突破かよ アイロボットみたいだな 株ロボもいつか夢を見るようになるのかなぁ
304 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 03:33:50 ] >ANSI-C的にはNG 実装依存じゃなかったか?
305 名前:デフォルトの名無しさん mailto:sage [2006/09/05(火) 03:56:05 ] 故にNGなんだろなー。 あまりにも典型的すぎるんで、使ってるから下手だとか言う気には到底なれんが。
306 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 20:57:55 ] なあおまえら聞いてください。 #define MINUS_1 -1 これは明らかにうんこたれだ。 んがしかし #define MINUS_1 FunnyVariant(L"-1", FV_LONG) これはおkだよな? (つД`) つーかもう俺泣きてぇ。 この FunnyVariant をはじめ、DB操作もお金の計算も日付計算も専用のライブラリが用意されてて ↑あんな感じで FunnyVariant クラスに *文字列を* 入れて、数値を生成しなきゃならん。 こうやって、東日本全体を覆うアレのシステムは構築されてんだぜ。。。
307 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 21:09:20 ] >>306 >この FunnyVariant をはじめ、DB操作もお金の計算も日付計算も専用のライブラリが用意されてて 超巨大プロジェクトは、そうするのが普通。
308 名前:デフォルトの名無しさん mailto:sage [2006/09/24(日) 02:45:21 ] アカデミックバカ世にはばかる、みたいな。
309 名前:デフォルトの名無しさん mailto:sage [2006/09/24(日) 21:27:18 ] >>307 突込みどころはそこじゃないんじゃないか
310 名前:デフォルトの名無しさん mailto:sage [2006/09/24(日) 22:46:23 ] これって、 FunnyVariant *anyval = new MINUS_1; って感じで使うの?
311 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 00:28:37 ] 一時オブジェクトで使うのが一般的なんだと思う。
312 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 23:10:55 ] >311 うん、そういう事。 FunnyVariant yesterday = Calendar::addDay(today, MINUS_1); みたいな感じでね。 >307 うんまあ、専用ライブラリが存在する事は、悪くはない事だと思う。 アルゴリズムに責任が持てるのは、いい事だよね。 っていうか、なぜ素直に FunnyVariant yesterday = Calendar::addDay(today, -1); と書かせてくれないのかと(つД`)えーんえーん
313 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 23:45:47 ] > FunnyVariant yesterday = Calendar::addDay(today, -1); このコードキモいな
314 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 00:18:03 ] まあ、俺が組んだ箇所は金の計算をunsigned intでやってあるけどね。
315 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 00:23:54 ] そもそも"FunnyVariant"ってネーミングがアレだな
316 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 02:06:22 ] FunnyVariant はコンテキストによって 整数型になったり通貨型になったり日付型になったりするわけ? なぜそんなにもバリアントにこだわるんだろう。
317 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 03:53:49 ] >>314 是非コードの適用箇所を教えてください。 42億ほど用意して突撃させていただきます。
318 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 09:04:26 ] >>317 314の使っている環境ではunsigned intは64bit以上あるのでは?
319 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 09:53:58 ] >>316 コンテキストによるんじゃなくて、自分で指定してるじゃん。
320 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 10:53:01 ] >>318 そんな夢の無いこと言わないでください…
321 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 11:28:08 ] 1900京円ほど用意して突撃させていただきます。
322 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 12:21:49 ] 321が1990京円用意するより先に、 そこでのunsigned intのビット数はもっと増えていそう。
323 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 12:27:39 ] じゃあ、私は-1円振り込もっと。
324 名前:デフォルトの名無しさん [2006/10/01(日) 01:01:34 ] 【スパイウェア】Yahoo Emulator Part5【堀川水樹】 pc7.2ch.net/test/read.cgi/software/1156652691/ Yahoo Emulatorホントは使いたいんだろ? 堀川に嫉妬してるんだろ?白状してご覧よwww どうみてもYahoo Emulator以上のソフト自分で作れない低能が堀川水樹でチンコ立てるスレです ありがとうございました
325 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 01:20:07 ] >>323 そしたら大金持ちだな。
326 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 21:59:52 ] 借金として処理されるだけな気がする
327 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 07:49:06 ] 毎日の金利がオーバーフローし続けたりしてな。
328 名前:デフォルトの名無しさん [2006/10/04(水) 00:22:37 ] sage
329 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 03:09:51 ] Sub しょりそのいち(ひきすう As Integer) For かうんた = 0 to 10000 step 200 For かうんたに = 10000 to 0 step -200 (約300行略) Next かうんたに Next かうんた '(゜β゜)/~~ End Sub ・ ・ ・ Function しょりそのごじゅうに(ひきすう As Long) (略) End Function ↑VisualBasic、コメントを除く処理が約1.5万行 入社初日に渡された、売り上げ集計ソフトの逃げた前任者のソースここまでに約1月 動作不安定、仕様を満たせそうに無い、変数宣言殆ど無し 必要なコメントは無く’(笑)とか’(泣)とか不必要なコメントは沢山ある しかも標準モジュール-日記.basに上司に対する愚痴が山のように書いてある もちろん最初からから全部書き直しました 書き直し総所要時間(デバック等を含む)約3日 書き直し後のソース約550行 550行のソースを1.5万行で書けるのはある種才能だと思う
330 名前:デフォルトの名無しさん [2006/10/04(水) 08:57:36 ] あらゆる箇所にコメント書く香具師うぜー 本当に必要なコメントが埋もれてしまうがな
331 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:10:01 ] >330 居るよな、そういうヤツ。 酷い場合、そういうのがコーディングガイドになってたりするところもあるわなぁ('A`) お互いにプロなんだから、そんな基本的なコメントいらんから、 てか、空気読めよ、みたいなヤツな。 典型的なのが、 int i=0; //変数iを0で初期化する。 こういうのとか、 exit 0; //リターンコード0を返し、処理を終了する とかな。
332 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:13:34 ] print $_->[0],"\n" for sort{ $_->[1] }map{[$_,lc$_]} @ARGV; おまえらはコレにコメント欲しい?なくても読める? 俺はなくても読めるし無いほうが簡潔だと思うけどどうよ?
333 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:18:02 ] 前後の繋がりもあるから一概には言いにくいが、ぱっと見解りにくいと思われ
334 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:25:34 ] >>332 コメントがどうこう以前にウンコに見える
335 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:31:06 ] だめなコメント print $_->[0],"\n" # 要素の最初のデータを表示 for # 要素を順に sort{ $a->[1] cmp $b->[1] } # 2番目の要素でソート map{[$_,lc$_]} # 要素を元データとそれを小文字化したペアに変換 @ARGV; # コマンドライン引数 正しいコメント # コマンドライン引数をケース非依存をソートして順に表示 print $_->[0],"\n" for sort{ $a->[1] cmp $b->[1] }map{[$_,lc$_]} @ARGV;
336 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:43:50 ] # ホルホル print $_->[0],"\n" for sort{ $_->[1] }map{[$_,lc$_]} @ARGV;
337 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:48:47 ] >>331 いねーよ、そんな奴w
338 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:51:58 ] じゃあこれはどうよ? $r=query($conn,"insert into t1(".join(',',sort keys %d).")values(".join(',',map{db_quote($d{$_})}sort keys %d).")");
339 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:54:32 ] 言語仕様そのものがゴミクズ。
340 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:56:09 ] >>338 これは無理 こんなの一行で書くんじゃねえよ
341 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:51:43 ] >>338 ぱっと見、フィールド名と値の順番は大丈夫か、ちょっとどきどきする。
342 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 18:42:26 ] 変数名もドキュメントの一部
343 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:26:04 ] 変数名だけで何をやるのかが分かる
344 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 01:13:47 ] 末尾の数字だけが違う以外は同名の関数が複数出てくるコード。 private Hoge createHoge(Fuga fuga){ // なんか処理 } private Hoge createHoge2(Fuga fuga){ // createHoge と殆ど同じ処理 } 以下、createHoge6 あたりまで続く。 無印〜6までの使い分け条件・使い分けが必要な理由は コメントにも仕様書にもどこにも書いてない。 マジックナンバーがそこら中に分散、 一つの関数が300行越えるのはザラ、 等の諸症状も併発する。
345 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 01:16:02 ] class名見れば分かるのにメソッドにまでわざわざ長ったらしく書く奴
346 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 02:58:18 ] コメント読むとおつむの程度が知れる。 コメント読まれるとおつむの程度が知られてしまう。 だから漏れはコメントを書かない。 これぞ自衛的プログラミングの極意。
347 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 03:11:14 ] コード書かなきゃいいんじゃね?
348 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 07:20:14 ] それだ!
349 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:18:26 ] 要求だけあって、仕様がない一人案件の場合、 おもむろに作り始めるんだけど、 そういう場合、変数やら関数の意味が あとからだんだん変わってしまう場合が多いので あまり真剣に考えても意味がない。 適当にしたほうが良い。 ということを学んだ入社半年目。
350 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:43:32 ] まーそういう事もままあるが、途中で随時リファクタリングしてる。 IDEが簡単な置き換えしかできないシケたヤツだとダルいけど。
351 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:44:05 ] >>349 こいつ下手
352 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 12:19:03 ] >>349 変数と関数で物事括ってるからマズいんでね?
353 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 15:17:29 ] >>349 死刑
354 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 09:44:47 ] >>349 意味が変わってきたら、それに応じてリファクタリングかけるべきだな。 いつでも変数の意味は正確な物にしておくほうがベター。 考えても意味がないっていうのは、ちょっと良い考え方ではない。 一人案件でも、仮に趣味のコードでも、このへんは変わらんよ。 数ヶ月後の自分は、今の自分からみたら他人並。 その時に、わかりやすいコードとコメントが意味を持ってくるものだし。 本当に作り捨てで今だけ解ればいいっていうなら、手を抜くのも有りではあるが… 案件なら、作りっぱなしでもう2度とコードみないって訳にもいかなかったりするだろ? 入社半年目なら、今のうちに考え直す方が良いよ。
355 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 13:02:17 ] 袋叩き
356 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 14:02:25 ] 変数名考えてる時って、頭の片隅で設計してるんよ。 見通しの悪い設計してるから良い名前が付けられない。
357 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 14:29:26 ] あー、プログラムの文脈以外に、識別子に意味もつけられたら便利かもと、唐突におもた
358 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 16:23:43 ] boolean型で変数名 flag これ最強。
359 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 23:58:23 ] 俺の bool b とどっちが強いかな??
360 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:08:23 ] 5行くらいの関数で使うんならアリだぜ。 20行越えてたら殺す。
361 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:12:51 ] 悪い、40行くらいのコードでも普通に使い倒してる。 二回死んどくから勘弁してくれ。
362 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:31:39 ] 許す。
363 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:54:44 ] String s = new String(); s = "foobar";
364 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:57:24 ] void foo() throws Exception { ... }
365 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 06:28:02 ] 今時、for文でループまわしているのを見たとき
366 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 07:10:51 ] >>365 kwsk
367 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 07:35:18 ] >>366 eachとかforeach使えってこと。 iteratorでも可 まあ、今時、それらができない言語は時代遅れだと思う