mixi-inc / RubyTraining

Ruby training course for new employees
https://github.com/mixi-inc/RubyTraining
131 stars 32 forks source link

実習前の基礎的な講義資料 #6

Closed luckypool closed 10 years ago

luckypool commented 10 years ago

luckypool commented 10 years ago

とりあえず markdown でまとめる。 内容によっては reveal.js で書いて gh-pages ブランチに push する。

junsumida commented 10 years ago

良いですね! :smirk:

junsumida commented 10 years ago

@luckypool さん、 そもそも論なんですが、テストとはなんぞやとか、spec系のテストの特徴とか触れた方が良いんですかね?

luckypool commented 10 years ago

こんな感じの内容を触れるといいのかも?

junsumida commented 10 years ago

↑読んでみましたが、良いですね! :horse_racing: 「わかんない人は読んでね!キラッ☆」的な感じでいきましょうか。笑

junsumida commented 10 years ago

RSpecの話にpendingとかxitを追加してほしいです! :baby:

rnakano commented 10 years ago

TDDそのものの研修はないみたいなんで、テストとは!みたいな説明あったほうがいいかもですね :snail:

luckypool commented 10 years ago

RSpecの話にpendingとかxitを追加してほしいです! :baby:

okす!

TDDそのものの研修はないみたいなんで、テストとは!みたいな説明あったほうがいいかもですね :snail:

そういえばTDDっぽい研修はないですね/(^o^)\ 触れましょう!

junsumida commented 10 years ago

bundlerとかGemfileの説明が必要でした \(^o^)/

luckypool commented 10 years ago

bundlerとかGemfileの説明が必要でした \(^o^)/

そうでしたね/(^o^)\

チェックボックスは追加しましたmm

junsumida commented 10 years ago

:+1:

luckypool commented 10 years ago

開発環境の確認とRubyの復習的なものをスライドにしたった

rnakano commented 10 years ago

:+1:

luckypool commented 10 years ago

引き続き、本日も淡々と作っていきますmm

junsumida commented 10 years ago

:+1:

luckypool commented 10 years ago
junsumida commented 10 years ago

いいですね! :+1:

rnakano commented 10 years ago

ディレクトリ分けるのはいいと思います。 hard/app.rb はテキトーに切ったので、後でディレクトリ構成を整理したいですね :snail:

luckypool commented 10 years ago

http://junsumida.github.io/mosscow/slides

rspecの話をもりもりしすぎたけど、書いたから追加したった :cyclone:

@junsumida さん

59 で Rackの話がもうあると聞いて :eyes:

なんかまとまってる markdown 的なものがあればmergeするので教えてくだしあー

rnakano commented 10 years ago

rspecに手を動かす演習が入ってるのはとても良いと思います :clap:

プロダクトコードの前に先ずテストコードを書き、失敗することを確認する テストに成功するようプロダクトコードを書く テストに失敗しないようリファクタリング

この説明と実習でやるTDDが一致してないのが気になりました。(リファクタリングしてない) あと、この段階の Calculator クラスの実装は以下になるはず。

class Calculator
  def add(a,b)
    5
  end
end

TDDの講義じゃないから細かいことはスルー!っていうならスルーしてください :snail:

junsumida commented 10 years ago

@luckypool さん、特にまだ #59 は手をつけてなかったですー :ghost:

luckypool commented 10 years ago

@rnakano さん、あざます!! そういえばリファクタリングしてなかったすね。取り入れます :+1:

@junsumida さん、了解です :+1: 淡い期待でした :ghost:

luckypool commented 10 years ago

http://junsumida.github.io/mosscow/slides

スライド更新

rnakano commented 10 years ago

いやらしい指摘をします :smiling_imp:

return 5return a + b へ書き換えるのはリファクタリングじゃないと思います。

return 5 は十分きれいなのでリファクタリングする必要はないです :snail: この段階で次にすべきなのはテストを追加して一度Redにすることで、例えば以下みたいなテストを追加して:

describe Calculator do
  let(:calc) { Calculator.new }
  describe "#add" do
    context "when arguments 2 and 3" do
      it { expect(calc.add(2,3)).to eq 5 }
    end

    context "when arguments 1 and 2" do
      it { expect(calc.add(1,2)).to eq 3 }
    end
  end
end

Green にするために実装して:

class Calculator
  def add(a, b)
    return 5 if a == 2 and b == 3
    return 3 if a == 1 and b == 2
  end
end

リファクタリングする:

class Calculator
  def add(a, b)
    a + b
  end
end

という流れなんじゃないかなと思いました。(この例だと冗長ですが

luckypool commented 10 years ago

確かにいやらしい :smirk:

add は比較的シンプルな機能のメソッドなので、 リファクタリングとなると、冗長になっちゃいますね :confused:

ちょっと良い例を考えてみます :neckbeard:

luckypool commented 10 years ago

よさ気なの見つけた。これっぽくしてみる :smiley:

junsumida commented 10 years ago

良いですね! :+1:

luckypool commented 10 years ago

http://junsumida.github.io/mosscow/slides/#/7

TDDのチュートリアルを手厚くしてみた e60a484fdd712ace1b9bafd41b572f79d7343dcb

rnakano commented 10 years ago

この図が見たかったんです!! http://junsumida.github.io/mosscow/slides/#/7/5

:100: :100: :100:

junsumida commented 10 years ago

わろたww

luckypool commented 10 years ago

http://junsumida.github.io/mosscow/slides

ひと通りスライドにした(細かい修正や、午後の問題の導入的なものは別途必要)

ということでクローズしちゃう!

junsumida commented 10 years ago

ActiveRecordとRackが結構な量になってるww すごい :+1: