Coderetreat

Preview:

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

Recommended