- PR -

リファクタリングについて

1
投稿者投稿内容
キリギリス
常連さん
会議室デビュー日: 2004/08/26
投稿数: 33
投稿日時: 2008-10-06 16:43
 現在、進行中のプロジェクトで画面の項目物理名やクラス名、テーブル項目名などがまだハッキリと決まってないにも関わらず、作った感を出したいのかどうなのか分からないですが、仮名を付けて作って行く事になりました。
 名前がハッキリと決まったら、後でリファクタリングをすれば簡単に出来るじゃんと言われました。簡単に出来るのでしょうか?なんの問題も無いのでしょうか?
教えてください。このままでいいのでしょうか?
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-10-06 17:39
項目名のリネームなどはそれほど難しくはないですが、可能な限りは先に決めたほうが良いのは確実です。
パターンとしては、「後でなおす」はやらない事が多いのでオススメできませんね。また、「名前が決まる」タイミングがずるずると遅れ、ほとんど完成した後に変更とかになれば最悪のケースもありますよ。

ただ、作るのが1機能だけでフレームワークの調査と、プロトタイプの作成が目的とかならば仮名でどんどん作るのはありです。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-10-06 17:50
引用:

キリギリスさんの書き込み (2008-10-06 16:43) より:
 現在、進行中のプロジェクトで画面の項目物理名やクラス名、テーブル項目名などがまだハッキリと決まってないにも関わらず、作った感を出したいのかどうなのか分からないですが、仮名を付けて作って行く事になりました。


Java の中だけだったら、Eclipse などで後からいくらでもリネームできます。しかし、DB が絡んで来ると、テーブル名や列名を文字列として持っていたり、OR マッピングのツールの制約があったりして、リネームがしづらくなります。

まあ、ポリシーによっては、モノを区別できれば、後から名前の意味が違ってきてもそれでいいや、という割り切りで突っ走るのもひとつの方法かもしれません。
あるいは、こういうのを避けるために、変数名に数字を付けるなどというやりかたもあるのかもしれませんが、これはさすがにコードが見づらくなり、プログラマーとしてはいちいち対応表を見ないといけなくなって、辛いものがあります。
まあ、人の好み、という面が大きいでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-10-06 18:53
どういう作りかというところによりますね。
例えば、クラス名を元に自動的にURLを決めているようなフレームワークを使うと、
クラス名を変えればURLが変わりますが、
リファクタリングで変更できるのは、Javaのクラスだけです。

テンプレートエンジンや設定ファイルやDBもそうですし、
困るのは文字列やリソースの類でしょうね。
あと、文字列までリファクタリングできない以上、
リフレクション系も全滅します。

謎な命名規約(業務IDと連番を組み合わせる)のプロジェクトで、
分かりやすい名前で作成→リファクタリングをやったことがありますが、
リファクタリングよりも、GREPの方が助かりました。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-10-07 13:04
IDEが発達しましたからJavaのクラスに関して言えばリネームは安全に簡単に行えるようになりましたね。
ただ、他の方も言われている通り、javaのソースファイルの外まで事が及ぶと簡単には変更できなくなってしまう。
JSPなどで参照しているようなケースですらリネーム困難だったりしますから。

実装を進めて見えてくる問題点とかもあるので、最初にがちがちに決めようとすると逆にコスト高になることもあるので、常に変更コストの変化を気にします。
先に決めた方がコストが安ければ先に決めるし、先に決めても後で変更になる確率が高そうだと思うならそこまで先延ばしにしたりもする。
このあたりはケースバイケースなので今の事象をうまく捉えて判断するしかありません。
1

スキルアップ/キャリアアップ(JOB@IT)