Closed io-monad closed 8 years ago
一つのルールが一つの機能を持つのはあくまで推奨(mustやshouldはないです)で、現実的にはそこまでメリットがあるかというと今のところそうでもないとは思います。
presetなら、presetの中にあるルールに対しても独立した設定値を渡せたり、公式にそういう仕組みがある(使い方統一されている)ので、ユーザーの学ぶコストがちょっとだけ下がるかもしれないぐらいの違いです。
"一つのルールが一つの機能を" というのはtextlintの話というよりもプログラミング一般に単一責任の原則があるのと同じようなものだと思っています。(textlintはルール間が共有ステートの仕組みがないのも関係ありますが。この辺はコストの問題なので状況によります)
presetに対するテスト手法は今の所ないのですが、これはユニットテスト(textlint-testerが今やってるルールに対するテスト)と統合テストという文脈の違いがあります。 それぞれテストする意味合いが違うので両方テストできるのが理想ではありますが、今のところいい方法が分かってないです。
@azu 理解しました。ありがとうございます!
こちらの textlint-rule-general-novel-style
は、一つ一つのルールだけ取り出してもあまり意味がなく、preset 化する意味は薄いように感じるので、今のところ preset 化は見送りたいと思います。 :bow:
単一責任の原則のお話は勉強になりました。設計として美しい形だと思います。 :+1:
preset のテストは統合テストになるかな、と思いまして、公式ではこういったテストはあまり推奨されていないのかな、とも考えたのですが、そういうわけではないのですね。 複数のルールが混ざった時に依存関係や fix の優先度の問題などがあるので、やはり何らかのテストがあると良いなとは思います。
https://github.com/textlint/textlint/pull/185#issuecomment-203426542
という事なので、ルールを local submodule にして
textlint-rule-preset-JTF-style
のように preset 化する? ひとつひとつ npm publish してもいいけどさすがに細かすぎる気も……公式では
textlint-rule-preset-
の prefix が推奨されてるけど、名前を変えるべき?