コーディングベストプラクティスシリーズの1つ

4437 ワード

詳細
  • 空のポインタを避ける:
    /**
      *  
      *
      * @param onlineProfile
      * @return  true, false
      */
    private boolean isAppHasRent(AppOnlineProfile onlineProfile) {
        return onlineProfile == null ? false : "y".equals(onlineProfile.getHasRent());
    }
    
     
  • 集合List変換配列[]
    /**
      *  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;
    }
    
     
  • メソッドのリロード、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ベース)
    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」を選んで、この方法をインタフェースの中の方法に昇格させて、具体的に私の現場のプレゼンテーションを見ることができて、みんなに大胆にこの「芸術」を再構築して、みんなに“快感”をもたらすことができます