トップページtech
988コメント450KB

eXtreme Programming

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
12のプラクティスがありますが、
実際実用的と思われるのはTesting, Refactoringの2つだと。
Cording Standardsは常識と考えればね。

XP全般について語ってもいいですが、
むしろTesting, Refactoringの二つをメインに語りましょう。
Testingのテクニックなんざをね。

参考URL:
http://objectclub.esm.co.jp/eXtremeProgramming/
0290デフォルトの名無しさんNGNG
>>282
全クラスの全メソッドのテストを書く必要が無いのは同意。

>テスト作ってる時間の方が長くなっちゃうんだよ。
でもこれを理由にテストを却下するのは疑問。
テストを書くことで品質が上がるなら、実装よりも時間をかけても
問題ないと思う。

全クラスの全メソッドのテストを書く必要がないと思うのは、
いわゆる80-20の法則で、一部のメソッドへのテストを書くだけで
大きな効果があり、残りのメソッドのテストは効果が少ないと
思うから。

クラスメソッドと静的メソッドを分ける発想はなかったので、ちょっと
新鮮。どちらかというと、「ではクラスメソッドのテストはどのように
書くべきか」という方向で議論したほうが生産的かな?
0291デフォルトの名無しさんNGNG
テストを省略するのは単純なget/set系と
そのメソッドを呼んでいるメソッドのテストが
しっかりなされている場合かな。
で、上位のテストに失敗したら
あと付けで細かいテストを追加してく。

むしろ迷うのは異常系のテストをやるかどうか、
やる場合どこまでか、という所。
迷ったらやる。という方針にしてもなお迷ってしまう。
0292デフォルトの名無しさんNGNG
bimyou ni functional-programming thread de
hanashi ga deteta
0293デフォルトの名無しさんNGNG
age
0294デフォルトの名無しさんNGNG
グラフィックオブジェクトのテストなんかも書くの?
何度回転したらこういう座標になるはずだとか。
0295デフォルトの名無しさんNGNG
書かない理由は?
0296DelギコNGNG
        ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′  ̄ ̄( ゚Д゚)<  見た目テストをやればいいんでないの?
  UU ̄ ̄ U U  \____________

  その見た目テストコードを書くという事が重要デスデス
  それを人が見て確認する。

>書かない理由は?
書けますか?、、書いてみせて欲しいな。
難しいと思うのですが。
0297デフォルトの名無しさんNGNG
>書けますか?、、書いてみせて欲しいな。
>難しいと思うのですが。

え?
そのグラフィックオブジェクトって「座標」というメンバがいくつかと、
そのアクセッサと、rotate()みたいなメソッドがあるようなものでしょ?

だったら、一般的なパターンを2つくらいと、特異パターンをいくつか
書けばいいんでないの?

「グラフィックオブジェクト」といえばコレみたいな何かがあって、
俺がそれを知らなくて、激しくはずしてる?
0298DelギコNGNG
   ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜''~(,,゚Д゚) < あー。グラフィオブジェ=何らかの座標を持っている
  UU'UU    \のでしょうか。

 単に画面に描画処理だけを行なうものと思ってしまったのですが

 そうだとすると、見た目以外で
 テストが通るか通らないかを判断する手法はないかと
 思ったのですが…

 ドット(?)のOn/Offでやるにしても
 テスト書くのもその検証もちょっときつすぎるような。

 もちろんテストがかけないはずはないんですが
 目で見るテストというのも場面によってはアリかなと思うてます。
0299デフォルトの名無しさんNGNG
うーん、294さんに内容を聞かないとなんとも言えないけど、UnitTestしよう
というんだから、自作のクラスだろうし「回転」というメソッドと材料(メンバ)と
アクセッサがあれば、必ずなんらかの(正常パターンだけでも)テストが
書けると思うんだけど。

Directホゲホゲみたいなのを使ったものだと、確かに厳しいかもしれないね。
0300DelズサギコNGNG
今だ!300ゲットォォォォ!!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

 UnitTestとは言ってないと思われ。

 描画オブジェクトだとすると
 描画が正常かどうかをテストしないとテストの意味がなくないですか?

 どのようなテストを想定されてます?

 折れは、こういう場面では
 画面にぐるっと一回り文字を描画するテストを書こうと思います.
0301デフォルトの名無しさんNGNG
>UnitTestとは言ってないと思われ。

Σ(゚д゚lll)ガーン

> 描画オブジェクトだとすると
> 描画が正常かどうかをテストしないとテストの意味がなくないですか?

んと、「描画オブジェクト」が思い浮かばないのでパス。
0302DelギコNGNG
      ∧∧  /角度指定フィールドとDrawメソッドが存在するだけのクラスです
 @' ― (,,゚Д゚) < >描画オブジェクト
   し― し-J   \
  アッサリ パス カヨ・・・
0303デフォルトの名無しさんNGNG
リファクタリングの自動化ってできないの?
0304DelギコNGNG
    ∧ ∧   ┌────────────
   __(,, ゚Д゚)_< トリッキーな質問したアナタにはこれを贈呈
 / / づ /| └────────────
. | ̄ ̄ ̄ ̄|/   http://www.assiston.co.jp/item/0182_propellercap.html
           カブットケ
0305デフォルトの名無しさんNGNG
>リファクタリングの自動化ってできないの?

こんなのありますよ。
Martin Fowlerの本「リファクタリング」に載っているので知っている人、多いでしょうけど。

Refactoring Browser
ttp://chip.cs.uiuc.edu/users/brant/Refactory/

ただSmalltalk用っていうのがねー
0306デフォルトの名無しさんNGNG
GUI用テストフレームワークみたい
英語読めない馬鹿なので内容は判らなかった

Java FAQ (What's New)
ttp://www.nk-exa.co.jp/~andoh/java/javanew.htmlより引用

>[ TOOL ] mattcas, Swing ベースのアプリケーションのための Unit test tool [ JFCUnit 0.2.1 ] をリリース
>ttp://sourceforge.net/projects/jfcunit/
0307デフォルトの名無しさんNGNG
Haskellという有名な関数型プログラミング言語のテスト用ライブラリ

QuickCheck: An Automatic Testing Tool for Haskell
ttp://www.cs.chalmers.se/~rjmh/QuickCheck/

っていうのがあります。
テスト用のコードさえ書けば、型システムを使ってテスト用のデータが自動生成され関数の動作テストされます。
かっこいー
0308デフォルトの名無しさんNGNG
>>305
http://www.refactoring.com/
を見てたら
http://www.instantiations.com/jfactor/
http://www.intellij.com/idea/
というのがあるらしい。jFactorはJBuilderのプラグイン。
0309デフォルトの名無しさんNGNG
AssertRange(int value, int min, int max)
{
 Assert(min <= value && value <= max);
}

AssertRange2(int value, int min, int max)
{
 Assert(min <= value && value < max)
}

これらのテストメソッドの適切なメソッド名・引数名はどんなんでしょう?
0310デフォルトの名無しさんNGNG
IntInRange, IntInRange2 ???
0311デフォルトの名無しさんNGNG
>>309
それ、メソッドに分けずに直接ソースに assert() 埋め込んだ方が良いと思うが。
assert に引っかかったときに、AssertRange(), AssertRange2() のファイル名と
行番号が取得できても嬉しくないでしょ。
0312デフォルトの名無しさんNGNG
kent beck来日記念あげ
0313デフォルトの名無しさんNGNG
で、何かニュースはあったの?>>312
0314デフォルトの名無しさんNGNG
>>313

帝国ホテルで公演があって観にいった。
内容は、xpの紹介程度。
あとその日のXP-mlOFFにも出現したな。
OFF逝った人感想きぼーん
0315デフォルトの名無しさんNGNG
age
0316デフォルトの名無みさんNGNG
12のプラクティスで

>比喩(Metaphor)
>どの様に全体のシステムが機能するかを示すシンプルな喩え話(メタファー)を
>メンバーが共有することで全ての開発を導く(ガイドする)。

ってあるけど、喩え話ってのが今ひとつ意味分かんない…だれか教えてください。 (´_` )

例えば、ファイルを圧縮するソフトをXPで開発するとしたら、
どんなメタファーが考えられるのでしょうか?
0317デフォルトの名無しさんNGNG
>>316
XP-jp ML に丁度メタファについてのスレッドがあるよ
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/2400/2490.html
0318DelフサギコNGNG
  ∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < しつもーそ
  U  ミ   \____________
  ミ  ミ
 ノ∪∪

 12のプラクティスの箇条書きってどこかにありますか?
 
0319デフォルトの名無しさんNGNG
>>1 のリンクのFAQってトコにあるはず
0320DelフサギコNGNG
  ∧,,∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡 < ありがとございます。
  ,;゙  ミ     \_____________
 ミ.  ミ
/゛゛゛゛

もひとつシツモソ
オンサイト顧客のオンサイトってどういう意味ですか?
0321Error401NGNG
>>319
お、そのFAQの下の方を見ると、

白XP本(既刊)
ピンクXP本(既刊)
緑XP本(既刊)

の後に、

オレンジXP本
水色XP本
黄緑XP本
紫XP本

の4冊が翻訳中ですね。
誰が翻訳してるんだろう?(あの人はヤだな)
0322Error401NGNG
>>320
オンサイトって十分日本語化してると思うんだけど、そうでもないのかな?
「開発現場の(にいる)顧客」
というような意味。
0323Error401NGNG
ふと思いついて、本家XPサイトに行ったら、リニューアルされてて
Toppageがいやにスッキリしてた。

で、面白そうなもの発見(今まで気づいてなかっただけか?)。

XP Magazine
http://www.xprogramming.com/xpmag/index.htm

翻訳するのめんどいから、誰か訳してくれないかなぁ(ヘタレ)。
0324DelフサギコNGNG
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< いまさら、超ガイシュツかもしれませんが
  ミつ つ  \ 白本の誤訳みたいのを
〜ミ ,, ミ.    修正している所ってどこでしたっけ
  ∪∪   ピンクはリンク先にあるようですが。

改めて白本を読みましたが
技術書籍の翻訳としては
叩かれるほど変でもないような気はしました。

むしろ、日本ジンが書いた日本語なのに読みにくい
技術解説の方がよっぽど嫌かも。
0325Error401NGNG
>>324
それもリンクされてるよ。

Essential EC Kent Beck の Embrace Change 本関連
EC 本要約 essential-ec.html (by ホソカワ, 矢崎, 上手, 佃, やまの)
EC 本,邦訳(XP エクストリームプログラミング入門)へのコメントec-errata.txt (by 小野 剛)

ってとこ。
0326DelフサギコNGNG
____∧ ∧_ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___ミ,,゚Д゚ミ< どーもー。>>325さん、サンクスコ
__ ミ ⊃ つ  \______________
_〜ミ,, ,,〃
_ ∪ ∪
0327DelフサギコNGNG
XPに出てくる4つの変数のスコープって何ですか?

   ∧∧  ↓こいつは赤外線スコープ?
   ミ,, ゚Д⊆0___,,
   ミ⊃二O,---' ̄ ̄
   ミ   ミ
   .∪∪
0328DelフサギコNGNG
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/0/85.html

スコープ ー (そのスコープが顧客の問題を解決しているのであれば)控えめのスコー
プは質の向上に繋がります。それから、納期を前倒しすること、または、安く納品す
ることができます。

ソフトウェア開発で一番意識していなければならないのが、スコープです。スコープ
を積極的に管理できれば、マネージャーや顧客にコスト、質と時間を管理させられま
す。

スコープの凄いところは、しばしば変化するという点です。要件が最初から明確になっ
ていることなど一度もありません。顧客は何がほしいか一度も正確に言えたためしが
ありません。

   ∧,,∧  ゼンゼン ワカラン
   ミ゚Д゚,,⊆0___,,
   ミ⊃二O,---' ̄ ̄
   ミ   ミ
   .∪∪ 赤外線スコープは夜でも見えるんだぞ(多分)
       オサマもイチコロ。
0329DelフサギコNGNG
http://objectclub.esm.co.jp/ml-arch/extremeprogramming-jp/2200/2206.html
> > の第 4 章で「スコープ」という用語が出てくるのですが、意味がわかりません。
> >  scope を英和辞典で引いてみると「(知力・研究・活動などの及ぶ)範囲、視野」
> > とありますが、そういう意味でいいのでしょうか。

> これは,「XP エクストリーム・プログラミング入門」を読んでだ
> れもが疑問に思うことだと思います.私も最初分かりませんでし
> た.

> スコープ: リリースに盛り込む機能の範囲.何を今回のリリースに
> 含めて,何を後回しにするか,ということ.XP では,プロジェク
> トを管理する4つの変数として,コスト,時間,品質,スコープを
> 挙げており,中でもスコープをコントロールしてプロジェクトを「運
> 転(steer)」すべきだ,と言っています.

  ∧,,∧     /
 ミ,,゚Д゚彡  < だってさ。参ったね。
  U  U    \
〜ミ  ミ
  ∪∪
0330デフォルトの名無しさんNGNG
>>328
どこまでやるかっていう範囲のことだよ。
0331デフォルトの名無しさんNGNG
そうそう、このプロジェクト(またはリリース)では何を実現するか、もしくは
何を実現しないか、っていうこと。

ほんとはこれが決まっていないと納期も金額も決められないはずなのだが、
いいかげんなまま見切り発車するプロジェクトが多い。
0332デフォルトの名無しさんNGNG
age
0333デフォルトの名無しさんNGNG
sage
0334デフォルトの名無しさんNGNG
>>331
最初に正確に分かるはずがないから、
少しずつ修正しながら進めよう、ってのがXPでわ。

客が欲しいタスクをイハ°イ書く
→プログラマ達がそれぞれのタスク作成にかかる期間を見積もる
→客が、どのタスクから作るか決める

次のリリースまでに欲しいものが全部入らないとき、
どれを入れるかは客が決める。

最終期限までに入らないとき、機能を削るのか期間を
延ばす(もっと金をかける)のかは客が決める。

良くある「安くしろ、機能は削るな、納期は延ばすな」という
不毛なやり取りはなくなる…はずだが、こういう金の出し方
をできる客が日本にどのくらいいるかは不明。
0335DelフサギコNGNG

   ∧∧   /どのくらいの企業が
〜''ミ ゚Д゚ミ <  XP採用や採用検討しているのでしょうね。
"UU'UU"    \
0336デフォルトの名無しさんNGNG
こういう先進的な技法を率先して取り入れる力のある
ソフトハウスってSRAくらいしか思いつかん。
0337デフォルトの名無しさんNGNG
SRAってソフトハウスだったのか。
0338デフォルトの名無しさんNGNG
XPを導入する上で一番のネックは実は案件の受発注のやり取りじゃないか?
日本じゃ何が何でも最初に金額と納期を決めようとするが、そのくせ要件定義で
出た話と金額が見合うかどうかなんて殆ど考慮されてない。
最近やった仕事でその辺を痛感したんで、その辺の問題意識をもってる営業さん
と共同戦線を張ろうと画策中。
0339デフォルトの名無しさんNGNG
激同。
On-site customerと並んでネックだね。

まずは社内開発プロジェクトから始めてみるのかなあ。
0340DelフサギコNGNG
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < お客さんの実行する機能テストというのは
⊂,,,,,,,,,つつ.   \どういうものをさすのですか?
0341デフォルトの名無しさんNGNG
>>340
例えば「この入力を与えたら、こういう帳票が出力されないと困る」
というのを顧客が(ワープロやエクセルで)数値まできちんと書いて、
それをチェックするテストはプログラマが書く。
0342DelフサギコNGNG
>>341サンクスコ
 なんかイメージ湧きませんが
 客もテスト作って、すぐリリースされたものを使えや(゚Д゚)ゴルァ
 ってところでしょうか。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    ベンキョウベンキョウ
  ミ,, ゚Д゚彡
   〃つl⌒|⌒l
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
 もっとXPの話題でてこないかな。
0343デフォルトの名無しさんNGNG
>>342
テストケースを作るのはオンサイト・カスタマー
つまり、プログラマ・チームといつも一緒にいて
指示を出してる顧客だよ。ユーザはまた別。
0344DelフサギコNGNG
 ∩∧,,∧∩  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ゙ミ,,゚Д゚彡ノ < スラッシュドットage
  ミ  ミ   \____________
  ミ ,, ミ
 ノ∪ ∪

http://slashdot.jp/article.pl?sid=01/10/29/1719222
0345デフォルトの名無しさんNGNG
ファシリティというのは
日本語訳すると何?
0346デフォルトの名無しさんNGNG
>>345 Facility 辞書で引いてみよう。
0347デフォルトの名無しさんNGNG
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=Facility&sw=0
まぎらわしいな。
0348 NGNG
>>345

オフィスレイアウト、座席配置ってことだと思う。
個人の席を隅、ペアプログラミング用の席を部屋の真中に置いて、
みんなで共同で使うと良いらしい。

うち会社、席が広いのは嬉しいんだけど、
パーティションで区切られてて、人がまばらに居る感じ。
孤独で寂しいし、ペアプログラミングしにくい…。
0349デフォルトの名無しさんNGNG
>>347のリンク先を見ると
設備, 施設という訳が正解みたいだね。

ところで、
継続した結合のインフラが重要と本に書かれてあるのだけど

継続した結合の為のインフラというのはどういうものがありますか?
WinDiffやVSSを思い浮かべますがそういうもののことですか?
0350デフォルトの名無しさんNGNG
>>349
俺の意見。

・いつでもクリーンビルド出来るマシン(高速のものが良い)
・バージョン管理ソフト(CVSがおすすめ)
・自動インテグレーションの仕組み(オプション)

かな。
0351デフォルトの名無しさんNGNG
>>350レスありがとう。

>・いつでもクリーンビルド出来るマシン(高速のものが良い)
クリーンビルドって何?

>・バージョン管理ソフト(CVSがおすすめ)
これはわかるが

>・自動インテグレーションの仕組み(オプション)
自動インテグレって?
0352デフォルトの名無しさんNGNG
>>クリーンビルドって何?

すべてのソースをコンパイル、リンクすることでしょう。大規模な
システムでは高速なマシンでないとやってられませんな。

>自動インテグレって?

最新ソースを落として、ビルドを実行し、できればすべてのテストを
実行してその結果を報告するまでを行う。
0353デフォルトの名無しさんNGNG
タバコが嫌いなので
喫煙所パターンXPとか言ってる輩は殺していいですか?
0354デフォルトの名無しさんNGNG
>>353
喫煙もエゴですが、嫌煙もまたエゴです。
殺すときはあなたももろともに。
0355デフォルトの名無しさんNGNG
分煙のためにプロジェクトを分けてください
0356デフォルトの名無しさんNGNG
嫌煙の方がまだましでは?
0357デフォルトの名無しさんNGNG
>>356
50歩100歩の50歩の方だな。目くそ鼻くその目くその方かな。
0358デフォルトの名無しさんNGNG
目くその方が上か・・・
0359デフォルトの名無しさんNGNG
VC5.0でCppUnit1.5使えてる人います?
今度のプロジェクトはVC5.0を使うことになってしまった。
ちょっと試したんだけど、謎のRuntimeErrorが・・・(泣

使えてるとか、使えないよ、というレベルで良いので、情報が
あったらお願いします。
0360デフォルトの名無しさんNGNG
海老捨て目に聞けば?
0361吾輩は名無しさんであるNGNG
>>359
同志よ。吾輩も使えておらぬ。
いまさらVC6買うのもアレであるし、
気長にVS.NETとサービスパックを待とうぞ。
0362359NGNG
>>361
うう、そうですか。
VC6はあるんですが(仕事なんで)、今回はVC5.0指定なんです。

今まで、JUnit, RubyUnit, PHPUnit, JSUnitを使ってきて、
VCもそのときインストールしていたVC6でcppunit(CppUnitじゃ
ないほう)を試して、「今回のプロジェクトもxUnitは楽勝でしょう」
なんて言っちゃったんですよ。

CUIのほうだったら使えるのかな。来週試してみよう。

エピス氏に聞いてみようかな・・・。
0363デフォルトの名無しさんNGNG
ケントべっ君は本の中で
クライスラーC三のシステムが、ああでこうでこうなっているよ

と度々おっしゃっていらっしゃいますが

そのクライスラーというのは
どの程度の規模の会社で

C3というのは
どのくらい重要度の高いシステムなのでしょうか。

XPを上司に紹介する時に、
クライスラというネームバリューがあったら
XPの実践を説得しやすいかと思いますので

具体的にどのくらいでかいんだぞ。と
枝葉末端に至るまで偉大さを分からせてくださるような
情報キボンヌ。
0364中身を読まずにカキコNGNG
Extreme Programming / Chrysler C3 Payroll article from the October 1998 issue.
http://www.xprogramming.com/publications/dc9810cs.pdf
0365デフォルトの名無しさんNGNG
Chryslerは今はDaimlerChryslerになってるね。
サイト見てみると従業員は 416,501人(2000年末時点) か。でかい…
0366推測NGNG
>>361, 362
VC5.0 は template をまともに使えません。
CppUnit は template を使います。たぶん
VC5.0 では CppUnit をコンパイルするだけ
でエラーになると推測します。
0367デフォルトの名無しさんNGNG
ていうかクライスラーってやっぱ、あのクライスラーだよな・・・
0368デフォルトの名無しさんNGNG
Java で Input/OutputStream を
継承した解凍/圧縮ストリームの
ユニットテスト書きたいんですけど

 ExpandInputStream(InputStream in) extends InputStream {
  read() で解凍された1byte読み出し
 }

 CompressOutputStream(OutputStream out) extends OutputStream {
  write() で1byteを圧縮して書き込み
 }

みたいなストリームって
どうやってテストしたら良いんでしょ…
0369デフォルトの名無しさんNGNG
>>368
まず圧縮して解凍して問題なければもんぢあなし
0370デフォルトの名無しさんNGNG
>>369
やっぱ そーゆーテストの方法しかないっすよね…
0371デフォルトの名無しさんNGNG
手動で圧縮済みデータ作って比較。
0372368NGNG
>>371
手動で圧縮済みデータ作るの大変そうだなぁ…
はっ 良く考えたら手動で作った圧縮済みデータの
正当性検査はどーしたら?

それは良いとして、 それ以外のチェックって
ストリームの補助機能のチェック
ぐらいしか思いつかんのですけど、
read(int data) で data が 256以上でもちゃんと処理されるとか
mark() / reset() のサポート/非サポートが 仕様どうりかとか
available() の戻り値はOKかとか
それ以外ってチェック項目ありますかねぇ…
0373デフォルトの名無しさんNGNG
>>372
Javaは知らんが、圧縮をどうやってやるのかによる。
自前のロジックを組むなら、圧縮されたデータの正当性の検査は出来ると思う。
既存のライブラリを使うなら、圧縮済みデータを作ることは容易だと思うけど。
0374デフォルトの名無しさんNGNG
>>372
>それ以外ってチェック項目ありますかねぇ…

自分が実装しようとする(あるいはしたもの)についてテストすれば良い。
異常データのときに、ちゃんと異常処理されるか、
期待した例外がちゃんとthrowされるか、とか。
0375DelフサギコNGNG
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< 解凍ツールで解凍したら・・・
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪∪   って独自の圧縮形式だったらダメだけど...

 圧縮/解凍して元のデータとの整合性を
 チェックすればいいだけでは?
0376デフォルトの名無しさんNGNG
圧縮プログラムなんて、圧縮後のサイズが元より小さくて、圧縮したデータを正しく復元できれば、多少間違ってても要件を満たしてると思うなり。。。
0377デフォルトの名無しさんNGNG
圧縮/伸張処理自体も自分で書いてるものなら、いろんなパターンの
データを食わせてきちんと復元できることを確認しないといかんね…
同じバイトばっかり並んだやつや、欧文、日本語文テキスト、exeファイル、
乱数列、とか。

元が小さい場合、ヘッダ付加の分サイズが膨らむこともよくあるから
常に小さいかどうかってのはアレだが。
0378デフォルトの名無しさんNGNG
ロジックが十分複雑な場合、圧縮解凍して元に戻ればよい
というのはブラックボックステストであって
ユニットテストではない。

ExpandInputStream/CompressOutputStream内部で呼んでいる
メソッドについてテストを書くことを検討してみたら。
テストを書くのが簡単になってその上デバッグが楽になるよ。
0379デフォルトの名無しさんNGNG
結局、誰が翻訳者としてよくて
誰が翻訳者としてダメなわけですか?

ピンク色の本は翻訳はよくても冗長で分厚くなってしまっているのでは?
0380デフォルトの名無しさんNGNG
>>376
>圧縮プログラムなんて、圧縮後のサイズが元より小さくて、圧縮したデータを正しく復元
> できれば、多少間違ってても要件を満たしてると思うなり。。。

圧縮済ファイルをもう一度圧縮するとサイズがでかくなるよ
0381デフォルトの名無しさんNGNG
>>380
たとえば、lhaとかは圧縮結果をまた圧縮して
これ以上小さくならないところまで圧縮を繰り返す
なんて聞いたことがあるんだけど、ホント?
そういうアルゴリズムなら再圧縮しても大きくならない
ような気もするけど、圧縮ロジックの中での再試じゃないから
やっぱりヘッダなりなんなりが付加されて大きくなるかな?
元ファイルがこれからしようとしてる圧縮形式と同じもので
かつ圧縮後もやっぱりちいさくならないようなら
圧縮しない(もしくはしたフリ)でファイルに手を加えない
ってロジックは欲しいかもね
0382名無しさん@EmacsNGNG
>>380
おなじアルゴリズムで2回圧縮したらどうしたって1回目より大きくなっちゃうんじゃないの?
0383359NGNG
VC5でcppunitが使えました!

cppunit-xという奴です。
http://member.nifty.ne.jp/glad/cpp/test/

ただし、USE_LEAK_CHECKERを有効にすると、コンパイルできません。
(oeprator deleteの引数の数が違うと怒られる)

「eXtreme Programming テスト技法」
http://www.shoeisha.com/book/detail.asp?bid=1304
という本が発売されていて、その中でcppunit-xも紹介されているそうです。
(でも、この本、長瀬氏監修なんだよな・・・)

この本は、まだ買ってないので、評価は出来ません。
0384368NGNG
自分が質問したような「変換用ストリームの検査方法」の「確
立した検査方法」とかあるのかな?とか思って質問したんです
けど、やっぱり正攻法でやるしかないみたいですね…
Base64OutputStream とか作ってる人いるみたいだし、
そーゆのあるのかなぁ…とか思ったんですけど。

>>381
>>これ以上小さくならないところまで圧縮を繰り返す
ってのは違います。LHAは名前のとうり LZ77 圧縮した結果を
Huffmanで圧縮して終わりです。
個人的な経験では圧縮2回目は圧縮率9?%で圧縮できます。
でもこの圧縮率はヘッダの大きさ含んでないので書庫サイズ全
体としては1回目の圧縮後より大きくなってる可能性もありま
す。もちろん圧縮失敗する可能性もあり、その場合は「圧縮前
より大きくなる」のでなく無圧縮で格納しなおします。その場
合は確実にヘッダ分だけ書庫サイズは増加します。

普通は解凍に手間と時間がかかるだけで、意味が無いので二重
圧縮は嫌われます。たしか bzip2 だったかは二重圧縮に比較
的強いと聞きましたが自分は試したことが無いので、どの程度
「強い」のかは知りません。
0385デフォルトの名無しさんNGNG
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview05.html
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview06.html
この二人のどっちがいいのかな。
0386DelフサギコNGNG
   ∧,,∧∩   あらためてDUnitのこと効いてもいいですか?
  ミ,,゚Д゚彡 < そもそも、Unitテストの使い方がサパリわからないですー
   U  ミ    猫でもわかるUnitテストを教えてキボーン
 @ミ  ミ
   ∪ ∪
DUnitは二つあるみたいです...

DUNIT Am Xtreme testing framework for Delphi programs
http://dunit.sourceforge.net/
DUnit - Delphi Testing Framework
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/index.htm
0387デフォルトの名無しさんNGNG
下のほうは日本語のチュートリアルついてんじゃん...
それ読め
0388デフォルトの名無しさんNGNG
>>386
>>383 の本を読んでみたら?
0389Delphiを知らずにカキコNGNG
>>386
その二つのHPをちらっと見たところ、前者がxUnitのDelphiバージョン、
後者はUnitTestingの精神にのっとった、独自バージョンつー感じがした。
(ダウンロードして試したわけじゃ無いので違うかも。つーか、Delphi知らんし(藁)

まずやるなら、前者の方がいいかも。xprogramming.comでもpreferredに
なってるし。

いちおう、こんなページも見つけた。
http://www.toymap.net/fightingpg/fighting.htm

しかし、GoogleでDelphi&DUnitで<b>約17件</b>とは・・・。
0390DelフサギコNGNG
>>387さん キビシイですな...

>>388さん
[XP-jp:02767]でさりげなく無視されてたり

>>389さん
xUnitもよくわかなのですが、なんとかやってみます。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧    サンクスコ
  ミ,, ゚Д゚彡
   〃  つ旦~~
 〜ミ,,,n,,n[ ̄ ̄ ̄.]
        ̄ ̄ ̄
■ このスレッドは過去ログ倉庫に格納されています