Когда вы должны обрезать ввод?

11

Я стажер, изучающий тонны об индустрии за пределами академии.

Одна вещь, о которой я подумал сегодня, это обрезка входных данных.

С одной стороны, я не хочу, чтобы пользователь / разработчик постоянно получал неожиданные результаты, потому что их ввод имел слишком много пробелов, поэтому мне нужно постоянно обрезать ввод пользователя после каждого вызова функции.

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

Тогда есть случаи, когда я не уверен, будут ли пробелы важны или нет.

Большая проблема для меня заключается в том, что я ПОСТОЯННО вызываю .trim () везде в моем коде.

У кого-нибудь есть какие-либо советы / практические советы или просто мысли о том, как справляться с определенными ситуациями?

TacticalMin
источник
1
Когда вы говорите «API» здесь, вы говорите о написании библиотеки или о каком-то внутреннем веб-сервисе? Это важная деталь.
Шон МакSomething
На самом деле это будет библиотека, которую я создаю (спасибо)
TacticalMin
Это звучит как автоответчик ... если вы не уверены, что пробел не нужен, вам, вероятно, не следует обрезать текст.
GrandmasterB

Ответы:

13

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

Единственная причина когда-либо произвольно обрезать пробелы - это возможность пользовательского интерфейса. Люди часто оставляют пробелы в конце введенных полей, но не могут видеть, что они сделали это. Возвращать сообщение довольно непонятно, поэтому - за исключением редкого случая, когда пользователь может ввести «А», что означает что-то отличное от «А», - вы обычно можете отказаться от любых бесполезных пробелов.

Но компьютеры не добавляют пробелы по ошибке, они добавляют пробелы, потому что программист сказал им, и если они нарушают вашу реализацию API, вы должны выбросить ошибку разработчику. Если они этого не делают, вы должны просто использовать их.

Конечно, существует вероятность того, что эти данные поступают от человека через приложение, но это проблема разработчика приложения, а не ваша. Опять же, если они собираются вызвать у вас проблемы, отклоните их; если нет, примите их. Не обрезайте их и предполагайте, что ваш потребитель знает, что это произойдет.

прецизионный самописец
источник
Спасибо, что нашли время ответить. Вы подвели итог тому, что, кажется, говорят все остальные.
TacticalMin
3

Один полезный принцип здесь - это ЯГНИ : «Тебе это не нужно». Это означает, что, когда у вас есть идея для функции, которая, на самом деле, вам не нужна, не реализуйте ее, пока не убедитесь, что она вам нужна. Затем, когда необходимость в этом становится очевидной, места в вашей кодовой базе, где это действительно необходимо, также должны быть очевидны.

Мейсон Уилер
источник
1

Это зависит от того, для чего будет использоваться вход. Если вы удаляете пробелы из данных, введенных в качестве поискового запроса, я могу понять, почему вы это делаете. Это хорошая привычка учиться не доверять данным, поступающим в систему, я думаю в первую очередь об SQL-инъекции, но есть и другие аспекты.

Возможно, вам не нужно всегда обрезать ввод, но вы обязательно должны всегда проверять ввод.

Даниэль Холлинрейк
источник