ボブおじさんの
   夢を見た
    Uncle Bob said you should be a
    professional with clean code.
    2009-10-30 Ruby Sapporo Night vol.12
    アップルストア札幌


                 日本Rubyの会
                 Ruby札幌
                                   しまだ こうじ
                                           SHIMADA Koji
2009年10月31日土曜日
提供

                 From Sapporo, with Love for Ruby.


                  Ruby札幌


2009年10月31日土曜日
しまだ こうじ
                   島田 浩二
 Photo by tmaeda
2009年10月31日土曜日
Sapporo is a beautiful
   provincial city of Japan.




                         Photo by enggul
2009年10月31日土曜日
2009年10月31日土曜日
2009年10月31日土曜日
2009年10月31日土曜日
2009年10月31日土曜日
from Sapporo,
                 with Love for Ruby



                                Photo by darashi
2009年10月31日土曜日
日本Rubyの会
2009年10月31日土曜日
一般社団法人   LOCAL




2009年10月31日土曜日
2009年10月31日土曜日
2009年10月31日土曜日
e first edition
                   still in store.



2009年10月31日土曜日
どうぞ
    よろしく
   お願いします
2009年10月31日土曜日
ボブおじさんの
   夢を見た
    Uncle Bob said you should be a
    professional with clean code.
    2009-10-30 Ruby Sapporo Night vol.12
    アップルストア札幌


                 日本Rubyの会
                 Ruby札幌
                                   しまだ こうじ
                                           SHIMADA Koji
2009年10月31日土曜日
設計とプログラミングは
        人間的な活動である。
        それを忘れると、すべて失う。
                 - Bjarne Stroustrup




2009年10月31日土曜日
Today’s Topic:


2009年10月31日土曜日
A Handbook of
     Agile Software Craftsmanship
2009年10月31日土曜日
Two Reasons:


2009年10月31日土曜日
2009年10月31日土曜日
on Kouichirou Eto’s Talk
2009年10月31日土曜日
Martin Fowler says:
2009年10月31日土曜日
Ward、Kent、それから、
   キレイなコード、うまく整理
   されたオブジェクト指向設計、
   そして、テストのしやすさに
   ついて提唱してきたすべての
   人たちの価値…Ruby界では
   それが「正統」になっている。
                 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RailsConf2007
2009年10月31日土曜日
Who’s who:


2009年10月31日土曜日
Robert C. Martin
                             Photo by chrishedgate
2009年10月31日土曜日
Object Mentor Inc.




2009年10月31日土曜日
A Handbook of
     Agile Software Craftsmanship
2009年10月31日土曜日
動作する
    きれいなコード
        “Clean Code that works”

2009年10月31日土曜日
2009年10月31日土曜日
Clean Code that works, in
  Ron Jefferies’ pretty phrase,
  is the goal of Test-Driven
  Development(TDD).
       「動作するきれいなコード」、
    この Ron Jefferies の簡潔な言葉こそが
            TDD のゴールである

2009年10月31日土曜日
2009年10月31日土曜日
SOLID Principle
  SRP Single Responsibility
  OCP Open-Closed
  LSP Liscov Substitution
  ISP Interface Segregation
  DIP Dependency Inversion
2009年10月31日土曜日
SOLID Principle
  SRP 単一責務の原則
  OCP オープン・クローズドの原則
  LSP リスコフの置換原則
  ISP インターフェイス分離の原則
  DIP 依存関係逆転の原則
2009年10月31日土曜日
✓ クラスを変更する理由は一つ以上
   存在してはならない
 ✓ ソフトウェアの構成要素は拡張に
   対して開いて、修正に対して閉じ
   ていなけければならない
 ✓ 派生型はその基本型と置換可能で
   なくてはならない
 ✓ 抽象に依存せよ
2009年10月31日土曜日
高凝集
       疎結合
2009年10月31日土曜日
安易なショートカットを
     選んではならない
                 - Masatoshi SEKI




2009年10月31日土曜日
2009年10月31日土曜日
プログラミングは、マシンに向けて
    だけではなく、自分以外のプログラ
    マに向けて書かれるべきなんだ。
    そうすることで、プログラミングは
    初めて、人による、人のための、
    人の仕事になる。そうやって作られ
    るコードこそ、良いコードなんだ。
                 ーー   実装パターン、ケント・ベック

2009年10月31日土曜日
“is is a book about
   programming. ”




2009年10月31日土曜日
“is is a book about
   good programming. ”




2009年10月31日土曜日
ソフトウェア設計とは何か
                 - Jack W.Reeves




2009年10月31日土曜日
ソフトウェア設計とは何か?


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


2009年10月31日土曜日
コーディングは設計であり、
  テスティングとデバッギング
  も設計の一部であり、
  私たちが一般的にソフトウェ
  ア設計と呼んでいるものもや
  はり設計の一部なのです
2009年10月31日土曜日
Dave Thomas says:




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

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

2009年10月31日土曜日
photo by sunflowerdave




                 ボーイスカウト
                     の規則
2009年10月31日土曜日
洗練されたコードは、どうして、
    こうも早く粗悪なコードへと変質し
    てしまうのでしょう? ... 間違ってい
    るのは我々自身なのです。これで
    は、我々はプロとは呼べないので
    す。...つまり、あなたがそれに負け
    ない熱意をもって、コードを守れば
    よいのです
                 ーー   クリーンコード、ロバート・C・マーチン

2009年10月31日土曜日
We who cut mere stones
     must always be envisioning
                     cathedrals.
                 ー e Pragmatic Programmer




2009年10月31日土曜日
いち開発者である自分には
     企業資産(つまりコードベー
     ス全体)の価値を低下させる
     ような権限はない
                 - Shintaro KAKUTANI


2009年10月31日土曜日
2009年10月31日土曜日
Programmers are
   Responsible Professionals.
                   - Martin Fowler




2009年10月31日土曜日
Robert C. Martin
                             Photo by chrishedgate
2009年10月31日土曜日
今日のまとめ
      ✓ 粗末なコードは会社を
        廃業に追いやる
      ✓ コーディングは設計
      ✓ 私たちに責任がある
      ✓ 練習あるのみ
2009年10月31日土曜日
入門
                      photo by foliosus
2009年10月31日土曜日
意味のある名前
                 Meaningful Names



                                    photo by foliosus
2009年10月31日土曜日
明確な名前を付ける

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




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

                                photo by foliosus
2009年10月31日土曜日
明確な名前を付ける


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


                                               photo by foliosus
2009年10月31日土曜日
明確な名前を付ける


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



                                                  photo by foliosus
2009年10月31日土曜日
発音可能な名前を付ける
   class DtaRcrd102 {
     private Date genymdhms;
     private Date modymdhms;
     private final String pszqint = ...;


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

                                     photo by foliosus
2009年10月31日土曜日
検索可能な名前を付ける
   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;
   }

                                                              photo by foliosus
2009年10月31日土曜日
コードの中で説明する
   # 従業員が給与の完全給付を受け取るかどうか
   チェックする
   if ((employee.flags & HOURLY_FLAG) &&
       (employee.age > 65))
     ...
   end

   if employee.eligible_for_full_benefits?
     ...
   end
                                        photo by foliosus
2009年10月31日土曜日
あとは本で
            学んでください!!!

                     photo by foliosus
2009年10月31日土曜日
今日のまとめ
      ✓ 粗末なコードは会社を
        廃業に追いやる
      ✓ コーディングは設計
      ✓ 私たちに責任がある
      ✓ 練習あるのみ
2009年10月31日土曜日
参考
2009年10月31日土曜日
acts_as_agile




                 http://gihyo.jp/dev/serial/01/agile
2009年10月31日土曜日
Coplien and Martin Debate
 TDD, CDD and Professionalism.




         http://www.infoq.com/jp/interviews/coplien-martin-tdd_ja
2009年10月31日土曜日
Crasmanship over crap




     http://blogs.itmedia.co.jp/hiranabe/2008/08/agile2008-rober.html
2009年10月31日土曜日
ボブおじさんの
   夢を見た
    Uncle Bob said you should be a
    professional with clean code.
    2009-10-30 Ruby Sapporo Night vol.12
    アップルストア札幌


                 日本Rubyの会
                 Ruby札幌
                                   しまだ こうじ
                                           SHIMADA Koji
2009年10月31日土曜日
ご清聴
        ありがとう
       ございました
2009年10月31日土曜日
各種ご案内


                         Photo by darashi
2009年10月31日土曜日
Workshop




  Photo by mrkn

2009年10月31日土曜日
Ruby Sapporo Night
2009年10月31日土曜日
Junkudo Books
2009年10月31日土曜日
02
    Check It
    Out!

2009年10月31日土曜日
Join Us!




2009年10月31日土曜日
ご参加
                 お待ちして
                  います
2009年10月31日土曜日
Ruby Sapporo Night
  coming soon    vol.13


2009年10月31日土曜日

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