20091030 Uncle Bob Said You Should Be A Professional With Clean Code

79
ボブ おじさん を見た しまだ こうじ SHIMADA Koji 日本Rubyの会 Ruby札幌 Uncle Bob said you should be a professional with clean code. 2009-10-30 Ruby Sapporo Night vol.12 アップルストア札幌 20091031日土曜日

description

 

Transcript of 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Page 1: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ボブおじさんの夢を見た

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Uncle Bob said you should be a professional with clean code.2009-10-30 Ruby Sapporo Night vol.12アップルストア札幌

2009年10月31日土曜日

Page 2: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

提供

Ruby札幌From Sapporo, with Love for Ruby.

2009年10月31日土曜日

Page 3: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

しまだ こうじ島田 浩二

Photo by tmaeda

2009年10月31日土曜日

Page 4: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Sapporo is a beautiful provincial city of Japan.

Photo by enggul

2009年10月31日土曜日

Page 5: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 6: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 7: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 8: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 9: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

from Sapporo,with Love for Ruby

Photo by darashi

2009年10月31日土曜日

Page 10: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

日本Rubyの会2009年10月31日土曜日

Page 11: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

一般社団法人 LOCAL

2009年10月31日土曜日

Page 12: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 13: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 14: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

e "rst editionstill in store.

2009年10月31日土曜日

Page 15: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

どうぞよろしく

お願いします2009年10月31日土曜日

Page 16: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ボブおじさんの夢を見た

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Uncle Bob said you should be a professional with clean code.2009-10-30 Ruby Sapporo Night vol.12アップルストア札幌

2009年10月31日土曜日

Page 17: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

設計とプログラミングは人間的な活動である。それを忘れると、すべて失う。

- Bjarne Stroustrup

2009年10月31日土曜日

Page 18: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Today’s Topic:

2009年10月31日土曜日

Page 19: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

A Handbook of Agile Software Craftsmanship

2009年10月31日土曜日

Page 20: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Two Reasons:

2009年10月31日土曜日

Page 21: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 22: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

on Kouichirou Eto’s Talk2009年10月31日土曜日

Page 23: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Martin Fowler says:2009年10月31日土曜日

Page 24: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Ward、Kent、それから、キレイなコード、うまく整理されたオブジェクト指向設計、そして、テストのしやすさについて提唱してきたすべての人たちの価値…Ruby界ではそれが「正統」になっている。

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RailsConf20072009年10月31日土曜日

Page 25: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Who’s who:

2009年10月31日土曜日

Page 27: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Object Mentor Inc.

2009年10月31日土曜日

Page 28: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

A Handbook of Agile Software Craftsmanship

2009年10月31日土曜日

Page 29: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

動作するきれいなコード

“Clean Code that works”

2009年10月31日土曜日

Page 30: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 31: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

「動作するきれいなコード」、この Ron Jefferies の簡潔な言葉こそが

TDD のゴールである

Clean Code that works, in Ron Jefferies’ pretty phrase, is the goal of Test-Driven Development(TDD).

2009年10月31日土曜日

Page 32: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 33: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

SOLID PrincipleSRP Single ResponsibilityOCP Open-ClosedLSP Liscov Substitution

ISP Interface SegregationDIP Dependency Inversion

2009年10月31日土曜日

Page 34: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

SOLID PrincipleSRP 単一責務の原則OCP オープン・クローズドの原則LSP リスコフの置換原則ISP インターフェイス分離の原則DIP 依存関係逆転の原則

2009年10月31日土曜日

Page 35: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

✓クラスを変更する理由は一つ以上存在してはならない

✓ソフトウェアの構成要素は拡張に対して開いて、修正に対して閉じていなけければならない

✓派生型はその基本型と置換可能でなくてはならない

✓抽象に依存せよ2009年10月31日土曜日

Page 36: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

高凝集疎結合

2009年10月31日土曜日

Page 37: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

安易なショートカットを選んではならない

- Masatoshi SEKI

2009年10月31日土曜日

Page 38: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 39: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

プログラミングは、マシンに向けてだけではなく、自分以外のプログラマに向けて書かれるべきなんだ。そうすることで、プログラミングは初めて、人による、人のための、人の仕事になる。そうやって作られるコードこそ、良いコードなんだ。

ーー 実装パターン、ケント・ベック

2009年10月31日土曜日

Page 40: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

“is is a book about programming. ”

2009年10月31日土曜日

Page 41: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

“is is a book about good programming. ”

2009年10月31日土曜日

Page 42: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ソフトウェア設計とは何か- Jack W.Reeves

2009年10月31日土曜日

Page 43: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ソフトウェア設計とは何か?

✓ 設計: ソースコード✓ 製造: ビルド

2009年10月31日土曜日

Page 44: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

コーディングは設計であり、テスティングとデバッギングも設計の一部であり、私たちが一般的にソフトウェア設計と呼んでいるものもやはり設計の一部なのです

2009年10月31日土曜日

Page 45: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Dave Thomas says:

2009年10月31日土曜日

Page 46: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ソフトウェアエンジニアリングという言葉はありません。少なくともまだないです。これ以上ないところまで削るのがエンジニアリング。これ以上削れないところまで削るということは、どこまで削るとそれが壊れてしまうかわかっているということです。

2009年10月31日土曜日

Page 47: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

まだソフトウェアに関しては我々はそのレベルまで達していないんです。達していないから、ソフトウェアエンジニアリングという言葉は、まだ嘘なのです。我々がしているのは、ただのコーディングです。

- Dave Thomas

2009年10月31日土曜日

Page 48: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ボーイスカウトの規則

photo by sunflowerdave

2009年10月31日土曜日

Page 49: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

洗練されたコードは、どうして、こうも早く粗悪なコードへと変質してしまうのでしょう? ... 間違っているのは我々自身なのです。これでは、我々はプロとは呼べないのです。...つまり、あなたがそれに負けない熱意をもって、コードを守ればよいのです

ーー クリーンコード、ロバート・C・マーチン

2009年10月31日土曜日

Page 50: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

We who cut mere stones must always be envisioning

cathedrals.ー e Pragmatic Programmer

2009年10月31日土曜日

Page 51: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

いち開発者である自分には企業資産(つまりコードベース全体)の価値を低下させるような権限はない

- Shintaro KAKUTANI

2009年10月31日土曜日

Page 52: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

2009年10月31日土曜日

Page 53: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Programmers areResponsible Professionals.

- Martin Fowler

2009年10月31日土曜日

Page 55: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

今日のまとめ✓ 粗末なコードは会社を廃業に追いやる

✓ コーディングは設計✓ 私たちに責任がある✓ 練習あるのみ

2009年10月31日土曜日

Page 57: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

意味のある名前Meaningful Names

2009年10月31日土曜日

Page 58: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

int d; // 日単位の経過時間

int elapsedTimeDays;int daysSinceCreation;int daysSinceModification;int fileAgeInDays;

明確な名前を付ける

2009年10月31日土曜日

Page 59: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : the List) if (x[0] == 4) list1.add(x); return list1;}

明確な名前を付ける

2009年10月31日土曜日

Page 60: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

public List<Cell> getFlaggedCells() { List<Cell> flaggedCells = new ArrayList<Cell>(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells;}

明確な名前を付ける

2009年10月31日土曜日

Page 61: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

class DtaRcrd102 { private Date genymdhms; private Date modymdhms; private final String pszqint = ...;

発音可能な名前を付ける

class Customer { private Date generationTimestamp; private Date modyficationTimestamp; private final String recordid = ...;

2009年10月31日土曜日

Page 62: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

for (int j = 0; j < 34; j++) { s += (t[j]*4/5);}

検索可能な名前を付ける

int realDaysPerIdealDay = 4;const int WORK_DAYS_PER_WEEK = 5;int sum = 0;for (int j=0; j < NUMBER_OF_TASKS; j++) { int realTaskDays = taskEstimate[j] * realDaysPerIdealDay; int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK); sum += realTaskWeeks;}

2009年10月31日土曜日

Page 63: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

# 従業員が給与の完全給付を受け取るかどうかチェックするif ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) ...end

if employee.eligible_for_full_benefits? ...end

コードの中で説明する

2009年10月31日土曜日

Page 64: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

photo by foliosus

あとは本で学んでください!!!

2009年10月31日土曜日

Page 65: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

今日のまとめ✓ 粗末なコードは会社を廃業に追いやる

✓ コーディングは設計✓ 私たちに責任がある✓ 練習あるのみ

2009年10月31日土曜日

Page 66: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

参考2009年10月31日土曜日

Page 67: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

acts_as_agile

http://gihyo.jp/dev/serial/01/agile2009年10月31日土曜日

Page 68: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Coplien and Martin Debate TDD, CDD and Professionalism.

http://www.infoq.com/jp/interviews/coplien-martin-tdd_ja2009年10月31日土曜日

Page 69: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

http://blogs.itmedia.co.jp/hiranabe/2008/08/agile2008-rober.html

Crasmanship over crap

2009年10月31日土曜日

Page 70: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ボブおじさんの夢を見た

しまだ こうじSHIMADA Koji

日本Rubyの会Ruby札幌

Uncle Bob said you should be a professional with clean code.2009-10-30 Ruby Sapporo Night vol.12アップルストア札幌

2009年10月31日土曜日

Page 71: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ご清聴ありがとうございました

2009年10月31日土曜日

Page 72: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Photo by darashi

各種ご案内

2009年10月31日土曜日

Page 74: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Ruby Sapporo Night2009年10月31日土曜日

Page 75: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Junkudo Books2009年10月31日土曜日

Page 76: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

02

Check ItOut!

2009年10月31日土曜日

Page 77: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Join Us!

2009年10月31日土曜日

Page 78: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

ご参加お待ちしています

2009年10月31日土曜日

Page 79: 20091030 Uncle Bob Said You Should Be A Professional With Clean Code

Ruby Sapporo Nightvol.13coming soon

2009年10月31日土曜日