Коли слід обрізати дані?


11

Я стажуюсь, вивчаю тонни про галузь поза межами наукових шкіл.

Одне, про що я думав сьогодні, - це обрізання матеріалів.

На одній стороні монети я не хочу, щоб користувач / реалізатор постійно отримував несподівані результати, оскільки їх вхід мав занадто багато пробілів, тому мені потрібно постійно обробляти введення користувача після кожного виклику функції.

Але в той же час, якщо я створюю бібліотеку API для внутрішнього використання тут, в офісному проміжному / провідному пробілі, це може бути вирішальним для результатів.

Тоді є випадки, коли я не впевнений, чи буде пробіл важливим чи ні.

Велике питання для мене полягає в тому, що я знаходжу ПОСЛІДНО дзвінки .trim () скрізь у своєму коді.

Хтось має якісь поради або правила, або просто думки про те, як впоратися з певними ситуаціями?


1
Коли ви говорите тут "API", ви говорите про написання бібліотеки чи про якусь внутрішню веб-службу? Це важлива деталь.
Sean McSomething

Це насправді бібліотека, яку я будую (дякую)
TacticalMin

Це звучить самовідповіддю ... якщо ви не впевнені, що пробіл не потрібен, ви, ймовірно, не повинні обробляти текст.
GrandmasterB

Відповіді:


13

Ніколи не обрізайте пробіли довільно в API.

Єдина причина коли-небудь обрізати пробіл просто як функція інтерфейсу. Люди часто залишають пробіли в кінці введених полів, але не бачать, що вони це зробили. Повернути повідомлення досить заплутано, тому - за винятком рідкісного випадку, коли користувач може ввести "A", щоб означати щось інше, ніж "A" - зазвичай ви можете викопати будь-які непотрібні пробіли.

Але комп’ютери не додають пробілів помилково, вони додають пробіли, тому що програміст сказав їм, і якщо вони порушують вашу реалізацію API, ви повинні повернути помилку на адресу розробника. Якщо їх немає, то просто їх слід використовувати.

Звичайно, існує ймовірність, що ці дані надходять від людини через додаток, але це проблема розробника програми, а не ваша. Знову ж таки, якщо вони збираються створити вам проблему, відхиліть їх; якщо ні, прийміть їх. Не обрізайте їх і припускайте, що ваш споживач знає, що це станеться.


Дякуємо, що знайшли час для відповіді. Ви підвели підсумки того, що всі інші, здається, говорять.
TacticalMin

3

Одним з корисних принципів є YAGNI : "Вам це не потрібно". Що це означає, що, коли у вас є ідея для функції , які ви не впевнені , що на насправді потрібно, не реалізувати його , поки ви НЕ впевнені , що вам це потрібно. Потім, коли потреба в цьому стане очевидною, повинні бути очевидними і місця у вашій кодовій базі, де це насправді необхідно.


1

Це залежить, для чого буде використовуватися вхід. Якщо ви обрізаєте пробіл з даних, які були введені як пошуковий термін, то я можу зрозуміти, чому ви це робите. Це гарна звичка вчитися не довіряти даним, які надходять у систему, я думаю, головним чином, про SQL Injection, але є й інші аспекти.

Можливо, вам не потрібно буде завжди обрізати дані, але ви обов'язково повинні завжди перевіряти введення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.