-
Notifications
You must be signed in to change notification settings - Fork 47
Readingagilesamuraiinsapporo20120424
irasally edited this page Apr 25, 2012
·
10 revisions
- http://atnd.org/events/27956
- 2012年04月24日 19:30-21:00
- エスプランニング開発室
- 参加者 5人
- 第13章
- このコードは何のコードだろう?
- ディーラーとプレイヤーの勝ち負けを判定するコードみたいだね
- このコード、どこがよくないだろうか?
- まず名前が良くない(連番とか困る)
- ほとんど全部
- コードは読めるけど何をしたいのかがわからないよ
- どう修正するのが良いだろうか
- 色々意見を出す -> このあと答え合わせできるね
- 名前でわからないとここまで混乱するのかと実感・・・
- アジャイル開発では、それを「リファクタリング」と呼んでいる
- アジャイル開発じゃなくても「リファクタリング」と呼ぶよね
- リファクタリングは"手法"?
- プラクティス、テクニックならしっくりする
- "手法"は原著でどう書かれているのだろう?
- 250Pの「ソフトウェアの整合性を保ちながら、設計を少しずつ改善していける手法」は "We need a way of incrementallty...." となっているので "a way"と書かれているようです
- 13.3 の冒頭は "Refactoring is the practice of continuously making small, ...." なのでリファクタリングのことはプラクティスである、と言っていますね
- 常に何かしらの負債を抱えている
- (負債が全くないということは新しいことや、これまでとは違うことに取り組もうとしていないってことだ)は言いすぎかなー
- 常に負債がないように、負債を抱えないように開発することもできるはずじゃないかな
- (負債が全くないということは新しいことや、これまでとは違うことに取り組もうとしていないってことだ)は言いすぎかなー
- 「負債」として認識できるかできないかというのが実は一番の問題だよね
- 「動いているからいいじゃん」問題
- 「動いているからわざわざ手を入れなくていいじゃん」問題
- 「動いているものに手を加えてはいけない」問題
- 「負債」の考え方をチーム内に浸透させられるかどうかが重要になってくるね
- 良いコードを書こうとしたら必然的にリファクタリングをすることになるよね
- 常に良いコードを書こうとしていたら結果的にリファクタリングしていた、ということはよくある
- アジャイル的な開発 -> 小さいものをだんだん大きくしていく -> リファクタリングをしないと大変なことになる
- 共通化などをそのときそのときで常に考えて改善していく、はじめは小さく作る
- 「コードを成長させていく」というキーワードをよく聞くね
- コードを「ナマモノ」と考えるか「完成された製品」として捉えるかの違いがあるのかもしれないなあ
- 会社の上の層にリファクタリングの必要性を理解してもらうにはどうすればいいだろうか?
- 特に見積もりの時とかどうすればよいのだろう
- 実装に「ユニットテスト、プログラミング、リファクタリング」を全て含めて考えれば良いんじゃないかなー
- 項目の数字の見せ方によって印象が変わるところはある
- 気がついた時にさっと直せない文化や環境は辛いよね
- 機能追加の帽子とリファクタリングの帽子は絶対に意識しなければいけないよね
- リファクタリング―プログラムの体質改善テクニック( http://www.amazon.co.jp/dp/4894712288 )にも書かれてある
- 251Pの下段のコードのほうがわかりやすい、と思わない人がいる・・・
- オブジェクト指向プログラミング云々以前の問題
- 仕様書(詳細設計書)通りの順番でコードが書かれていないとわからないという人がいた
- リファクタリングはユニットテストがあることが大前提なのは忘れてはいけないね
- 245Pにも書いてあるね
- この章の頭にも書いてくれていると良かったなあ
- ユニットテストが書かれていないソースコードは変更してはいけないという気持ちを持たないといけないよ
- テストがないソースコードを直すことはただのコーディングであり、リファクタリングではない
- それが良い悪いは別としてリファクタリングをするのに大切なことは忘れてはいけないね
- コードを書くことは、良い文章を書くことにとてもよく似ている、本当にそうだなーと実感することが多いです
- 全体を捉えることができているか
- 適切な言葉を選ぶことができているか
- 人が見てわかりやすいと思えるか
- コードがわかりにくい人は文章もわかりにくい
- ソースコードレビューできちんと説明できている -> わかりやすいコードを書いている人が多い
- "堅実なテストはリファクタリングをする上で必要な前提条件です"
- アジャイルサムライに書かれていること以外のリファクタリングの効用
- バグを見つけやすい
- 開発スピードが早くなる
- リファクタリングのタイミング
- 新しい機能を追加する時
- バグを修正する時
- コードレビューの時
- 細かい部分は常に(<- アジャイルサムライ 253P の絵が示していることだね)
- Growing Object-Oriented Software, Guided by Tests http://www.amazon.co.jp/dp/0321503627
- アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き http://www.amazon.co.jp/dp/4274066983
- アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法 http://www.amazon.co.jp/dp/4839924023
- アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング http://www.amazon.co.jp/dp/4873113954
- アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 http://www.amazon.co.jp/dp/4274066940
- アジャイル開発の本質とスケールアップ 変化に強い大規模開発を成功させる14のベストプラクティス http://www.amazon.co.jp/dp/4798120405
- The RSpec Book http://www.amazon.co.jp/dp/4798121932
- レガシーコード改善ガイド http://www.amazon.co.jp/dp/4798116831
- パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法 http://www.amazon.co.jp/dp/4822282384
- 254P - 意味が見えてきた
- 名前を直すのが一番変化がわかるね
- 状況によってはこの前にインデントの修正が必要なことがあるね
- 254P下段 等号不等号のリファクタリング
- 結構危ない、テスト必須だね
- 255P - かなりすっきりしたね
- 255P下段 ワンライナーにするかどうかは状況によりけりだね
- ワンライナーにしない方がコードとしてわかりやすいこともあるよね
- HandがgetValue()を持っている方が綺麗だよね(メソッドの移動)
- Handに役割を持たせるように切り替える
- 255P 上のメソッド抽出ができるようになるかどうかが最初のステップ
- 更にHandにメソッドをもたせたほうが良い(メソッド移動)のでは?と気がつける(責務がどこにあるべきか)かが次のステップになるかな
- 255P下段 ワンライナーにするかどうかは状況によりけりだね
- リファクタリングの行き届いたコードは本当に修正しやすいね
- バグ修正時やメンテナンス時に一番大変なのは(他人や昔の自分が書いた)ソースコードを読むこと
- 読んで理解するまでに時間がかかる
- 自分の昔書いたコードも理解することが難しいという体験をすると大切さに気がつくね
- リファクタリングをやってもやってもコードが汚染されていく孤独な戦いをしたことがある
- これは結構心が折れるね・・・
- 大規模リファクタリングと日々のリファクタリングには違いがあるね
- 大規模リファクタリングがストーリーになるのはわかる気がする
- 普段からちょっとずつできることとそうではないことがあるね
- リファクタリングはお客さんの価値を生み出してはいない
- 変化に対応するために必要なことだけれど価値を直接生み出す行為ではないと言うことは意識したほうがよいね
- リファクタリングを避ける時(リファクタリング―プログラムの体質改善テクニック より)
- 納期が迫っている時(アジャイルサムライにも書いてある)
- 変更するよりも最初から書きなおしたほうが早い時
- 明らかに動かない時など限定的に(よっぽどひどい時)
次回は5/8(火)に19:30- 開催します!