プラグイン開発を調べていたところ、Discourse Translator のようなケースでは、findAncestorModel() を通じてウィジェットモデルを取得した後、処理を進める前に結果が存在するか確認していることに気づきました。ソースコードでも同様の処理が見られます。例:
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
しかし、祖先モデルの存在を確認しないケースもあります。数行下:
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
findAncestorModel() の結果が存在する確実性はどうでしょうか?これは私たちがいるウィジェットに依存するのでしょうか、それとも、ポストメニューのように存在しない可能性が極めて低いように思える状況であっても、null のレスポンスを常に処理するのが良いプラクティスなのでしょうか?