Skip to content

Commit

Permalink
feat(ESLint): 向き不向きについてを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
azu committed Sep 3, 2015
1 parent c977902 commit c03db72
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion ja/ESLint/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,28 @@ add(1, 3);
このようにして、ルールは `context` という与えられたものだけを使うので、ルールができることを制御しやすくなり、
ルールがMyLinter本体の実装の詳細を知らなくても良くなります。


## どういう用途に向いている?

このプラグインアーキテクチャはPub/Subパターンを上手くつかっていて、
ESLintのように与えられたコードを読み取ってチェックするような使い方に向いています。

つまり、read-onlyなプラグインのアーキテクチャとしてはパフォーマンスも期待できると思います。

また、ルールは `context` という与えられたものだけを使うようになっているため、
ルールと本体のコードが密結合になりにくく、本体がプラグインが行える範囲を制御しやすいと言えます。

## どういう用途に向いていない?

逆に与えられたコード(AST)を書き換えするようなことをする場合には、
プラグインが同時に処理を行うためプラグイン間で競合するような変更がある場合に破綻してしまいます。

そのため、この仕組みに加えてもう一つ抽象レイヤーを設けないと対応は難しいと思います。

つまり、read-writeなプラグインのアーキテクチャとしては単純にこのパターンだけでは難しい部分が出てくるでしょう。

## この仕組みを使ってるもの

- [azu/textlint](https://github.com/azu/textlint "azu/textlint")
- テキストやMarkdownをパースしてASTにしてLintするツール

## エコシステム

0 comments on commit c03db72

Please sign in to comment.