Jestem stażystą, ucząc się ton o branży poza środowiskiem akademickim.
Jedną z rzeczy, o których myślałem dzisiaj, było przycinanie danych wejściowych.
Po jednej stronie monety nie chcę, aby użytkownik / implementator stale odbierał nieoczekiwane wyniki, ponieważ ich dane wejściowe miały zbyt wiele spacji, dlatego muszę stale przycinać dane wejściowe użytkownika po każdym wywołaniu funkcji.
Ale jednocześnie Jeśli tworzę bibliotekę API do użytku wewnętrznego tutaj w biurze, końcowe / białe znaki mogą być kluczowe dla wyników.
Są też przypadki, w których nie jestem pewien, czy białe znaki będą ważne, czy nie.
Dużym problemem jest dla mnie to, że stale wzywam .trim () wszędzie w moim kodzie.
Czy ktoś ma jakieś praktyczne wskazówki lub po prostu przemyślenia, jak radzić sobie z pewnymi sytuacjami?
źródło
Odpowiedzi:
Nigdy nie przycinaj spacji arbitralnie w interfejsie API.
Jedynym powodem arbitralnego przycinania białych znaków jest funkcja interfejsu użytkownika. Ludzie często opuszczają spacje na końcu wprowadzonych pól, ale nie widzą, że to zrobili. Zwracanie wiadomości jest dość mylące, więc - z wyjątkiem rzadkiego przypadku, gdy użytkownik może wpisać „A” w celu oznaczenia czegoś innego niż „A” - zwykle można porzucić dowolne bezużyteczne spacje.
Ale komputery nie dodają spacji przez pomyłkę, dodają spacje, ponieważ programista im to nakazał, a jeśli zepsują implementację interfejsu API, powinieneś zwrócić błąd programistom. Jeśli nie, to powinieneś ich po prostu użyć.
Istnieje oczywiście możliwość, że dane te pochodzą od człowieka za pośrednictwem aplikacji, ale to jest kwestia twórcy aplikacji, a nie twojej. Ponownie, jeśli spowodują problem, odrzuć je; jeśli nie, zaakceptuj je. Nie przycinaj ich i zakładaj, że konsument wie, że tak się stanie.
źródło
Jedną przydatną zasadą jest tutaj YAGNI : „Nie będziesz go potrzebował”. Co to znaczy, że kiedy masz pomysł na cechę, że nie jesteś pewna, że rzeczywiście trzeba, nie wdrożyć go, dopóki nie są na pewno potrzebne. Następnie, gdy zajdzie taka potrzeba, miejsca w bazie danych, w których jest to rzeczywiście konieczne, powinny być również widoczne.
źródło
Zależy, do czego dane wejściowe będą używane. Jeśli przycinasz spacje z danych wprowadzonych jako wyszukiwane hasło, rozumiem, dlaczego to robisz. Dobrym nawykiem jest nauczyć się nie ufać danym wchodzącym do systemu, myślę przede wszystkim o SQL Injection, ale są też inne aspekty.
Być może nie zawsze trzeba przycinać dane wejściowe, ale zdecydowanie należy zawsze sprawdzać dane wejściowe.
źródło