参照)インスタンスの状態クラスフィールド(static変数)にインスタンスの状態を入れない。インスタンスフィールドはprivateにする。親クラスのフィールドには触れない。DOM要素の操作DOM要素を指定する際にはIDではなくclassやカスタムdata属性などを使う。IDは、コンポーネントが画面に常に一つしか存在しないことを保証できる時のみ利用する(1つの画面に2つ以上同じIDを置けないので)。Libraryはclassによる要素検索メソッドを多数提供しているので、classを使うことが望ましい。自分自身のDOM要素に含まれるDOM要素のみ触ることが望ましい。goog.ui.Componentに用意されたメソッドを使うことが望ましい。opt_domHelper)する。DomHelperは省略して良いが、引数で受け取る癖をつけて統一感を持たせる。この時点ではDocumentに入っていない状態かつ自分自身のDOM要素がない状態。DOMの更新は控える。子コンポーネントのインスタンスは極力この時点で作成する。コンストラクタ引数として受け取る。this.addChild(childComponent)は親子でライフサイクルを統一するためにも効果的。これによって自身がdisposeされたタイミングで自動的に子コンポーネントもdisposeされるようになる。何らかの理由によりthis.addChild()できない場合はthis.registerDisposable(anotherComponent)しておくと良い。goog.ui.Component);createDom()必ずthis.setElementInternal(element)する。this.setElementInternal(element);};canDecorate()decorateできるDOM要素に制限がある場合は、ここでそのチェックを行う。falseを返した時のエラーメッセージ(goog.ui.Component.Error.DECORATE_INVALID)は汎用的なものなので、decorateに適さない理由をデバッグログに出しておくと良い。goog.dom.TagName.DIV;};decorateInternal()必ずthis.setElementInternal(element)する。element)でも良いが、特に親クラス実装を呼び出す必要性はない。'enterDocument')してから、自クラス固有の処理を行う。'enterDocument')は必ず呼び出すこと。イベントのlistenはgoog.events.listen()ではなくthis.getHandler().listen()によって行う。これによってexitDocument時に手動でunlistenをする必要がなくなる。'exitDocument')を呼び出す。'exitDocument')は必ず呼び出すこと。enterDocument時に自身や他のオブジェクトに加えられた変更があれば、これを巻き戻す。this.getHandler().listen()で作成されたイベントハンドラは親クラス実装で自動的にunlistenされるので気にする必要はない。自クラス固有の処理を先に行うとdispose()実行時に、自クラス固有のdisposeInstance→自クラス固有のexitDocument→親クラスのexitDocument→親クラスのdisposeInstanceの順に時に処理が行われることになり、exitDocumentがdisposeInstanceに遅れて実行されてしまう。公式に推奨されている。'disposeInternal')は必ず呼び出すこと。インスタンスフィールドにある他のオブジェクトへの参照をnull代入あるいはdelete演算子により断ち切ること。this.isDisposed()が真かどうかは気にしなくて良い(偽であることを前提にして良い)。dispose()がthis.isDisposed()が偽の時のみdisposeInternal()を呼び出してくれる。need};getContentElement()子コンポーネントを追加するためのDOM要素がthis.getElement()と異なる場合のみ、このメソッドをoverrideする。日本語情報少ないので。こちらをご覧ください。