memo.txt

教えていただいたこと、勉強したことのメモです。

ユーザーストーリーを教えてもらった

https://twitter.com/kyon_mm/status/382731092492423168

テスト設計コンテストの課題(http://aster.or.jp/business/contest/testbase.html)を使って教えてもらいました。

わかったこと

Who What Whyで書く

自動販売機の利用者がジュースを買う。ジュースが飲みたいからだ。

Whoには製品に対する立場を書く

× 20代女性
○ 自動販売機の利用者

Whyにはユーザーに提供できる価値を書く

× のどが渇いているからだ
○ ジュースが飲みたいからだ

初めWhoがWhatをした背景=Whyだと思っていました。
例がわかりにくくてつらい。

INVEST原則を守る

  • Independent
  • Negotiable
  • Valuable
  • Estimable
  • Sized right
  • Testable

受け入れ基準のいろいろ

  • 受け入れ基準にメインパスとサブパスを2つ以上書けないときはストーリーを見直す
  • 受け入れ基準でWhat・Whyを満たせないときは見直す
  • 受け入れ基準が多すぎるときはストーリーの分割を検討する
  • 受け入れ基準には優先度の高いものから書く

難しいと思ったこと

付加価値のようなものに対するWhy

(ジュースを買うともう1本当たるかの抽選が行われる自動販売機)
× 自動販売機の利用者がこの自動販売機を選ぶ。抽選に参加したいからだ。
○ 自動販売機の利用者がジュースを買って抽選を実行する。わくわくしたいからだ。

抽選機能が他との差別化を図るための付加価値というのは理解していましたが、それをどう書けばいいかわからず困っていました。
「わくわくしたいからだ」は聞けばわかりますが、自分で思いつくのは難しそうです。

書いたものを残しておく

続きを読む

クラスとは

新しい型を作るための仕組み

なぜクラスを作るのか?

  • 新しい型を作りたい
  • わかりやすい
  • まちがいにくい

「なんでも用意された型で書くのではなく、より適切な型を作りましょう。」

より適切な型を作る

  1. 制限することによって得られる力
  2. 組み合わせることによって得られる力

がある。

たとえば

「年齢に負の数は入れてほしくない」
→intでは不十分
→Age型(=Ageクラス)を作って使えばいいじゃない

class Age
{
    read only int value;
    public Age(int age)
    {
        if(age < 0) throw new Exception();
        this.value = age;
    }
    ...
}

今までどう思ってたかをうまく説明できませんが、私が知ってるのと違う感がすごかったです。
急いで考えを改めて慣れなければ。