リファクタリング

今日はリファクタリングについて。
リファクタリングはTDD(テスト駆動開発)でよく使われる技法?なのかな。
 ※簡単な説明?感想?を下の方に
その中で、Eclipseでクラス名を変更した際に、いろいろ困った結果
とりあえずこのやり方に落ち着いた。※困ったときの対処法も書くよ

ただ、効率が悪いからもっといい方法があるはず。

Eclipseでクラス名の変更

step1
Eclipse上でクラス名変更

step2
ターミナルで様子見の"git status"

# On branch master
# Changes not staged for commit:
# (use "git add/rm ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# deleted: src/entry/旧クラス名.java
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# src/entry/新クラス名.java
no changes added to commit (use "git add" and/or "git commit -a")

step3
コマンドで削除!

git rm 旧クラス
すると
#	renamed:    src/entry/旧クラス名.java -> src/entry/新クラス名.java
※注 この時renameにならないとしたら、クラス名以外に中身を変えてるからダメな可能性がある。俺はこれでダメだったっぽい

すかさず

git add .
git commit
コミットは後でまとめたりすればいんじゃね

renameできなくてどうしようもなくなったら

とりあえず、ターミナルのコマンドで

rm プロジェクト名
git clone githubからプロジェクトssh
をやったあとに、Eclipseのプロジェクトをリフレッシュ
いっそ、コミットして履歴を戻すほうがスマートかもしれないけどね。

commitをまとめる

git rebase -i HEAD^
で出来る。

TDD?リファクタリング

新人の俺の現段階での精一杯の理解の範囲で書くから多少違う所があるかもだけど、俺みたいな初心者にはわかりやすいと信じてる。笑

TDDは、実際にコードが有るかのごとく、テスト書いて、それから実際にコードを書く開発方法。
少し難しく感じたけど、プログラミング初めて半年程度の俺でも何とか、ふらふらの千鳥足で進めることできてる。
しかもテストあると、できてるつもりのミスが減るし、知らず知らずにオブジェクト指向なプログラミングっぽくなったり。
ただクラスやメソッドの名前をたくさん考えたりするのがまだなれない。
コツはそれぞれ単語で名前つけるんじゃなくて、"クラス名.メソッド名"で呼び出したときに、どんな機能かわかる文章になるような名前にするんだと。
現在挑戦中!

リファクタリングは、一度動くようになった実装をテストを壊さないで綺麗に修正するような話。
ただ、テストには実装のためのテストと、ふるまいのためのテストがあって、
重要なのは後者のふるまいのテストで、時には実装のテストは壊したり消したり。
ちょっと今の僕にはムズカシイです。