質の高いコーディングを身につける  

このエントリーをはてなブックマークに追加
201仕様書無しさん
>どのようにテストすればよいかという点を欠いたままの今のテストファーストではバグは減りません。

減らない?
増えないが正解だ
202仕様書無しさん:04/12/30 05:22:27
どこから引用してきたんだろう・・・・
ま、考えなく書きやすいところだけユニットテスト書いてテストしたつもりになっても、普通に動作確認で気づくような不具合しか対処できないってことじゃないかな。
テストファーストしないときにバグとして報告されていたものに関しては、相変わらずテストされずバグとして報告される、と。
203仕様書無しさん:05/01/05 01:32:01
???
テストファーストってやったりやらかったりすんの?ありえねー
ってゆーか意味無いじゃん
204仕様書無しさん:05/01/05 01:44:35
>>201
やっぱり「減らない」の方が適切だよね?「増えない」は語弊がありそう。
バグをテスト段階での発生件数として論じたいのかもしれないけど、
そもそもがバグ減らすのが目的だし、発見→修正 でバグ減るわけだし。
205仕様書無しさん:05/01/05 02:30:23
>204
>やっぱり「減らない」の方が適切

んなわきゃねー

206仕様書無しさん:05/01/05 02:33:38
>>203
全部できてるつもりになってるの?
そっちの方が怖い。
207仕様書無しさん:05/01/05 02:42:10
できたりできなかったりするのが、特別なプロセスや個人の能力なしにはありえないことをわかってないのも怖いな。
208仕様書無しさん:05/01/05 02:42:28
>206
>全部できてる

もれも203に賛成
テストファーストって先にテストを作ってから本体を作る手法だよ、わかってる?
できたりできなかったり、ってものではないぞ

(もっともGUIとかはテストファースト対象外だけどね。その話を一点のかな)
209仕様書無しさん:05/01/05 02:45:15
>>208
だから、それで保証できるのはとりあえずテストがあるということだけで、全部テストできたことにはつながらんでしょ。
テストファーストでテスト書いたら、全部テストできたつもりになるのが怖い。
210仕様書無しさん:05/01/05 02:51:06
>209

もまえユニットテストとその上位のテストをごっちゃに考えてないか?
そもそもテストファーストはユニットを作るときの手法であってテスト手法ではない
211仕様書無しさん:05/01/05 02:54:19
>>210
ということは、藻前の意見は、>>201から続く今の流れとは関係ないってことだな。
テストファーストはユニットを作るときの手法であってテスト手法ではないのに、テストしたつもりになっていては工程の終盤以降に報告されるバグは減らない、ってことじゃないのか?
212210:05/01/05 02:58:35
とりあえずテストファーストしとけば「増えない」んだって話じゃねーのか?
そもそもテスト手法ではないんだってば
213仕様書無しさん:05/01/05 03:00:55
「どのようにテストすればよいかという点を欠いたままの今のテストファーストではバグは増えません。」
説明なしで意図どおりに解釈できる文章ではないと思うが。
214仕様書無しさん:05/01/05 03:03:05
>>212
いまは、テストファーストがテスト手法かどうかという話をしてるのではなくて、テストファーストをすることでテストをした気になって妥当なテストが行われないことがあるんじゃないのかって話だよ。
215仕様書無しさん:05/01/05 03:04:19
もまえバカか?
あえて書けば

「どのようにテストすればよいかという点を欠いたままの今のテストファーストでもバグは増えません。」
そもそもテストファーストはテスト手法ではないし

216仕様書無しさん:05/01/05 03:04:44
>>212
テストファーストがテスト手法ではないなら、とりあえずテストファーストするだけならバグは増えも減りもしないね。
217仕様書無しさん:05/01/05 03:07:29
>>215
> 「どのようにテストすればよいかという点を欠いたままの今のテストファーストでもバグは増えません。」

ただ意味がない文章にしただけじゃないか。
減らないというのが論点なんだろ。
218仕様書無しさん:05/01/05 03:09:06
「コーディング前にサルサを踊っても、バグは増えません」
と同じレベルの文章にしただけだね。
219210:05/01/05 03:10:53
>214
だからテストファーストは 減らすって観点ではなくて
増やさないって観点だろって事

220仕様書無しさん:05/01/05 03:11:02
>>215
だから、テストファーストでテストした気になって妥当なテストが行われないということが起きる可能性があるということを話してんじゃねぇの?
221仕様書無しさん:05/01/05 03:13:01
>>219
デグレードしないってこと?
それはただ論点をずらしただけだろ。
それに、テストファーストがテスト手法ではなくて妥当なテストが行われていなければ、デグレードも起きうるよ。
222仕様書無しさん:05/01/05 03:14:11
テストファーストしただけで、デグレードが起きないっていいたいの?
すごく危険な妄想だと思うけど。
223210:05/01/05 03:21:18
>デグレード
まぁそういう観点もあるが、とりあえず今の話の流れとは違う

コーディング時に埋め込まれてしまう類のバグを増やさない、って話だよ
例えば複数のユニットが絡み合う動作時の不具合などはほとんど関係ない
だからこっちは減らない
224仕様書無しさん:05/01/05 03:26:14
>>223
じゃあ、増えないともいえないよ。
コーディング時に埋め込まれてしまう類のバグを増やさないためには、ただテストファーストしただけではだめで、どのようにテストするかという観点が必要だと思うが。
225210:05/01/05 03:28:14
いやどのようにって観点がなくても増えないよ
テストケースにパスするだけのコーディングしかしないんだから
226仕様書無しさん:05/01/05 03:28:59
それに、「バグが増えない」という話は、>>218のようなサルサファーストでもバグはいままでどおりで増えないわけだし、意味がない。
227仕様書無しさん:05/01/05 03:30:11
サルサファーストだと疲れちゃってケアレスミスが増えるかもw
228仕様書無しさん:05/01/05 03:30:29
>>225
そのテストケースの中身が問題なんだろって。
229仕様書無しさん:05/01/05 03:31:30
>>227
コーディング始めるたびに、あっちこっちでサルサが踊られる様子を想像してみろ。
なごむぞ。
230仕様書無しさん:05/01/05 03:35:15
テストファーストはコストがかかるので、バグが減るっていう効果がないならやらないほうがいい。
アフターテストが不要になるわけではないし、それなら、普通にテストアフターだけやったほうがいい。
231仕様書無しさん:05/01/05 03:37:34
実装を先に書いてからテストを書く場合テストの完全性を保障することは困難です
232仕様書無しさん:05/01/05 03:39:01
テストを先に書いたとしても
テストが不足していることを発見することが難しいですけど
233仕様書無しさん:05/01/05 03:44:15
>>231
テストを先に書くにしても、どのようにテストするかという観点がなければ、完全なテストに近づくことはできないと思うが。
234仕様書無しさん:05/01/05 03:45:29
>230

後が違ってくる
デグレいわゆるエンバグが無かった事を確認汁!とかで
235仕様書無しさん:05/01/05 03:51:10
それも、テストファーストでバグが減るって効果がないときには役に立たんよ。
その場合は、ふつうにアフターテストだけ繰り返した方が、コスト的に安くつく。

くれぐれも言っておくけど、どのようにテストするかという観点なしに、ザルのようなテストケースかいた場合だよ。
236仕様書無しさん:05/01/05 03:53:49
ザルのようなテストケースで、デグレードしたときによく見られるようなちょっとむずかしめのバグが発見できるとも思えないし。
デグレードって、なんか必要な条件を忘れたときに起きることが多いからね。
どのようにテストするかという観点なしに書いたテストでは、その条件をテストしてないことが大いにありうる。
237仕様書無しさん:05/01/05 03:56:14
>235

デグレの発見でもアフターテストの方が安くつく?ありえねー
アフターテストで見つかるバグとテストファーストで予防されるバグは異なるんだって
238仕様書無しさん:05/01/05 03:58:57
>デグレードって、なんか必要な条件を忘れたときに起きる

それはデグレードとは言わないな。単なる新しいバグ埋め込みでそ。
いじってないと思っている箇所の動作がおかしくなるのがデグレだよ。
239仕様書無しさん:05/01/05 03:59:40
>>237
だから、テストファーストで書いたテストケースがザルでバグが予防できてない場合だって書いてるでしょ。
240仕様書無しさん:05/01/05 04:00:57
>>238
いじってないと思ってる箇所があるということは、必要な条件を忘れたことにはならんのか?
241仕様書無しさん:05/01/05 04:09:09
テストファーストって、仕様書からテスト項目を作成しようってぐらいの事と
思ってた。
コードを基にテストしちゃアカンって事と。

テスト項目をプログラム言語で書くとにより、テストの実施・結果にブレを
出さないって手法は、よくテストファーストで用いられるが、テストファー
ストの概念そのものとは関係ないかなと思う。
だがら、>>216氏が言ってるように、テストファーストでもバグは増えも減り
もしないと思う。
242238:05/01/05 04:09:26
いじってないと思っている、のは追加修正とは関係ない箇所の意味です。

手を入れる必要がある箇所の洗い出しが不十分である、という意味が
"必要な条件を忘れた"に含まれているのでしょうか?
(必要な...ってのは追加修正をした箇所の意味で捕らえてました)

もっとも"手を入れる必要がある箇所の洗い出しが不十分である"場合は
デグレードではありませんけど
243仕様書無しさん:05/01/05 04:18:12
いじったところとは関係ないと思ってたのに関係あったってことだろ。
そこを関係があることを考慮するというのは、必要な条件であって、それを忘れたのだったら必要な条件を忘れている。
どこがどこと関係あるか把握できない不思議なプログラムを書いてるってんなら別だけどね。
その場合は、テストうんぬん以前に考えることがあると思う。
244仕様書無しさん:05/01/05 04:20:41
"テストファースト"って
1.実装しようとする動作の検証テストを作る
2.そのケースに合格する実装を行う
って事なんだけど
その"テストケースがざる"とか言ってる意味がわかんないな
実装しようと思っていないテストを作るって事?
245238:05/01/05 04:22:15
>243
だからそれはデグレードではないってw
246仕様書無しさん:05/01/05 04:23:35
> 1.実装しようとする動作の検証テストを作る

このときに、どのようにテストするかという観点なしにテストを書いたらテストケースがザルになるだろ。
247仕様書無しさん:05/01/05 04:25:17
それはどこの定義なんだ?
248仕様書無しさん:05/01/05 04:26:08
つうか、どんな経過でバグ修正のときに別のバグが埋め込まれたとしても、それはデグレードだと思うのだが。
249仕様書無しさん:05/01/05 04:26:55
まあ、ここでデグレード談義しても意味がないので、今までのデグレードはエンバグにしておいてくれ。
250仕様書無しさん:05/01/05 04:31:27
>246
>どのようにテストする

実装したい事とテストで確認したい事が全くあってない、って事?
それこそ頭悪すぎ

251仕様書無しさん:05/01/05 04:34:28
世の中きみのように頭がよくいつでも完璧な仕事ができるやつばかりじゃないし、実装したいことを思い浮かべただけで妥当なテストケースが書けるような単純な処理ばかりではない。
252仕様書無しさん:05/01/05 04:35:47
テストファーストさえすれば、いつでもだれでも自然に妥当なテストケースが書けると思ってるんなら、それはそれで危険だな。
253仕様書無しさん:05/01/05 04:38:54
テスト項目が全てパスする絵をみてしまうと作業が完璧なのだと勘違いしてしまう罠
254仕様書無しさん:05/01/05 04:43:01
>251
それは逆じゃないか?
テストケースなしに妥当な実装できるのが
頭が良い香具師か単純な処理という事では?
255仕様書無しさん:05/01/05 04:45:12
>>254
どっちにしろ妥当な実装するには頭がいいか単純な処理である必要がある、という結論になってもいいですか?
256仕様書無しさん:05/01/05 04:47:54
スレの流れとは関係ないけど
以前は動作していた機能が動かなくなること、がデグレードだと思う
そういう意味で新たにバグを埋め込む事とイコールではない希ガス
(たとえ直接のデグレード原因がそのバグであったとしても)
257仕様書無しさん:05/01/05 04:51:18
>>256
新たなバグを埋め込むことと、以前は動作していた機能が動かなくなることは、表裏一体だと思うが。
258仕様書無しさん:05/01/05 04:52:49
そして、ここでは、バグが埋め込まれたととらえるか、以前は動作していた機能が動かなくなったととらえるかは、問題にはならないと思うが。
259仕様書無しさん:05/01/05 04:53:30
>257
新たにバグを埋め込んでも、以前動作していた機能に影響がないこともあるし
バグの埋め込みによらずに、以前動作していた機能が動かなくなる事もある
だから違う
260仕様書無しさん:05/01/05 04:56:37
ある機能が動作しないというのが、そもそもバグだ。
だから、以前動作していた機能が動かなくなること自体がバグの埋め込みだ。
発生要因とは関係がない。
261仕様書無しさん:05/01/05 05:00:04
書いたコードが意図と反していてある部分が動かなくなったとしても、意図したコードを書いたにもかかわらずある部分が動かなくなったにしてもコーディングした本人以外から見れば、不具合は不具合、バグはバグ、デグレードはデグレード。
262仕様書無しさん:05/01/05 05:00:37
>260
最初っから埋め込まれているバグはどう解釈しても"デグレード"ではないが、何か?
263仕様書無しさん:05/01/05 05:06:26
そのバグはいままでテストを通っていて、発現していなかったんだろ?
いままでは問題なかったと。
そういう設計のほころびのようなものが、一番のデグレードの原因だと思うのだが。
っつうか、わけのわからない信念持ってる人と議論しても意味がないので、これでやめる。
264仕様書無しさん:05/01/05 05:07:20
これでやめる
265仕様書無しさん:05/01/05 05:12:18
デグレード、「更新による品質の低下」って感じage
266仕様書無しさん:05/01/05 05:18:06
「更新による品質の低下」の要因は問わないと思うんだがね。
267仕様書無しさん:05/01/05 05:29:03
退化[退行]する、なのだから「更新による」ってのが重要なのであろう
268仕様書無しさん:05/01/05 05:36:22
更新時に書いたコード自体が誤っていたのか、更新時に書いたコードによって正しい部分がうまく動かなくなったのか、更新時に書いたコードによって潜在的なバグが発現したのかは、重要ではないってことだな。
269仕様書無しさん:05/01/05 05:39:41
ソフトウェアの欠陥の多くは、ソフトウェア修正時に発生する。
ある証券会社の第2次オンラインシステムの際のデータでは、欠陥の50%が修正に起因していた。

回帰テストを行う場合、前提として必要となるのは、テスト結果を予測してそれをプログラムとして記述することである。
この作業を支援する回帰テスト支援ツールは、各種のプログラミング言語毎に揃っている。
しかし、テスト結果を予測し記述することは、骨の折れる仕事である。
そのかわり、テスト結果の確認はほぼ自動的にできる。

多くのソフトウェア開発現場では、「面倒だ」という理由でテスト結果の予測を記述せず、
テスト結果の出力を人手で目で検証するということが、未だに行われている。
結果として、多くのプロジェクトで多くの欠陥がリリース後に発見され、多くの技術者が夜遅くまで働いている。
270仕様書無しさん:05/01/05 05:42:09
で、それは、どのようにテストするかという観点なしにテストファーストによるテストを書いても、結果として多くの欠陥がリリース後に発見されるってことだろ。
271仕様書無しさん:05/01/05 05:43:50
テストのカテゴリ

ユニットテスト
統合テスト
システムテスト
検収テスト
保守テストと回帰テスト


テストファーストの範囲は基本的にユニットテストだけだが、何か?
272仕様書無しさん:05/01/05 05:44:05
>>269
これって、テストファーストでもテストアフターでもどっちでもいいから、テストを自動化しろってことだよね。
273仕様書無しさん:05/01/05 05:45:47
>>271
ユニットテストでどのようにテストするかという観点なしにテストケースを書いたとしてもバグは減らないということとどういう関係が?
274仕様書無しさん:05/01/05 05:51:21
>273

>271 は >270 へのコメントだと思うが
>統合テスト
>システムテスト
>検収テスト
で発見できてないのが問題だろ、って事

そもそもテストファーストはテストの話ではないし
275仕様書無しさん:05/01/05 05:59:13
>>274
>そもそもテストファーストはテストの話ではないし

だから、テストファーストで、テストをどうするかという観点で考えてないテストケース書いてテストしたつもりになってるのが問題だと何度・・・
276仕様書無しさん:05/01/05 06:02:19
>275

>250
277仕様書無しさん:05/01/05 06:05:21
>>276
そう続くなら
>そもそもテストファーストはテストの話ではないし
という主張がおかしくなるよ。
278仕様書無しさん:05/01/05 06:06:54
>>271
> テストファーストの範囲は基本的にユニットテストだけだが、何か?

も、テストファーストをテストの話としているわけだし。
都合のいいようにテストファーストをテストの話にしたりテストの話ではないことにしたり、たまらんなぁ。
279仕様書無しさん:05/01/05 06:07:23
>277

>244-
(250)
280仕様書無しさん:05/01/05 06:09:24
>> 1.実装しようとする動作の検証テストを作る

テストファーストがテストの話ではないなら、どうしてここで「検証テストを作る」と出てくるんだ?
281仕様書無しさん:05/01/05 06:09:57
>278

だから テストはするけど、開発手法なんだっつーの
おまけにテストの観点が重要なのはもっともなんだけど、無くてもどうにかなるんだってば
282仕様書無しさん:05/01/05 06:11:20
>>281
なんか、支離滅裂だなぁ・・・。
テストはするけどテストの話ではないのか。
283281:05/01/05 06:12:48
>280

偶然だが >281 も >280 宛になるか
タイヤキが鯛とはあんまり関係ないってこと
(少しは関係するけど)
284281:05/01/05 06:13:36
>282

偶然だが ... (ry
285仕様書無しさん:05/01/05 06:15:12
鯛の形をした饅頭をタイヤキと呼ぶのと、検証テストを先に記述することをテストファーストと呼ぶのと、関係なさが全然違う。
ほんとにそういう認識なら、テストファースト自体を考え直したほうがいい。
286仕様書無しさん:05/01/05 08:09:19
>>281
> おまけにテストの観点が重要なのはもっともなんだけど、無くてもどうにかなるんだってば

どうにかされたほうにしてみればガクブルものだな。
287仕様書無しさん:05/01/05 09:07:31
>>244
>1.実装しようとする動作の検証テストを作る

っていうのが比較的高スキルな作業で、
経験3年くらいの人でも無指導で完璧にこなす人は割合的に少ないし、
半分くらいはザルに近いテストケースしか書けない。

っていう価値観は前提としてもOKだよね?
288204:05/01/05 10:14:31
保守ageして寝て起きたら乗り遅れた・・・orz
まああれだ。>>281ガクブルには同意だな。
結局テスト作るのは>>287くらいには難しいよな。
あとテストファーストはテストの話だよな。
それにユニットテスト以外のテストファーストもあるよな。
でももうどうでもいいよな。はは。は。
289仕様書無しさん:05/01/05 13:50:54
>>288
いや、乗り遅れて正解だったと思われ。
290仕様書無しさん:05/01/05 22:47:36
201からの流れがよーわからん。誰かまとめてくれ。
291仕様書無しさん:05/01/05 23:14:02
>201 お前の物は俺のもの発言
〜   ドラえもんに泣きつく
〜   秘密道具で復讐成功
〜   秘密道具がばれて>201に殴られる
>290 現在に至る
292仕様書無しさん:05/01/05 23:30:47
>>290
テストファーストはテストじゃない
--じゃあなに?
テストしてコーディングすること
--そのテストはちゃんとやんないといけないんじゃない?
テストファーストはテストじゃない
--じゃあなに?
テストしてコーディングすること
--そのテストはちゃんとやんないといけないんじゃない?
テストファーストはテストじゃない
--じゃあなに?
テストしてコーディングすること
--テストファーストはテストじゃないのにどうしてテストしてとなるの?
テストファーストとテストはタイヤキと鯛の関係だ
--あほちゃう?
293仕様書無しさん:05/01/05 23:37:11
わかりやすくて改修しやすくて分離可能で再利用しやすくしとけばいいんじゃないの

単純なことだろ  意味わかるよね。
294仕様書無しさん:05/01/05 23:38:01
おまいら、むつかしく考えすぎ。 単純なものをうまく組み合わせる ただそれだけでしょ。
295仕様書無しさん:05/01/05 23:44:50
急に流れが戻ったのは明け方の馬鹿が反省したから?
296仕様書無しさん:05/01/05 23:56:58
>>294
賢いな。シンプルイズベスト(←なぜか英語に変換されない)だな。
297仕様書無しさん:05/01/06 00:55:02
テストファーストとはテスト項目に重点をおいてコーディングを行う開発手法のこと。
テストを通ることを最優先して実装を行う。
モジュールの品質はテストによって保障されるが、
最初からテストを通ることを主目的にしているため、品質の確保がしやすい。

利点として
・テストケースにない機能は実装しないので
「将来発生するかもしれない」とか「仕様書にない機能」のような余分なことをしないので、
余計なバグの混入を防ぐ
・あらかじめテスト項目を作成するため、PGの頭の中でロジックが整理しやすい
などがある。

「テスト」とひとくくりにすると混同しやすいが、
「テスト工程をクリアしたら品質が保障される」ということを逆手にとって
「では最初からテスト工程を通ることを重視する」だけであり、
テスト工程でのテスト作業そのものを指すわけではない。
298仕様書無しさん:05/01/06 01:03:16
もちろんテスト作業の質を上げる工夫もされているが、
テスト作業(テストケースの作成、結果確認など)がタコなら品質は保証できない。
(これはアフターテストでも同じだが)

アジャイル開発などでは、コードの修正を行ったら回帰テストを全項目行うことを
推奨していたはず。全項目を確認しなおすことで、ソースに対する信頼性を
保障することが出来る。ただし、これを人手やるのは大変なので回帰テストの自動化が
求められている。
299仕様書無しさん:05/01/06 01:11:41
>>297>>298は何に対するレス?
300仕様書無しさん:05/01/06 02:30:44
テストファーストでやると1つのクラスに対して
テストコード→実装コード→テストコード→実装コードと
かなりの回数繰り返さないと質の高いテストを記述することができないのが問題

なぜなら実装コードを書く前からすべてのテストを記述することは非常に難しいから。
異常処理・例外の類などは特にね
301仕様書無しさん:05/01/06 03:51:53
俺が思うに「最初にテストケースを考える」ことこそ
テストファーストの真髄だと思うんだ。
(テストファーストを唱えてる人がどう思ってるか知らんけど)
そこで生まれたテストケースが貧弱かどうかは実はどうでもよくて
発想の転換でテストケースを濃くする事と
コード書く時に外部条件を意識して書くようにする事
要するに熟達したプログラマが普通にやってるこの2点を
システマチックにやる事で品質向上を狙うモノではないかと。
302仕様書無しさん:05/01/06 09:55:02
>>294
作るものが単純じゃないから、そう一筋縄にはいかないんだよ。
複雑なものを作るときに単純なものを組み合わせると、その組み合わせが単純ではなくなるから、全体として結局複雑になる。
そのとき、部分部分が単純なものでしかないと、複雑な組み合わせを追わないといけない。
そしたら、場合によっては複雑なものを単純に組み合わせたほうがよくなる。

単純なものを組み合わせるのがいいんだったら、アセンブリ最強ってことになるな。
303仕様書無しさん:05/01/06 14:30:41
つか、質の高いコード = テストファーストなの?
他の話題は無いのかよ、と。
早く話題変えないと、あと700レスで埋まっちゃうYO
304仕様書無しさん:05/01/06 20:06:52
>>302
RISCなんかは、アセンブリ最強と同じ発想で作られてんだが?
305仕様書無しさん:05/01/06 20:28:48
>>304
違うよ
306仕様書無しさん:05/01/06 20:48:58
>>305
バカ?
307仕様書無しさん:05/01/06 21:45:17
>>304
それはプログラマにとってじゃなくCPUにとってだと思われ。
308仕様書無しさん:05/01/06 23:21:51
>>303
テストファーストは要求を満たすシンプルなコーディングを促進するから、
あながちスレ違いとは言えない。でもやっぱりテストの話で、鯛の話じゃないよなぁ。
309仕様書無しさん:05/01/06 23:23:19
>>302
良く設計された単純なものを単純に組み合わせるという選択肢もある。
310仕様書無しさん:05/01/07 00:17:59
>>309
エントロピー保存の法則というものがあって、全体的な複雑さにはそれ以上単純にできない限界があるから、それは無理。
311310:05/01/07 00:27:45
×無理
○非常に難しいか、特別な場合に限られる
312仕様書無しさん:05/01/07 00:32:13
たとえば、GoogleのPageRankが行列の固有値を求めればいいだけになっているみたいに、理論をちゃんと構築すれば、プログラム自体は単純になるね。
その場合は、設計作業がページの重要度を行列の固有値問題に変換するという複雑な作業になっているので、全体の複雑さは保たれてるわけだ。
313仕様書無しさん:05/01/07 00:49:40
>>312
複雑さが1000だとして、
10×10×10 というバランスで進める開発と
2×20×25 というバランスで進める開発に優劣は無いって事?
そんなことないだろ。
314仕様書無しさん:05/01/07 01:19:59
>質の高いコーディングを身につける方法

質が高いと評価されるソースを作成するための技法習得
って事かな?
だとするとまず設計がきっちりできる事が要求される
いいかげんにてきとーに設計して作ったものの質が高いはずが無い
もっともそのためにはそもそも何を作ればよいかというレベルでの
要求分析(要件定義)がきっちりできている事が前提だが、、、
315仕様書無しさん:05/01/07 01:32:59
質の高いコーディングを身につける方法

それは

  早 寝 早 起 き



わかったらさっさと寝ろ。
316仕様書無しさん:05/01/07 01:38:16
>だとするとまず設計がきっちりできる事が要求される
>要求分析(要件定義)がきっちりできている事が前提だが、、、

…もういいよ。
317仕様書無しさん:05/01/07 01:41:16
その前に契約が(ry
318仕様書無しさん:05/01/07 01:53:06
1 :デフォルトの名無しさん :04/12/05 14:50:20
良いコードを書きたいです。でも、書けないです。
良いコードを読めばよいと聞きますが、どれがよいコードなのか分かりません。
長くないけど、良いコードと悪いコードを比較して、わかり易く教えてください。
デザインパターン適用するといいと聞きますが、どれだけいいのか分かりません。
異常処理書くと汚くなってしまいます。
例外処理はtry{}catch(Exception e){}としてしまいます。
言語や環境、職場によって良いとされる書き方は変わります。
例えば、携帯Javaは容量を少なくするコードが良くなります。
スピードを徹底的に重視すれば、オブジェクト指向は邪魔なだけです。
関数型言語では、再帰呼び出しを使うのが上等です。
コードリーディングとか、達人プログラマーとか、
本買って読むといいらしいけど、お金ないし、
買いに行くのめんどくさいし、ウェブで見たいです。
そういうサイトつくりたいけど、頭悪くて作れません。
てことで、まとめWiki作って、勝手に書き込んで欲しいです。
トヨタ式的なものがソフトウェア産業でできてないと言うし悔しいです。
てことで、良いプログラムを書くためのやり方、良いソースの書き方を議論して、
最強のソフトウェア開発方法をまとめてください。
319仕様書無しさん:05/01/07 01:56:55
コードを書くことは目的ではなく手段なのだ。
と言ったら煽りかのぅ
320仕様書無しさん:05/01/07 02:05:55
321 :デフォルトの名無しさん :05/01/04 19:12:06
これまでの成果
---
・公開されているよいソースコードを読むとよい
・assert文を使うとよい
・よい本を読むとよい
・コード量が少なくなるようにする
・メソッドの数をできるだけ少なくする
・クラスはできるだけ作らないようにする?
・リファクタリングする
・素早く頭働かす?
・メンタルの健康を保つ?
・ネストはできるだけ下げないようにする?
・変更履歴にはwhat i didではなく why i did itを書け?
---

この先続けてもたいした成果は得られないような…


321仕様書無しさん:05/01/07 02:27:19
昔、とんでもなく品質の悪いプログラムのメンテ引き継ぐことになった。
そのソフトは実際に運用が続けられているものだったから、当然仕様変更の要求がくる。
しかし、ほんの少し処理の流れを変えるだけで、不具合がボロボロと・・・
こんなプログラムに丸一年ほど付き合わされて、どうしたら保守性のいいプログラムに
なるのか真剣に考えるようになり、ソフトウェア工学の本とか、論文とかを読みあさり、
ソフトウェア開発において、ソースコードの質というものを意識するようになった。

こういう人って結構いるのでは?
322仕様書無しさん:05/01/07 02:55:29
>昔、とんでもなく品質の悪いプログラムのメンテ引き継ぐことになった。

んで結論は 品質=保守性 なのか?
質の高いコーディングとは メンテナンスしやすいコードを書くということなのか
323仕様書無しさん:05/01/07 08:18:26
>>310
309ではないが、
そんな物理法則を持ち出されてもな。
それにその単純さの限界を示さなで無理と一言で片付けられてもな。
324323:05/01/07 08:19:51
すまん。
>>311で無理という部分は訂正されていたな。
325仕様書無しさん:05/01/07 10:15:55
>>313
複雑さ10のクラスが100あるのと、複雑さ100のクラスが10あるのとあって、全体的な複雑さが一緒だとするね。
クラスが100あると追うときにあちこち飛ぶことになるけど、複雑さ100のクラスは同じところに記述されているから追うのが楽。

ってことが考えられる。
優劣がないわけじゃなくて、優劣はあるけど場合によるから一概に言えないということ。
326仕様書無しさん:05/01/07 10:29:27
>>323
物理法則じゃなくて、ここでは情報の法則ね。エントロピーは平均情報量のこと。

複雑さは一定っていうことは頭に置いておいた方がいいと思う。
じゃないと、無邪気に目に見えるところだけ単純化して、目に見えないところに追いやられた複雑さに足をとられることになる。
327仕様書無しさん:05/01/07 10:46:07
いや、エントロピーの法則って、熱力学第二法則をソフトウェア工学に転用したものだろ?

「エントロピーは増大する。」

この場合、エントロピー自体が複雑さ、というか乱雑さを表す。もっと具体的にいうと部分部分で
きっちり分かれていたものが、だんだんと混ざり合って均等になってしまうということ。

転じて、ソフトウェアも改変を重ねるうちに、だんだんぐちゃぐちゃに崩れ去っていってしまう
ことは避けられない、ということを指す。
328仕様書無しさん:05/01/07 11:01:02
ソフトウェア工学以前に情報理論の根幹やん>エントロピ
「bit」の定義とかとも関係深いし。
329仕様書無しさん:05/01/07 11:03:04
>>327
少なくともソフトウェア工学にはそういうのはないと思うが・・・。
情報工学の情報量の話。

で、それは改変というエネルギーを与えるとエントロピーが増大するという話だから、とりあえず今の話題とは関係ないよ。
330仕様書無しさん:05/01/07 11:08:51
ソースコードのエントロピーという考え方は面白いな

ただ、質の高いコーディングっていうのは、保守とか可読性とかが重視されて
冗長な部分があった方がいいと思うので、エントロピーでは全く測れないと思う

コピペばっかりだと、エントロピーが、ある特定の値以上になるだろうから
その辺を統計とって、判断するのには、使えるだろうけど。
331仕様書無しさん:05/01/07 11:14:56
>>330
コピペは情報量をふやさないよ。
だって、コピペには、オリジナルの部分を除けば、コピペされているという情報程度しかないからね。

で、話題的には、目に見えるところだけ単純にしても、結局それはどこかに複雑さを追いやっただけだよ、って話がしたかったわけさ。
だから、保守とか可読性を考えると、一部分だけ複雑にしておいて、コード上に分散させないほうがいいこともある、って言いたかった。
332仕様書無しさん:05/01/07 11:22:13
>>331
エントロピーの基礎を勉強した方が良いと思われ
333仕様書無しさん:05/01/07 11:23:36
設計書こねくりまわして「きれいな設計」して、コードが単純になったとしても、その設計がなんのことかわからなくなることがあるから、素直に複雑なままコーディングしたほうがいいってこともある。
難しい設計や難しい数式より、難しいコードの方が追いやすい。
334仕様書無しさん:05/01/07 11:24:47
>>332
そちらこそ。
335仕様書無しさん:05/01/07 12:08:06
イキの良い新人君って綺麗で効率よくてカッコイイコードを書こうとして
意図してか無意識にか知らんが仕様の一部を勝手に無視してくれることがあって
出来てきたものが使えんこともしばしば
新人教育の第一歩がこのへんの矯正になることが少なくない
336仕様書無しさん:05/01/07 12:25:59
リファクタリングしまくったらクラス爆発した。
しかも命名規則が糞だから機能追いにくい。

とか、

JSPなんて追いきれねーよ。

とか。

漏れはjavaにおいてはeclipseの登場以降 xml や JSP はソースコードの可読性を
下げるだけの存在だと感じている。

どうよ?
337仕様書無しさん:05/01/07 12:58:25
>漏れはjavaにおいてはeclipseの登場以降 xml や JSP はソースコードの可読性を
>下げるだけの存在だと感じている。

>>336 具体的にはどういうこと?
338仕様書無しさん:05/01/07 13:14:17
バカとハサミは使いよう。
339仕様書無しさん:05/01/07 18:55:24
保守性たったの5か・・・ゴミめ
340仕様書無しさん:05/01/07 19:17:21
>>339
要AA
341仕様書無しさん:05/01/07 22:23:06
それって道具に使われる人?
342仕様書無しさん:05/01/07 22:39:49
>>333
>難しい設計や難しい数式より、難しいコードの方が追いやすい。

俺は簡単な設計の簡単なコードの方が追いやすいと思うけど。
343仕様書無しさん:05/01/07 23:03:32
>>342
流れ嫁
簡単なシステムが追いやすいのは当たり前。
344仕様書無しさん:05/01/07 23:40:45
>>343
複雑さの限界を前提にしてる時点でズレてるんじゃないかと思って。
そもそも神の創造する最高にシンプルな設計・コードを100%として、
人類が現在到達しているレベルは30%に満たないくらいだとは思えないか。
ましてやお前等なんて10%に到達してるかどうか。

って考えると、複雑さに対する諦めよりも、
よりシンプルさ(可読性も高く初心者でも理解可能なほどの単純さ)
を目指す方が現実的ではないかと思う。次第です。
345仕様書無しさん:05/01/08 00:55:15
346仕様書無しさん:05/01/08 01:43:11
質が高いとは、バグが少ないことと、メンテナンスしやすいことだと
言い換えることができる
347仕様書無しさん:05/01/08 02:26:19
つーか、メソッドやクラスを分割しまくると、コーディング能力に
ネーミングセンスという新しいセンスが要求されるようになる
348仕様書無しさん:05/01/08 02:29:55
単純なメソッド分割は、賢いコメント以上の意味はないしな。
349仕様書無しさん:05/01/09 10:21:18
350仕様書無しさん:05/01/09 14:19:01
>>349
つまり、複雑さとか情報量とかの意味がわからないってことね。
351仕様書無しさん:05/01/09 15:26:31
>>350
頭痛が痛い
頭痛がする

どちらが複雑な文章ですか?
どちらの情報量が多いですか?
352仕様書無しさん:05/01/09 16:46:26
>>351
「頭痛が痛い」の方が、「痛」が2回含まれてるので情報量が低い。

情報量って、意味わかってる?
353仕様書無しさん:05/01/09 16:54:50
「頭痛がする」はすべて違う文字なので、情報量が高く「頭痛が痛い」より複雑。

なんの前提条件もあたえられず情報量とか複雑さとかを判定するなら、こうなる。
354仕様書無しさん:05/01/09 18:58:27
>>352-353
へーそういう考え方なんだ。知らなかった。
質の高いコーディングとは無関係だとは気付かずマジレスしちゃったよ。
355仕様書無しさん:05/01/09 19:21:48
>>354
>>351の文章が質の高いコーディングと無関係なだけだな。
356仕様書無しさん:05/01/09 19:33:12
>>355
日本語としての情報量は同じだけど、上の方が文法的に複雑。
こっちの方がだいぶ近いと思うんだけど。
357仕様書無しさん:05/01/09 19:50:08
>>356
頭痛が痛いのはあたりまえなので、ことばとしての情報量もない。
文法的に複雑というのも意味不明。
そして質の高いコーディングと無関係。
358仕様書無しさん:05/01/09 20:09:21
>>344
情報量とかエントロピーとか複雑さとかの関係をしらないで、単純にそういうことを夢見てたら、目に見えにくい複雑さに足すくわれるよ。
359仕様書無しさん:05/01/09 21:48:32
>>356
複雑以前に不具合だろ。
360仕様書無しさん:05/01/09 22:02:21
>>359
意味が変わるわけじゃないから不具合じゃないだろ。
1処理で同じチェック2回しても不具合じゃない。2回目が意味無いだけで。
ただし品質は低いという。
361仕様書無しさん:05/01/09 22:12:22
>>360
推奨された文法じゃないけどね。
362仕様書無しさん:05/01/10 00:03:34
>品質は低い

別に品質には影響ないだろ?保守性が悪いけど
363仕様書無しさん:05/01/10 01:58:23
>>362
保守性も品質だよ。
364仕様書無しさん:05/01/10 12:42:10
>>363
保守性を品質に入れるかは微妙だな。
評価対象にするとして、保守性なんてどうやって数値化するんだろう?
評価できない性質を品質の対象に入れていいんだろうか?
365仕様書無しさん:05/01/10 13:17:52
>>364
逆に評価出来る品質って何ですか?
366仕様書無しさん:05/01/10 15:10:34
>>365
ISOのなんちゃら
367仕様書無しさん:05/01/10 15:47:53
ソフトウェアの品質として定義されたものといえば、ISO9126ってことになるな。
ttp://www.cam.hi-ho.ne.jp/adamosute/kyotu/iso9126.htm
368仕様書無しさん:05/01/10 16:31:35
>>367
保守性おもくそ入っとるやん
369仕様書無しさん:05/01/10 16:52:18
つか、今フリーで入手できるソースコードのうち
喪前等が質の高いコードだと思ってるのって、どれよ?

それを議論すれば、答えにたどり着けると思われ
370仕様書無しさん:05/01/10 17:05:46
>>368
定義見たけど、これって変更するときとか障害が発生したときに
初めてわかる項目だよね?
ISOの定義はおいとくとして、客先に納入するときに保守性の保障なんて
どうやってやるんだろう?
37169式フリーPG ◆hND3Lufios :05/01/10 17:05:54
保守性は重要だけど、保守性を一般化するのは難しい。

分割の上手く取れているコードは読みやすいが、仕様変更の要求が当初の
設計で分割した境界線を跨ぐ形だと、それは大幅な仕様変更を要求される。
372仕様書無しさん:05/01/10 17:57:02
ここの文章を見ればわかるけど、ここに挙げられたすべてをソフトウェアの品質として採用する必要はなくて、必要に応じて取捨選択しろ、と。
保守性が重要になるなら、保守性もソフトウェアの品質として考慮せよ、と。
重要にならないなら、考慮する必要はなし、と。

>>369
それは、そのフリーウェアの分野のその機能のその規模のコードでの基準にしかならないよ。
373仕様書無しさん:05/01/10 20:14:20
>1の言う 質の高い...って
a.品質の高いソース
b.品質の高いソースを作るコーディング方法
で言うところの b. だろ?
b.の話はテストファースト以外に何かでた?サルサファースト?w
374仕様書無しさん:05/01/10 20:25:23
    |:::::::::::::::::::/ ̄ヽ::::::::::::::::::::::::::::::::::::::::::::::::::\
    |/ヽ:::::/      |:::::::::::::::::::::::::::::::::::::::::::::::::::::::\
    |   V       |:::::::::::::::::::::::::::::::::::/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ノ   l  ___ <, ---、::::::::::::::::::::| しょうがねぇな。
   ヾ=。'l`| cロ ュ   T   : 日|:::::::::::::::::::| お前等のコードをスカウターでテストしてやるよ
  ∠,「 ラ ヽ__√ ̄| : 日|:::::::::::::::<  相当質が高いはずだポチッ
  /::::|く、  _,、     `ー、‐'::::::::::::::::::::|  キロあたりのバグが・・10・・20・・30・・40・・50・・バ・・バカな!
∠-::::::::l、  ̄       //   \:::::::::::::::::::|  まだあがっていく!?
 /__ ,\    //     `ー--二\________
 / / / / ヽ-‐ /   __      // |  |  |
 | |  | l、  ̄ー' ̄ ̄ ̄____//  |  |  |
375仕様書無しさん:05/01/10 20:31:50
>キロあたり
グラムですか?
376仕様書無しさん:05/01/10 20:34:02
>>373
テストファーストに則ればまずaを議論すべきだな。
377仕様書無しさん:05/01/10 20:35:58
>373
ぺよんじゅんさまアプログラミングとか?
37869式フリーPG ◆hND3Lufios :05/01/10 20:38:08
保守性を問うなら読みやすさ、理解しやすさまでだね。
改造しやすさとなると、その要求次第になる。
379仕様書無しさん:05/01/10 21:23:39
>>375
印刷した紙の1kgあたりのバグだよ。
380仕様書無しさん:05/01/10 22:50:41
>>378
汎用性かシンプルデザインか、みたいな議論もあるぞ。
381仕様書無しさん:05/01/10 23:02:48
質が高いとは、バグが少ないことと、メンテナンスしやすいことだと
言い換えることができる
382仕様書無しさん:05/01/10 23:07:24
>>375
どう考えてもマ板ではkbだろ。
こういうボケの幼稚さからしても漏れはこの板の品質の低さほうが心配だよ。
383仕様書無しさん:05/01/10 23:07:30
勝手に言い換えると>>367あたりの立場がなくなってくるぞ。
384仕様書無しさん:05/01/10 23:08:33
>>382
釣りだろうがライン数だろ。
385仕様書無しさん:05/01/10 23:25:11
>ライン数

前時代の方でつね ライナー
386仕様書無しさん:05/01/10 23:34:11
ライン数なんて信じられんね。
ステップ数だろ。
387仕様書無しさん:05/01/10 23:36:01
まあ、質をどう定義したところで、質が高いプログラム書くやつの品質は高いし、質が低いプログラム書くやつの品質は低い。
388仕様書無しさん:05/01/10 23:42:40
で、質の高いプログラム書くには?
389仕様書無しさん:05/01/11 00:03:21
ちがうよ、質の高いコーディングのスレだよ。
例えば上質なコーヒーを嗜みながらとか。
390仕様書無しさん:05/01/11 00:06:21
あ、そういうことか。
マッサージイスで休憩を取りながら、コーディングを行うとか。
充分な睡眠は大事だぁね。
391仕様書無しさん:05/01/11 00:06:46
>>388
賢い親を持つ。
392仕様書無しさん:05/01/11 00:08:48
>389

だからサルサファーストだって一店のw
393仕様書無しさん:05/01/11 00:51:55
質の高い環境によって、質の高い仕事が生まれる
394仕様書無しさん:05/01/11 00:59:14
業務系じゃないことだけは確かだな。
395仕様書無しさん:05/01/11 01:07:56
>>393
つまり自分のせいじゃなく環境のせいだと
396仕様書無しさん:05/01/11 01:54:08
 快適な環境づくりは、安全、衛生、利便などの確保はもちろんとして、
さらに人々にやすらぎやうるおいを感じさせるような環境づくりである。
このようなより質の高い環境が形成されることにより人々はより一層
環境との触れ合いを深め、環境の恵み豊かなことを実感するであろう。
それは今後においても人々の共通の目標となり得るものである。
397仕様書無しさん:05/01/11 02:02:20
綺麗なお姉さんがいると、俄然やる気が増す。
398仕様書無しさん:05/01/11 02:04:22
>>397
ヤル気しか起きない癖に。
399仕様書無しさん:05/01/11 02:06:43
いえ、くどく勇気は無いので、愛想笑いと妄想レイプだけです。
400仕様書無しさん:05/01/11 02:17:02
コーディングに集中してるところに
「ねぇプログラミングなんて止めて、エッチしようよぉ」と
美人の先輩
後ろから手コキなんてどうだろうか?
401仕様書無しさん:05/01/11 02:21:55
>>400
妄想乙
402仕様書無しさん:05/01/11 02:26:03
いや机の下にもぐりこんでもらってフェ(ry
40369式フリーPG ◆hND3Lufios :05/01/11 02:41:07
中田(ry
404仕様書無しさん:05/01/11 03:00:16
>>403
ま た 、かよっ!
405仕様書無しさん:05/01/11 03:15:58
綺麗なお姉さんでやる気が増す
  ↓
やる気がヤル気に
  ↓
効率落ちる
  ↓
綺麗なお姉さんの手こきで解消
  ↓
効率あがる
  ↓
やる気がヤル気に
  ↓
繰り返し

マッチポンプか。
406仕様書無しさん:05/01/11 21:43:36
手コキの後は確実に効率落ちると思うが。
407仕様書無しさん:05/01/11 22:08:51
いきなり話を戻すと体調って大事だよな。
深夜にセックスした翌日の午前は確実に何も出来ない。
だから最近晩飯前にセックスしたりする。
お前等もやってみれ。翌日コーディングの質が全然違うぞ。
408仕様書無しさん:05/01/11 22:41:23
コーディングの質より、晩飯の質を確保したい。
409仕様書無しさん:05/01/11 23:00:23
低炭水化物ダイエットの心持ちで。
410仕様書無しさん:05/01/12 03:07:52
コーディングの際にはエラー原因を指摘するとともに推奨修正コードを表示し、
ワンクリックで自動的にコードを修正する機能や、「スニペット」と呼ばれる目的別の
入力支援機能などにより「極力自動化することで、品質の高いコーディングが可能になる」
411仕様書無しさん:05/01/12 03:57:40
のなら苦労はないねぇ。
412仕様書無しさん:05/01/12 10:33:38
プログラムするプログラム。
人類永遠の夢だな。
413仕様書無しさん:05/01/12 10:43:19
プログラムを作るプログラムにもバグがある訳で。
414仕様書無しさん:05/01/12 16:18:24
形式的記述からプログラムを自動作成したら、形式的記述どおりのプログラムは自動作成されていたけど、形式的記述自体にバグがあった、という話ですね。
415仕様書無しさん:05/01/12 19:10:49
>>414
分かりにくくなったぞ。
言うなら質が下がったぞ。
416仕様書無しさん:05/01/12 23:23:17
>>415
形式的記述を勉強してください。
417仕様書無しさん:05/01/12 23:59:08
>>416
形式的記述=プログラム と置き換えてしまうと、
形式的記述でないプログラムが含まれない事になる。

つまり不適切な拡張は価値を付加するどころか低下させるという典型例って事だ。
418仕様書無しさん:05/01/13 15:03:11
>>417
> 形式的記述=プログラム と置き換えてしまうと、
> 形式的記述でないプログラムが含まれない事になる。

形式的記述で全部書けばいいだけでは?
あとの文章につながってないような・・・
419仕様書無しさん:05/01/13 22:50:24
>>418
あとの文章の意図を分かりやすく言い換えると、
>>413>>414に言い換えたら文章の価値が下がった」
ってこと。そうなると、

>形式的記述で全部書けばいいだけでは?
というアプローチは文章の責任を緩和しただけで、
文章の価値を高める提案ではない。
420仕様書無しさん:05/01/14 00:27:57
>>419
ということは、つまり、417はもともと意味の通りにくい文章だったと。
421仕様書無しさん:05/01/14 23:00:30
>>420
通常は容易に推測可能で特に問題無い文章だと思われます。
ただし>>418は論理的でなく、>>417を攻撃とみなして、反撃に出ようという意図が感じられたので、
直接的で紛れの無い表現に切り替えることで、こちらも体勢を整えたわけです。
422仕様書無しさん:05/01/15 00:05:44
>>421
仮想敵を脳内で構築した、と。
423仕様書無しさん:05/01/17 20:44:34
デザインパターンとかは?
424仕様書無しさん:05/01/17 22:47:33
後で[パターン]に直す事はあるが、最初から[パターン]にしようとして作ってはダメだ
本末転倒
425仕様書無しさん:05/01/17 23:07:40
オブジェクト指向ちゃんとやれば品質高いっぽいですね。
426仕様書無しさん:05/01/17 23:25:48
>>424
最初からデザインパターンを使ってできるものは、最初からパターンにしろ。
それこそ本末転倒。

>>423
デザインパターンは、それを使ったからといってコードの質が高くなるもんでもない。
意味なく使えば、わけわからなくなって質が悪くだけだ。

>>425
オブジェクト指向は、「ちゃんと」やったり「ちゃんと」やらなかったりするもんじゃないし。
オブジェクト指向に属する方法論というなら話は別だろうけど。
そもそもオブジェクト指向は「やる」もんじゃないよ。
それと、オブジェクト指向も必要ないところで使えば複雑にするだけ。

「ちゃんとやれば」という話であれば、質が高くやるようにすることを「ちゃんとやる」というんだろうから、それもまた意味のない話で。
427仕様書無しさん:05/01/17 23:37:17
デザインパターンは、変な強迫観念を植え付けることがあるから嫌いだなぁ。
品質をあげる方策として話すのはね。
オブジェクトを一つしか作ることがないからといって、いつでもそれを保証する必要があるわけじゃないのに、シングルトンにしないといけないというような。
428仕様書無しさん:05/01/17 23:52:48
デザインパターンは、設計のライブラリみたいなもんで、これがやりたければこういう設計にしろっていうパターンのカタログだぞ。
API使ったら質が上がるわけじゃないように、デザインパターン使ったら質が上がるわけじゃない。
429仕様書無しさん:05/01/18 00:29:32
「将来こういう風に使われる可能性があるからこう作っておく」
の将来が、10年先なら無理にデザインパターンを適用する必要は無い。
1年先なら…、納期や手間を考えて、余裕があるならすべきだな。
430仕様書無しさん:05/01/18 00:36:15
>>427>>429は本質的に理解してないような・・・
431仕様書無しさん:05/01/18 01:01:06

その本質を提示できない>>430も本質を理解できていない。
432仕様書無しさん:05/01/18 02:57:22
>>429
今要らないなら、要らない。
433仕様書無しさん:05/01/18 22:45:25
YAGNIか。
434仕様書無しさん:05/01/18 23:08:12
YAGNIはYAGNIで変に誤解して、設計はあとまわしにすることだと思うやつがいるからなぁ。
>>424みたいに。
435仕様書無しさん:05/01/18 23:34:31
パターンが冗長なら使わないのがYAGNIでしょ。
>>434はパターン使えば設計OKみたいな思想なの?
436仕様書無しさん:05/01/19 00:09:32
>>435
なんでそうつながるかわからんのだが。
パターン使えば設計OKだとは思わないが、パターンを使う設計はOKだと思う。

>>424は、最初からパターン使ってもだめだと書いてる。少なくとも、そう読める。
冗長なら使わない、を、冗長じゃなくても使わない、後回し、みたいな感じにとってるように思える。
437仕様書無しさん:05/01/19 00:27:17
つーかよ、ここの実装をどうするればいいかな〜とか考えたら
自然とデザインパターンと同様のパターンになったりするだろ?

そこまでたどり着かないなら、もともとデザインパターン適用するほどの
問題を含んでない処理だったり、実装者が無能だったりするんだが。
438仕様書無しさん:05/01/19 02:18:35
基本的なパターン技術を学んだ人間にとって、新しい技術に適応するのは比較的容易
439仕様書無しさん:05/01/19 02:25:13
パターン
主流の技術が何度も何度も移り変わっていく中で、基本的な共通のデザイン
440仕様書無しさん:05/01/19 02:53:08
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 必要に迫られてからオブジェクトを作るパターンですな。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < それは、Virtual Proxyの一種ですね…
 (     )  (;゚Д゚)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
       ̄   =======  \

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 納期が迫ってからコーディングせよ、と。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < ソンナコト言ってないでしょ!!
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
       ̄   =======  \
441仕様書無しさん:05/01/19 10:52:59
>>436
日本語読解能力が無いんじゃね?
442仕様書無しさん:05/01/20 00:49:32
>>441
それでは、「最初から[パターン]にしようとして作ってはダメだ」という理由を説明してくださいな。
どうして最初からパターンにしようとして作っちゃダメなのか。
テンプレートパターンにすれば解決できるとわかっても、テンプレートパターンにしようとしてはダメなのか。
443仕様書無しさん:05/01/20 01:09:57
使えそうなデザインパターンを何でも使おうという誘惑に抵抗しなければ
ならない

たまに、2階建ての普通の住宅に立派なエスカレータを付けてしまうような
設計(もちろん比喩)を見かけることがある
「何故?」と聞くと「デザイン・パターンの本に載っていたので」
なんていう答えが返ってきたりする
444仕様書無しさん:05/01/20 02:35:28
>>443
別に、デザインパターンの用途通りに使う分には構わないんではないかと。
乱用がダメなのは、なんでも一緒。
445仕様書無しさん:05/01/25 15:00:59
アルゴリズム,文法,オブジェクト指向と理解していけば,ライブラリを利
用して,ある程度のオブジェクト指向プログラムは作れるようになります。
しかし「こういうアプリケーションを作る」と具体的に決めて,必要なコード
がサッと出てくるようになるには,やはり「経験」が必要です。

この経験を効率よく取得する方法が「デザインパターン」で,定番の解説書
である「オブジェクト指向における再利用のためのデザインパターン(著者
4人をthe Gang of Four,同書のことをGoF本と呼ぶことが多い)」の23の
パターンがよく知られています。同書は,ソースコードではなく設計や考え
方を再利用するためのもので,経験豊富なプログラマの設計がカタログ化
されています。

未経験の状態から闇雲にクラスを考えるのではなく,優れたデザインパターン
をお手本にすることで,多くの経験者から助言を得たのと同じ効果が得られます。
446仕様書無しさん:05/01/25 15:02:43
ソフトウェアテストは開発に比べて、地味で低いレベルのスキルだと思われています。
しかし開発力が高いエンジニアはテストも達者だ、というのも事実です。テストの
スキルは、地味な確認作業の積み重ねではなく、開発力を表す指標に他なりません。
「テスト道」を極めていくと、そもそもバグを作り込まない開発に近づいていくのです。
447仕様書無しさん
>>445
未経験の状態から闇雲にデザインパターンの利用を考えるのではなく,
優れたデザインパターンの利用をお手本にすることで,
多くの経験者から助言を得たのと同じ効果を得る必要があります。