Upload
yamane-toshiaki
View
1.299
Download
3
Embed Size (px)
DESCRIPTION
What is _coderetreat_
Citation preview
Code Retreat
ソフトウエア職人だけでなくプロの開発者なら誰であれ生涯学習とスキルの継続的な改善を気にす
るべきだろう
成功するソフトウエア開発に必要なのは
幅広い技術力でありチームで開発に取り組むことだ
そして、その技術の実践が何よりも重要だ
残念ながら日々のワークフローと
技術力の効率的な習得を両立するのは難しい
一時的にであれ、技術力の習得に
専念できる環境を作るのがCodeRetreatsの目的だ
Code Retreat
このアイディアは繰り返し実施できるソフトウエア開発の基礎演習に丸 1日を費やすというものだ
Code Retreat
この演習では単純な課題 (ライフゲーム )に、複数のセッションを通じて
繰り返し取り組む
各セッションでは特定のソフトウエア開発と設計
の領域の学習を行う
例えば、ペアプログラミングや
TDDだ
ライフゲームは単純なたった 3つのルールで自動的に動く細胞の集まりで、理解しやすい一方、異なる開発手法やソフトウエア設計上のアイディアを探索するには好都合な題材だ
Code Retreat
Code Retreatsのアイディアは 2009年 1月の
Codemash カンファレンスで生まれ継続的な改善を経て世界中で実施されている。
Global Day of Coderetreat
というイベントが2011,12,3
に世界同時開催
プログラミング技術の習得という観点で
ひとつのスタンダードと言っても
過言ではありません
Code Retreat
演習に含まれるのは● シンプルな設計のための 4 つのルール● OO の原則 (SOLID)● 心からの TDD● 関数型プログラミング● 継続的リファクタリング● 悪い習慣を利用する : 手動テストかテスト無し● オブジェクト健康体操● ペアプログラミングとコミュニケーション● ピンポンペア
参考まで● シンプルな設計のための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
シンプルな設計のための 4 つのルール
● PASS ALL TESTS● CLEAR, EXPRESSIVE, & CONSISTENT● DUPLICATES NO BEHAVIOR OR
CONFIGURATION● MINIMAL METHODS, CLASSES, &
MODULES
OO の原則 (SOLID)
● Single responsibility principle● Open/closed principle● Likov substitution principle● Interface segregation principle● Dependency inversion principle
Single responsibility principle
an object should have only a single
responsibility.
Open/closed principle
software entities … should be open for
extension, but closed for modification
Likov substitution principle
objects in a program should be replaceable with
instances of their subtypes without altering the
correctness of that program
Interface segregation principle
many client specific interfaces are better
than one general purpose interface
Dependency inversion principle
one should “Depend upon Abstractions. Do not depend
upon concretions.” Dependency injection is one method of following this principle.
オブジェクト健康体操● 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
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.
提供
Global Day of Code Retreathttp://goo.gl/Cru1t