アリババJava開発規約を分析する

4846 ワード

アリババJava開発規約を分析する
contents
  • なぜ
  • を学ぶのか
  • プログラミング規約
  • P 3 C IDEAカード
  • why-use
    一般的に少し大きい会社は、システムアーキテクチャの設計が完了した後、符号化作業が開始される前に、自社の会社に属しているか、自社のチームが与えた符号化規範文書を提供しなければならないことを知っています.すべての符号化スタッフはその規範を守らなければなりません.規範の不統一がもたらす不要なコミュニケーション問題を避けなければなりません.別の会社に行くとき、また別のスタイルの異なるコード規範を学ぶかもしれませんが、アリは私たちに標準を持ってきました.間もなく、国内のjava開発会社の規範を統一し、Googleを破って、世界のjava開発者の規範と呼ばれていると信じています.
    良いプログラミング規範の役割を身につける(なぜプログラミングスタイルを学び、身につけるのか)
  • の良い符号化規範は、1つのソフトウェアのメンテナンスコストをできるだけ削減することができ、ほとんどのソフトウェアがなく、そのライフサイクル全体で、最初の開発者によってメンテナンスされています.
  • の良い符号化規範はソフトウェアの可読性を改善することができ、開発者にできるだけ早く徹底的に新しいコードを理解させることができる.
  • の良い符号化規範はチーム開発の協力効率を最大限に向上させることができる.
  • 長期の規範的な符号化は開発者に良い符号化習慣を身につけることができ、さらに厳格な思考を鍛えることができる.

  • アリjava仕様の役割(なぜアリのjava符号化仕様を学ぶのか)
    先日、5月17日、唯一の中国代表として、アリババはJavaグローバル管理組織Java Community Process(JCP)の最高執行委員会に招待された.
    JCPは開放的な国際組織で、Java開発者と授権者から構成され、主な職能はJava技術規範の発展と更新である.
    アリが今回JCP執行委員会に選ばれたのは、主に電子商取引、金融、物流などの分野で蓄積された豊富なJava応用シーンの実践によるもので、アリババに反復的な革新を通じて、最先端のJava技術を実際の生産環境に応用する機会を与えたからだ.また、アリは昨年、世界向けに発売した「アリババJava開発規約」のスキャンプラグインで、Eclipseなどの有名な開発ツールでJAVAコード検出を行うことができ、Javaプログラミング言語規範開発のプロセスを大きく推進した.
    これまでJCP組織の中で、Java標準規範の制定は主にシリコンバレー大手が主導してきたが、今回のアリババの加入は、国内の開発者、企業にとって、Java開発の過程で誤りと効率をより高くし、国内の開発基準は世界のルールになるだろう.
    プログラミング規約
  • 命名規則
  • 定数定義
  • OOP規約
  • 命名規則
  • はスペースインデントを採用し、tab文字の使用を禁止します.

  • これはGoogleとaliが一致したルールですが、前者はtabが2つのスペースに対応し、後者は4つのスペースに対応しています.tabキーを提唱しないのは、IDEによってtabキーの「翻訳」のデフォルトが異なり、プログラマーの個性化によって同じコードのフォーマットが混乱しやすいためです.
  • POJOクラスのブールタイプの変数にisを付けないでください.そうしないと、フレームワーク解析の一部でシーケンス化エラーが発生します.

  • 基本データ型boolean isSuccessとして定義されます.の属性は、その方法もisSuccess()であり、RPCフレームワークは逆解析の際、対応する属性名がsuccessであるとして属性が取得できず、異常を投げ出す.
  • パッケージ名は小文字を統一的に使用し、ポイントセパレータの間に自然な意味を持つ英語の単語が1つしかありません.パッケージ名は単数形式を統一して使用し,クラス名に複数の意味があれば複数形式を使用することができる.

  • ハードコーディングの問題を回避することは、プログラマー一人一人が備えるべき基本的な素養であり、ハードコーディングによる可読性の悪さ、メンテナンスの困難などの問題である.
  • インタフェースクラスのメソッドと属性は、修飾記号(publicも加算)を追加せず、コードの簡潔性を維持する
  • .
    正例:インタフェースメソッド署名:void f();反例:インタフェースメソッド定義:public abstract void f();
  • Services/DOOレイヤメソッド命名規則1)単一オブジェクトを取得する方法getをプレフィックスとする.2)複数のオブジェクトを取得する方法listを接頭辞とする.3)統計値を取得する方法はcountを接頭辞とする.4)挿入方法はsave(推奨)またはinsertで接頭辞をする.5)削除の方法はremove(推奨)またはdeleteを接頭辞とする.6)修正方法はupdateで接頭辞をする.

  • 定数定義
  • 定数クラスを使用してすべての定数を維持しないでください.定数機能によって分類し、別々に維持する必要があります.たとえば、キャッシュに関連する定数はクラス:CacheConstsの下に配置されます.システム構成に関する定数は、クラス:ConfigConstsの下に配置されます.

  • 説明:大きくて完全な定数クラスはctrl+fでなければ修正された定数に位置決めされず、理解に不利であり、メンテナンスにも不利である.
    OOP規約
  • 同じパラメータタイプ、同じビジネスの意味で、Javaの可変パラメータを使用して、Objectを使用することを避けることができます.

  • 説明:可変パラメータは、パラメータリストの最後に配置する必要があります.(可変パラメータプログラミングをできるだけ使わないことを提唱する)effective javaでは可変パラメータの使用を慎むことを提唱しており、性能を重視する場合、可変パラメータを使用するには特に注意が必要であり、可変パラメータメソッドの呼び出しのたびに配列割り当てと初期化が行われる.このコストに耐えられないが、可変パラメータの柔軟性が必要であることを経験的に判断すれば、望み通りに実現できるモデルもあります.メソッドの95%の呼び出しに対して3つ以上のパラメータがあると仮定すると、変更メソッドの5つのリロードが宣言され、各リロードメソッドには0~3つの一般的なパラメータがあり、パラメータの数が3つを超えると、可変パラメータメソッドが使用されます.たとえば、次のようになります.
    public void foo(){}
    public void foo(int a1){}
    public void foo(int a1,int a2){}
    public void foo(int a1,int a2,int a3){}
    public void foo(int a1,int a2,int a3,int ... rest){}
    

    この方法はあまり適切ではないかもしれませんが、必要になると助かります.
    要するに,パラメータ数が不定の方法を定義する場合,可変パラメータ法は便利な方法であるが,過度に乱用されるべきではない.適切に使用しないと、混乱した結果になります.
  • 構築メソッドにはビジネスロジックの追加は禁止されています.初期化ロジックがある場合はinitメソッドに置いてください.

  • 初期化方法のパラメータは、異なるパラメータによって異なる初期化方法を体現し、さらに異なるコンストラクタのリロードから初期化方法の異なるパラメータに伝達され、論理が明確で、コード多重化の目的を達成することがjava.lang.threadで十分に体現され、thread類のコンストラクタでは簡単にinit()方法を呼び出し、具体的なことはすべてinit方法で、異なるコンストラクタのリロードはinitの異なるパラメータに伝達されるだけです
    public Thread() {
            init(null, null, "Thread-" + nextThreadNum(), 0);
        }
    public Thread(Runnable target) {
            init(null, target, "Thread-" + nextThreadNum(), 0);
        }
    Thread(Runnable target, AccessControlContext acc) {
            init(null, target, "Thread-" + nextThreadNum(), 0, acc);
        }
    ...
    ...
    
  • POJOクラスはtoStringメソッドを書かなければなりません.ツールクラスsource>generate toStringを使用する場合、別のPOJOクラスが継承されている場合は、super.toStringを先に追加することに注意してください.
  • クラス内のメソッド定義順序は、公開メソッドまたは保護メソッド>プライベートメソッド>getter/setterメソッドの順です.

  • 説明:共通の方法はクラスの呼び出し者とメンテナンス者が最も関心を持っている方法であり、最初の画面が最も優れている.保護方法はサブクラスの関心にすぎないが、「テンプレート設計モード」の核心方法である可能性がある.私有方法の外部は一般的に特に関心を必要とせず、ブラックボックスの実現である.メソッド情報の価値が低いため、すべてのサービスとDAOのgetter/setterメソッドはクラスの最後に配置されます.
    プラグイン
    P 3 Cは先進的な対潜海上パトロール機で、オリオン座と訳され、海神の子アリ雲栖大会の最新オープンソースのJavaコード規範検査ツールp 3 cであり、CheckStyle、FindBugsの総合に似た役割を果たし、「アリババJava開発マニュアル」の有効な補充であり、アリはコード規範検査プラグインをp 3 cと命名した.
    Download P 3 C IDEA pluginインストール手順
  • ツールバーFile
  • をクリック
  • Settings
  • をクリック
  • Plugin
  • をクリック
  • Install Plugin From disk
  • をクリック
  • ポップアップダイアログボックスで、ダウンロードしたプラグイン
  • を見つけます.
    p 3 c、checkstyleはコード規範検出ツールであり、java開発者のコード品質の向上を助け、菜鳥とカレーのコード差を効果的に縮小し、少数のJava開発者がインストールすべきプラグインである.