30
Code Retreat

Coderetreat

Embed Size (px)

DESCRIPTION

What is _coderetreat_

Citation preview

Page 1: Coderetreat

Code Retreat

Page 2: Coderetreat

ソフトウエア職人だけでなくプロの開発者なら誰であれ生涯学習とスキルの継続的な改善を気にす

るべきだろう

Page 3: Coderetreat

成功するソフトウエア開発に必要なのは

幅広い技術力でありチームで開発に取り組むことだ

Page 4: Coderetreat

そして、その技術の実践が何よりも重要だ

Page 5: Coderetreat

残念ながら日々のワークフローと

技術力の効率的な習得を両立するのは難しい

Page 6: Coderetreat

一時的にであれ、技術力の習得に

専念できる環境を作るのがCodeRetreatsの目的だ

Page 7: Coderetreat

Code Retreat

Page 8: Coderetreat

このアイディアは繰り返し実施できるソフトウエア開発の基礎演習に丸 1日を費やすというものだ

Page 9: Coderetreat

Code Retreat

Page 10: Coderetreat

この演習では単純な課題 (ライフゲーム )に、複数のセッションを通じて

繰り返し取り組む

Page 11: Coderetreat

各セッションでは特定のソフトウエア開発と設計

の領域の学習を行う

Page 12: Coderetreat

例えば、ペアプログラミングや

TDDだ

Page 13: Coderetreat

ライフゲームは単純なたった 3つのルールで自動的に動く細胞の集まりで、理解しやすい一方、異なる開発手法やソフトウエア設計上のアイディアを探索するには好都合な題材だ

Page 14: Coderetreat

Code Retreat

Page 15: Coderetreat

Code Retreatsのアイディアは 2009年 1月の

Codemash カンファレンスで生まれ継続的な改善を経て世界中で実施されている。

Page 16: Coderetreat

Global Day of Coderetreat

というイベントが2011,12,3

に世界同時開催

Page 17: Coderetreat

プログラミング技術の習得という観点で

ひとつのスタンダードと言っても

過言ではありません

Page 18: Coderetreat

Code Retreat

Page 19: Coderetreat

演習に含まれるのは● シンプルな設計のための 4 つのルール● OO の原則 (SOLID)● 心からの TDD● 関数型プログラミング● 継続的リファクタリング● 悪い習慣を利用する : 手動テストかテスト無し● オブジェクト健康体操● ペアプログラミングとコミュニケーション● ピンポンペア

Page 20: Coderetreat

参考まで● シンプルな設計のための4つのルール

http://c2.com/cgi/wiki?XpSimplicityRules● OOの原則(SOLID)

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)● 心からのTDD

http://gojko.net/2009/08/02/tdd-as-if-you-meant-it-revisited/● 継続的リファクタリング

http://c2.com/cgi/wiki?RefactorMercilessly● オブジェクト健康体操

http://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/ObjectCalisthenics.pdf● ピンポンペア

http://c2.com/cgi/wiki?PairProgrammingPingPongPattern

Page 21: Coderetreat

シンプルな設計のための 4 つのルール

● PASS ALL TESTS● CLEAR, EXPRESSIVE, & CONSISTENT● DUPLICATES NO BEHAVIOR OR

CONFIGURATION● MINIMAL METHODS, CLASSES, &

MODULES

Page 22: Coderetreat

OO の原則 (SOLID)

● Single responsibility principle● Open/closed principle● Likov substitution principle● Interface segregation principle● Dependency inversion principle

Page 23: Coderetreat

Single responsibility principle

an object should have only a single

responsibility.

Page 24: Coderetreat

Open/closed principle

software entities … should be open for

extension, but closed for modification

Page 25: Coderetreat

Likov substitution principle

objects in a program should be replaceable with

instances of their subtypes without altering the

correctness of that program

Page 26: Coderetreat

Interface segregation principle

many client specific interfaces are better

than one general purpose interface

Page 27: Coderetreat

Dependency inversion principle

one should “Depend upon Abstractions. Do not depend

upon concretions.” Dependency injection is one method of following this principle.

Page 28: Coderetreat

オブジェクト健康体操● One level of indentation per method● Don't use the ELSE keyword● Wrap all primitives and Strings● First class collections● One dot per line● Don't abbreviate● Keep all entities small● No classes with more than two instance variables● No getters/setters/properties

Page 29: Coderetreat

Pair Programming Ping Pong Pattern

● A writes a new test and sees that it fails.● B implements the code needed to pass the

test.● B writes the next test and sees that it fails.● A implements the code needed to pass the

test.

Page 30: Coderetreat

提供

Global Day of Code Retreathttp://goo.gl/Cru1t