web-dev-qa-db-ja.com

いつ入力をトリミングする必要がありますか?

私は学外の業界についてたくさんのインターンを学びます。

今日私が考えたのは、入力のトリミングです。

コインの片側では、入力にスペースが多すぎるためにユーザー/実装者が予期しない結果を常に受け​​取ることを望まないため、すべての関数呼び出しの後にユーザー入力を常にトリミングする必要があります。

しかし、同時に、 API このオフィスの末尾/先頭の空白で内部的に使用するライブラリは、結果にとって非常に重要です。

次に、空白文字が重要かどうかわからない場合があります。

私にとっての大きな問題は、コード内のどこにいても.trim()が常に呼び出されていることです。

誰かが特定の状況を処理する方法についてのヒント/経験則または単なる考えを持っていますか?

11
TacticalMin

APIで任意に空白を削除しないでください。

ホワイトスペースを任意に切り詰める唯一の理由は、UI機能としてです。人々は頻繁に入力されたフィールドの最後にスペースを残しますが、そうしたことがわかりません。メッセージを返すのはかなり混乱するので、ユーザーが「A」以外を意味するために「A」を入力するというまれなケースを除いて、通常、不要なスペースを捨てることができます。

しかし、コンピューターが誤ってスペースを追加することはありません。プログラマーが指示したため、スペースが追加されます。API実装に違反した場合は、開発者にエラーを返します。そうでない場合は、それらを使用する必要があります。

もちろん、このデータがアプリケーションを介して人間からのものである可能性がありますが、それはアプリケーション開発者の問題であり、あなたの問題ではありません。繰り返しになりますが、問題が発生する場合は拒否してください。そうでない場合は、それらを受け入れます。それらをトリミングせず、消費者がそれが起こることを知っていると仮定しないでください。

13
pdr

ここで役立つ原則の1つは [〜#〜] yagni [〜#〜] :「あなたはそれを必要としない」つまり、実際に必要かどうかわからない機能のアイデアがある場合は、必要になるまで必要になるまで実装しないでください。 。次に、その必要性が明らかになると、実際に必要なコードベースの場所も明らかになります。

3
Mason Wheeler

入力が何のために使用されるかによります。検索語として入力されたデータから空白を削除する場合は、なぜそうしているのか理解できます。システムに入ってくるデータを信頼しないことを学ぶのは良い習慣です。私は主にSQLインジェクションについて考えていますが、他の側面もあります。

入力を常にトリミングする必要はないかもしれませんが、常に入力をチェックする必要があります。

1