Quando dovresti tagliare l'input?


11

Sto internando apprendendo tonnellate sul settore al di fuori del mondo accademico.

Una cosa a cui ho pensato oggi è stato il taglio degli input.

Da un lato della medaglia non voglio che l'utente / implementatore riceva costantemente risultati imprevisti perché il loro input ha troppi spazi, quindi ho bisogno di tagliare costantemente l'input dell'utente dopo ogni chiamata di funzione.

Ma allo stesso tempo, se sto creando una libreria API per uso interno qui in ufficio, il trailing / leader degli spazi bianchi può essere cruciale per i risultati.

Quindi ci sono casi in cui non sono sicuro se gli spazi bianchi saranno importanti o meno.

Il grosso problema per me è che mi trovo COSTANTE a chiamare .trim () ovunque nel mio codice.

Qualcuno ha qualche suggerimento / regola empirica o solo pensieri su come gestire determinate situazioni?


1
Quando dici "API" qui, stai parlando di scrivere una libreria o stai parlando di una sorta di servizio web interno? È un dettaglio importante.
Sean McSomething,

In realtà sarebbe una biblioteca che sto costruendo (grazie)
TacticalMin

Sembra una risposta automatica ... se non sei sicuro che lo spazio bianco non sia necessario, probabilmente non dovresti tagliare il testo.
GrandmasterB,

Risposte:


13

Non tagliare mai gli spazi in modo arbitrario in un'API.

L'unica ragione per tagliare arbitrariamente gli spazi bianchi è come una funzionalità dell'interfaccia utente. Le persone lasciano spesso spazi alla fine dei campi inseriti ma non possono vedere di averlo fatto. Restituire un messaggio è piuttosto confuso, quindi - tranne nel raro caso in cui un utente possa inserire "A" per indicare qualcosa di diverso da "A", di solito è possibile abbandonare qualsiasi spazio inutile.

Ma i computer non aggiungono spazi per errore, ma aggiungono spazi perché un programmatore glielo ha detto e se interrompono l'implementazione dell'API dovresti restituire un errore allo sviluppatore. In caso contrario, dovresti semplicemente usarli.

Esiste ovviamente la possibilità che questi dati provengano da un essere umano tramite un'applicazione, ma questo è il problema dello sviluppatore dell'applicazione, non tuo. Ancora una volta, se ti causeranno un problema, respingili; in caso contrario, accettali. Non tagliarli e presumi che il tuo consumatore sappia che accadrà.


Grazie per il tempo dedicato a rispondere. Hai riassunto ciò che tutti gli altri sembrano dire.
TacticalMin

3

Un principio utile qui è YAGNI : "Non ne avrai bisogno". Ciò significa che, quando hai un'idea per una funzionalità di cui non sei sicuro di aver effettivamente bisogno, non implementarla finché non sei sicuro di averne bisogno. Quindi, quando la necessità diventa evidente, dovrebbero essere evidenti anche i punti nella base di codice in cui è effettivamente necessario.


1

Dipende da cosa verrà utilizzato l'input. Se stai tagliando lo spazio bianco dai dati che sono stati inseriti come termine di ricerca, allora posso capire perché lo stai facendo. È una buona abitudine imparare a non fidarsi dei dati che entrano in un sistema, sto pensando principalmente a SQL Injection ma ci sono anche altri aspetti.

Potrebbe non essere necessario tagliare sempre l'input ma sicuramente dovresti sempre controllare l'input.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.