teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤記訂正

2017/12/15 06:16

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  + b.java
27
27
  + b2
28
28
  ```
29
- (2)のケースではa, b, cをそれぞれ選択することができてRefactorでaをrenameしたりmoveしたりできますが(1)の状態はa, bノード表示されずcパッケージだけをa.b.cとして表示するという仕様です。ゆえにa.b.cをrenameしようとしても「cをどうrenameするか」という操作と見做されます。
29
+ (2)のケースではa, b, cをそれぞれ選択することができてRefactorでaをrenameしたりmoveしたりできますが(1)の状態はa, bノード表示されずcパッケージだけをa.b.cとして表示するという仕様です。ゆえにa.b.cをrenameしようとしても「cをどうrenameするか」という操作と見做されます。
30
30
 
31
31
  パッケージのRefactoring(rename/move etc.)はあくまで一つのパッケージ階層に対してしか行えないのでそれを踏まえて操作を考えるというべきでした。
32
32
 

1

追記

2017/12/15 06:16

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -6,4 +6,42 @@
6
6
 
7
7
  Refactor > Rename...
8
8
 
9
- でできると思います。最近のちゃんとしたIDEには多分ついている気がするので「リファクタリング」というキーワードを覚えておくとよいと思います。
9
+ でできると思います。最近のちゃんとしたIDEには多分ついている気がするので「リファクタリング」というキーワードを覚えておくとよいと思います。
10
+
11
+ ---
12
+ 追記:回答コメントを拝見して気づいたこと
13
+
14
+ a.b.c => aa.bb.ccへのパッケージ変更ですが・・・AndroidStudioのプロジェクトビューはこういう感じになっていますね
15
+
16
+ ```
17
+ (1) aの下にパッケージbしかなくbの下にもcしかない場合のプロジェクトビュー
18
+
19
+ + a.b.c => package階層が一つのノードとして表示されるが・・・
20
+
21
+ (2) aの下に別のパッケージb2がありbの下に別のソースb.javaがある場合
22
+
23
+ + a
24
+ + b
25
+ + c <== (1)でのa.b.cはこのノードを指す
26
+ + b.java
27
+ + b2
28
+ ```
29
+ (2)のケースではa, b, cをそれぞれ選択することができてRefactorでaをrenameしたりmoveしたりできますが(1)の状態はa, bノードを表示されずcパッケージだけをa.b.cとして表示するという仕様です。ゆえにa.b.cをrenameしようとしても「cをどうrenameするか」という操作と見做されます。
30
+
31
+ パッケージのRefactoring(rename/move etc.)はあくまで一つのパッケージ階層に対してしか行えないのでそれを踏まえて操作を考えるというべきでした。
32
+
33
+ 最初に戻ってa.b.c => aa.bb.ccにするなら最小でも3つの操作が必要だと思います。
34
+ (m1) aa.bbを新規に追加
35
+ (m2) a.b.cを選びRefactor>Moveでaa.bbへ移動
36
+ (m3) aa.bb.cをRefactor>Renameでaa.bb.ccへ変更
37
+
38
+ トップ階層のパッケージjp.co.company.facility => com.company.facilityに変更するといった場合も上記と同様の考え方でcompanyパッケージをjp.co=>comへ移動としたいのですが、そのままではcompanyパッケージを操作できないので
39
+
40
+ (m1) jp.coの下に何かのソースを追加
41
+  これも直接はできないので一旦jp.co.company.facilityの下にダミーのソースを追加してからそのソースをjp.coにMoveすると前述の(1)から(2)に表示が変わるのでcompanyパッケージの操作ができるようになります
42
+ (m2) comパッケージを追加
43
+ (m3) jp.co.companyをcomパッケージへ移動
44
+ 表示上はcompanyノードが表示されているはずなのでそれを選びRefactor>Moveでcomの下へ移動する
45
+ (m4) ダミーのソースを削除
46
+
47
+ こんな手順になると思います。ポイントはあくまでRefactorにより「全ての整合性を取った状態でプロジェクト構造を変更する」ことですが、パッケージ階層の変更は複数のRefactor操作の組み合わせとする必要があることを踏まえ、操作手順を考えないといけないみたいです。