コーディングベストプラクティスシリーズの1つ
詳細空のポインタを避ける:
集合List変換配列[] 列挙の遍歴
メソッドのリロード、HowToDo?
まず、クラスでリロードが必要なメソッドを選択します(選択したメソッドがインタフェース宣言でメソッドが実装されている場合は、質問ボックスが表示され、Yesが選択されます)、メニューバー「Refactor->Change Method Signature...」を通じて、
あるいはコンテキストメニュー「Refactor->Change Method Signature...」、またはショートカット「Alt+Shift+C」をクリックすると、「Change Method Signature」ダイアログボックスが表示されます.
[パラメータ]タブ(既定値)で、右側の[Add]ボタンをクリックしてパラメータを追加します.たとえば、文字列パラメータを追加できます.TypeはString、NameはcorpId、デフォルトはnullです.
(Typeが数値の場合、0または任意の空の概念を表すことができる値)をチェックし、チェックボックス「Kepp original method as delegate to change method」をオンにし、「Preview」ボタンをクリックして結果をプレビューします.
あるいは「OK」を直接クリックして再構築が完了するまでクリックします.
再構築の結果に注目してください.インタフェースにもメソッド署名が自動的に追加されていることに気づきます.また、元のインタフェース宣言のメソッド実装はこの新しいメソッドに委託されています.これにはどのようなメリットがあるのでしょうか.
もちろん、@Deprecatedの元のメソッドをエンコードするか、以前の「Change Method Signature」ダイアログボックスで「Marks as deprecated」チェックボックスにチェックマークを付けることもできます.
この@Deprescatedメソッドが将来必要でない場合は、元のメソッド「Inline」を削除できます.
アサーションの使用(org.springframework.util.Assertベース)
クラスを先に書きますか、それともインターフェースを先に書きますか.
多くの学生が先にインタフェースを書いてから、このインタフェースの実装クラスを書くのは、ほとんどの人のやり方だと思います.
私の考えはとても特別で、私は先にクラスを書いて、それから更にこの“芸術”を再構築することを通じて、もし必要があればやっと“抽出”して“インタフェース”になって、どのようにインタフェースを抽出しますか?
まず、クラス名を選択し、メニューバー「Refactor->Extract interface...」から、またはコンテキストメニュー「Refactor->Extract interface...」、[Extract interface]ダイアログボックスを開きます.
抽出インタフェースが格納されている位置(将来「Move」を適切な位置にできる)に注目せず、「Interface name」(パッケージ名を入力しない)を直接入力し、「Preview」ボタンをクリックするか、「OK」ボタンをクリックしてインタフェースの抽出を完了します.
既存のインタフェースにいくつかのメソッドを追加する必要がある場合、または追加するメソッドが実装クラスに存在する場合、どうすればいいですか?インタフェースコードにメソッドを手動で追加して、これらのインタフェース宣言を実現するのか、実際にはほとんどの学生がそうしています.
私はそうではありません!私は私达の利器の“Eclipse IDE”を利用することができて、私はやはり【実现】类から始めて、新しい方法、あなたは直接新しい方法を书くことができて、もしすでに存在したら、书く必要はありません.
次にインタフェースの実装クラスで、インタフェースとして露出したいメソッドを選択し、メニューバー「Refactor->Pull up...」で、あるいはコンテキストメニュー「Refactor->Pull up...」、「Pull Up」ダイアログ・ボックスが表示されます.
「destination type」と「members to pull up」を選んで、この方法をインタフェースの中の方法に昇格させて、具体的に私の現場のプレゼンテーションを見ることができて、みんなに大胆にこの「芸術」を再構築して、みんなに“快感”をもたらすことができます
/**
*
*
* @param onlineProfile
* @return true, false
*/
private boolean isAppHasRent(AppOnlineProfile onlineProfile) {
return onlineProfile == null ? false : "y".equals(onlineProfile.getHasRent());
}
/**
* Id
*
* @param appSubscList
* @return Id
*/
private String[] getUserIds(final List appSubscList) {
List resultList = new ArrayList(appSubscList.size());
for (AppSubsc appSubsc : appSubscList) {
resultList.add(appSubsc.getUser().getUserId());
}
return resultList.toArray(new String[resultList.size()]);
}
/**
* LongId, LongId
*
* @param appSubscList
* @return LongId
*/
private List setLongIds(final List appSubscList) {
List resultList = new ArrayList(appSubscList);
UserIdentifier[] userIdentifiers = userService.getUserIdentifiers(getUserIds(appSubscList));
if (userIdentifiers != null) {
for (int i = 0; i < userIdentifiers.length; i++) {
final String longId = userIdentifiers[i].getLongId();
for (DomainPrefix domainPrefix : DomainPrefix.values()) {
if (longId.startsWith(domainPrefix.name())){
resultList.get(i).getUser().setLongId(longId.substring(domainPrefix.name().length()));
break;
}
}
}
}
return resultList;
}
まず、クラスでリロードが必要なメソッドを選択します(選択したメソッドがインタフェース宣言でメソッドが実装されている場合は、質問ボックスが表示され、Yesが選択されます)、メニューバー「Refactor->Change Method Signature...」を通じて、
あるいはコンテキストメニュー「Refactor->Change Method Signature...」、またはショートカット「Alt+Shift+C」をクリックすると、「Change Method Signature」ダイアログボックスが表示されます.
[パラメータ]タブ(既定値)で、右側の[Add]ボタンをクリックしてパラメータを追加します.たとえば、文字列パラメータを追加できます.TypeはString、NameはcorpId、デフォルトはnullです.
(Typeが数値の場合、0または任意の空の概念を表すことができる値)をチェックし、チェックボックス「Kepp original method as delegate to change method」をオンにし、「Preview」ボタンをクリックして結果をプレビューします.
あるいは「OK」を直接クリックして再構築が完了するまでクリックします.
再構築の結果に注目してください.インタフェースにもメソッド署名が自動的に追加されていることに気づきます.また、元のインタフェース宣言のメソッド実装はこの新しいメソッドに委託されています.これにはどのようなメリットがあるのでしょうか.
もちろん、@Deprecatedの元のメソッドをエンコードするか、以前の「Change Method Signature」ダイアログボックスで「Marks as deprecated」チェックボックスにチェックマークを付けることもできます.
この@Deprescatedメソッドが将来必要でない場合は、元のメソッド「Inline」を削除できます.
Assert.notNull(appSubsc, "appSubsc must not be null"); Assert.notNull(appSubsc.getUser(), "appSubsc.user must not be null");
Assert.notNull(appSubsc.getUser().getUserId(), "appSubsc.user.userId must not be null");
Assert.notNull(appSubsc.getUser().getName(), "appSubsc.user.name must not be null");
Assert.notNull(appSubsc.getApp(), "appSubsc.app must not be null");
Assert.notNull(appSubsc.getApp().getId(), "appSubsc.app.appId must not be null");
Assert.notNull(appSubsc.getApp().getIsvId(), "appSubsc.app.isvId must not be null");
Assert.hasText(appSubsc.getAppInstanceId(), "appSubsc.appInstanceId must not be empty");
多くの学生が先にインタフェースを書いてから、このインタフェースの実装クラスを書くのは、ほとんどの人のやり方だと思います.
私の考えはとても特別で、私は先にクラスを書いて、それから更にこの“芸術”を再構築することを通じて、もし必要があればやっと“抽出”して“インタフェース”になって、どのようにインタフェースを抽出しますか?
まず、クラス名を選択し、メニューバー「Refactor->Extract interface...」から、またはコンテキストメニュー「Refactor->Extract interface...」、[Extract interface]ダイアログボックスを開きます.
抽出インタフェースが格納されている位置(将来「Move」を適切な位置にできる)に注目せず、「Interface name」(パッケージ名を入力しない)を直接入力し、「Preview」ボタンをクリックするか、「OK」ボタンをクリックしてインタフェースの抽出を完了します.
既存のインタフェースにいくつかのメソッドを追加する必要がある場合、または追加するメソッドが実装クラスに存在する場合、どうすればいいですか?インタフェースコードにメソッドを手動で追加して、これらのインタフェース宣言を実現するのか、実際にはほとんどの学生がそうしています.
私はそうではありません!私は私达の利器の“Eclipse IDE”を利用することができて、私はやはり【実现】类から始めて、新しい方法、あなたは直接新しい方法を书くことができて、もしすでに存在したら、书く必要はありません.
次にインタフェースの実装クラスで、インタフェースとして露出したいメソッドを選択し、メニューバー「Refactor->Pull up...」で、あるいはコンテキストメニュー「Refactor->Pull up...」、「Pull Up」ダイアログ・ボックスが表示されます.
「destination type」と「members to pull up」を選んで、この方法をインタフェースの中の方法に昇格させて、具体的に私の現場のプレゼンテーションを見ることができて、みんなに大胆にこの「芸術」を再構築して、みんなに“快感”をもたらすことができます