The Clean Coder Appendix A Tooling

The Clean Coder勉強メモ

出典: 


Tooling

  • 補助記憶装置がテープドライブだったときの苦労話

Tools

  • ボブおじが現在使用しているモダンなツールの紹介

Source Code Control

  • OSSがいいぞ

    • 開発者による、開発者のためのものだから
  • 高価な「エンタープライズ向け」製品もある

    • 開発者というよりはマネージャ、役員、「ツールグループ」向けに売り出しているよう
    • 目を引く機能めじろおし
    • だが、開発者が本当に必要なものではなかったりする

      • 「速さ」が筆頭

An “Enterprise” Source Control System

  • イテレーションの最中はOSSのVCSを使い、イテレーションの終わりのみ会社指定の「エンタープライズ向け」VCSを使う手もある

    • みんな幸せ
    • ルールも破らない
    • 高い生産性もキープできる

Pessimistic versus Optimistic Locking

  • 賢いマージにより悲観ロック時代は終わりを告げた

CVS/SVN

  • CVS

    • 昔のやつ
  • SVN

    • ブランチさえ切らなければ現役で活躍できる

Branching

  • 著者はかつてはブランチ否定派だった

    • SVNユーザなら同意するところ
  • 分散型VCSの登場で様相は完全に一変した

git

  • これからのバージョン管理

IDE/Editor

vi

  • viでガチのコーディングをすることはめっきりなくなった
  • シンプルなテキスト編集には使う

Emacs

  • パワフル

    • 向こう数十年は生き残るだろう
  • とはいえ用途特化のIDEには及ばない

    • コード編集は、汎用テキスト編集ではないのである
  • 90年代はEmacsに固執していた

    • 他のものを使うなんて考えられなかった
  • 2000年代にIntelliJに移って以来、(Emacsに)振り返ることはない

Eclipse/IntelliJ

  • IntelliJ

    • ボブおじが現在使用しているもの
    • プログラマによるプログラマのためのIDE
    • 不満を感じたことはほとんどない
  • Eclipseも似た感じ
  • コード編集特化の機能がすごい

    • リネーム
    • メソッド抽出
    • 継承を集約にほぐす
  • プログラミングはもはや行や文字の編集ではない

TextMate

  • 学習コスト低い、操作が直感的

Issue Tracking

  • いきなりツールを買うのではなく、手を動かすシステムを試してからがいいよ

    • 【補】付箋をペタペタやるカンバンとかのことかな

Bug Counts

  • チームの規模問わず、機能/タスク/バグリストは数十から数百が妥当

    • 数千じゃなくて
  • ツール問わず、issueの数が多いとissue “tracking”じゃなくなるぞ

    • 追跡不能
    • issue dump

Continuous Build

  • Jenkinsとか

    • 学習コスト低くて良い
  • 著者が継続的ビルドに求めること: シンプルさ

    • VCSのフックで起動
    • 誰かがコードをチェックしたら常に自動でビルドし、チームにステータスをレポートする
  • ビルドが常に元気に動いていること

    • ビルドが失敗したら緊急事態、すぐ直す

      • 壊れた状態を1日以上放置しない

Unit Testing Tools

  • 言語ごとにいろいろある
  • 満たすべき機能

    1. 速い・実行しやすい
    2. 通った/落ちたの可視化

      • すぐわかる・あいまいでない
      • 自分で2つのファイルを比較しないといけないとかは駄目
    3. 進捗の可視化

      • 途中で止まってしまっていないか確認できること
    4. テストケース間に依存を生じさせない工夫

      • 別々のインスタンスで実行する
      • ランダム順番で実行する
    5. テストケースが書きやすいこと

Component Testing Tools

  • ビジネス陣やQAチーム自身が彼らの理解できる言葉でテストを記述できるのが望ましい

The Definition of Done

  • 仕事の「完了」の定義

    • 「全てのコンポーネントテストが通りました」

FitNesse

  • wikiベースの受け入れテストフレームワーク

Integration Testing Tools

  • UIが絡む自動テストは壊れやすいことで悪名高い
  • 必要最小限だけ書こう

    • UI自体のテスト
    • ごく少数のE2Eテスト
  • Selenium, Watir

UML/MDA

  • 図からコードを起こそうという試みは歴史的に失敗に終わった

    • 「コードを書くプログラマが不要になるのでは」という期待があった
    • プログラマが書くのはコードではなく、低水準の詳細だったのである
  • UMLを書くのはアーキテクトではなく、プログラマ自身になった

英語

  • judiciously

    • 賢明に
  • be conversant with

    • …に精通している、明るい
  • a small fortune

    • 大金
  • My condolences.

    • お悔やみ申し上げます。
  • long in the tooth

    • 年老いた、古い

      • 歯茎が後退して、歯が長く見えることから
  • austere

    • 厳しい
  • mind-bender

    • びっくりさせるもの
  • resurgence

    • 復興
  • onerous

    • わずらわしい

      • 「チェックインする前に毎回数十分かけてテストする」とか
  • ilk

    • 同類
  • heady

    • 性急な、せっかちな
  • abject

    • みじめな
  • rubout

    • すり消す

      • ASCIIの0x7F(DEL)とか
  • forlorn

    • 孤独な、しょんぼりした、わびしい
  • menagerie

    • 見世物
    • 雑多な集合体