web-dev-qa-db-ja.com

ユーザーに構成、名前=値のペアの編集を許可するときに空白を処理するためのベストプラクティスは何ですか?

たとえば、悪名高いパス変数をユーザーに定義させます。 apppath = C:\Program Files\Appをどのように解釈しますか?

これは、空白を無視するためにプログラミング言語が採用している慣習のようであり、読みやすくするために等号の前後に残しますが、アプリケーションでは空白を含む有効な変数値である可能性があります(これは接尾辞です)。

キーにも空白を含めることができますか?

アプリケーションの一般的なベストプラクティスは何ですか?私が持っている場合:

key-example = value-example

キーを"key-example"または"key-example "と解釈し、値を"value-example"または" value-example"と解釈する必要がありますか?

8
Val

userとして、等号の両側の空白がキーの値や値を変更するとは思わない。 nix.SEに関するこの関連質問 も参照してください。状況がどれほど混乱する可能性もあります。

ユーザーにとって難しくしないでください。キーと値の両方から空白を削除してください。先頭の空白に実際の使用例がある場合は、ユーザーにキーまたは値を引用符で囲ませます。

14
dotancohen

アプリのルールを定義するのはあなた次第です。

たとえば、次のように定義できます。

  • 等号の前後の空白は無視され、

  • キー内の空白は禁止されています、

  • 値内の空白は、値が引用符で囲まれている場合にのみ使用できます。

    say-hello = Hello, World!
    

    禁止されていますが、

    say-hello = "Hello, World!"
    

    許可され、空白の接頭辞を持つことも可能になります:

    say-hello = "    Indentation is sweet."
    

フォーマットの定義は複雑な作業になる場合があります。例えば:

  • どのように引用符をエスケープしますか?

  • 引用符をエスケープするために使用するエスケープ文字をどのようにエスケープしますか?

  • 空の値をどのように処理しますか?

  • キーの最大長は?値はどうですか?

  • 複数行の値をどのように処理しますか?

  • スペース以外の空白のUnicode文字(改行しないスペース文字など)はどうですか?

  • Unicodeはどうですか 通常画面に表示されない文字 ?たとえば、UnicodeカテゴリCfまたはZlをどのように扱いますか?

  • キーで使用できる文字は何ですか?たとえば、次のとおりです。

    '
    

    有効なキー?

  • 次の行でうまくいきますか?¹

    say-hello ꘌ "Hello, World!"
    

    ヒント:等号は等号ではなく、文字0xa60c(Vai音節延長文字)です。等号の代わりにこの記号を使用する人はほとんどいませんが、より頻繁に発生するのは、Microsoft Wordからのコピーと貼り付けです(引用符を注意深く確認してください)。

    say-hello = “Hello, World!”
    
  • 等.

canフォーマットを定義し、正確かつ冗長に説明することが完全に確実でない限り、これが理由です既存のフォーマットを使用してください

[〜#〜] json [〜#〜]または[〜#〜] xml [〜#〜] は、ほぼすべてのプログラミング言語で使用できる一般的に使用される形式です。データベースを使用して、基礎となる形式を抽象化することもできます。 たとえば、Redisは、Key-Valueストアの一般的なソリューションです。


¹Chrome Windowsを使用しているユーザーは、おそらく四角に疑問符が表示されます。他のブラウザやChromeでは、文字は等号のように表示され、簡単に誤解を招く可能性があります。唯一の視覚的な違いは、水平バー間のスペースにわずかな違いがあることです。

11