36

私はここ数年、リモート サーバー上の構成やスクリプトを編集するために vim を使用していました。数週間前、私は次のステップに進み、Sublime Text 2 以外の通常のエディターとして (Mac)vim を使用しようと決心しました。今、最初のプラグインを作成したいところまで来ました。

私のプラグインは、プラグインの特定のプロパティを調整するためにユーザーが割り当てることができる最大 16 個のグローバル変数を定義します。ユーザーが特定の変数に自分の値を既に割り当てているかどうかを確認する最もエレガントな方法 (主観的かもしれません) は何かを自問しました。他のさまざまなプラグインを調べたところ、これまでに見た「パターン」は常に次のようです。

if !exists("g:pluginname_setting")
    let g:pluginname_setting="default"
endif

それは簡単で簡単なようです。しかし、私は常に同じコードを何度も繰り返していました。vi(m) はかなり長い間存在しているので、人々がプラグインを作成するために多くの方法を試し、ある種の「ベスト プラクティス」が開発されたと確信しています。例として。それにもかかわらず、関数を呼び出してすべてのプラグイン設定を含むディクショナリに入力し、ディクショナリを繰り返し処理してキーをチェックし、ユーザーが自分の個人的な設定を既に定義しているかどうかを確認する方がエレガントではないでしょうか? ìf !exists()それは良い考えでしょうか、それともその考えをやめてアプローチに固執するべきでしょうか?

4

2 に答える 2

27

これif exists(...)は確かに標準的な構成イディオムであり、進むべき道です。もちろん、重複を減らすために少しメタプログラミングを行うことができます ( のようなものfunction! s:SetDefault( varname, default ))。一部のプラグインはそれを行います。

一方、プラグインが非常に複雑な問題 (テキスト エディターで?!) を処理しない限り、16 個の構成変数は確かにハイエンドです。それらすべてを文書化し、さまざまな組み合わせをテストする労力を考慮する必要があります。最初はより単純な縮小アプローチから始めて、ユーザーのフィードバックに基づいて進化させる方がよいかもしれません。

于 2013-04-07T15:43:40.427 に答える