Słyszałem, że powiedzenie, że włączenie zerowych referencji w językach programowania jest „błędem miliarda dolarów”. Ale dlaczego? Jasne, mogą powodować wyjątki NullReference, ale co z tego? Każdy element języka może być źródłem błędów, jeśli zostanie użyty nieprawidłowo. A jaka jest alternatywa? Przypuszczam, że zamiast powiedzieć to: Customer c = Customer.GetByLastName("Goodman"); // …
W zeszłym tygodniu mieliśmy gorącą dyskusję na temat obsługi wartości NULL w warstwie usług naszej aplikacji. Pytanie dotyczy kontekstu .NET, ale będzie tak samo w Javie i wielu innych technologiach. Pytanie brzmiało: czy zawsze powinieneś sprawdzać wartości zerowe i sprawiać, by kod działał bez względu na wszystko, czy pozwolić, aby …
Jestem pewien, że projektanci języków takich jak Java czy C # znali problemy związane z istnieniem zerowych referencji (zobacz Czy referencje zerowe są naprawdę złe? ). Także implementacja typu opcji nie jest tak naprawdę dużo bardziej złożona niż odwołania zerowe. Dlaczego mimo to postanowili to uwzględnić? Jestem pewien, że brak …
Wiem, że ten temat jest nieco kontrowersyjny i po Internecie płynie wiele różnych artykułów / opinii. Niestety większość z nich zakłada, że osoba nie wie, jaka jest różnica między NULL a pustym ciągiem. Opowiadają więc historie o zaskakujących wynikach z łączeniami / agregacjami i generalnie robią nieco bardziej zaawansowane lekcje …
Przeczytałem artykuł o BBC. Jednym z podanych przez nich przykładów jest to, że osoby o nazwisku „Null” mają problemy z wprowadzeniem swoich danych na niektórych stronach internetowych. Nie podano wyjaśnienia dotyczącego napotkanego błędu. Ale o ile wiem, ciąg „Null” i faktyczna wartość Null jest zupełnie inna (z punktu widzenia bazy …
Praca nad problemem wykorzystującym formułę zmiany procentowej: percent change = 100 * [(new value - old value) / old value] Jak wyjaśniłbym tę różnicę new value or old value = NULL, zamiast 0komuś, kto może nie być programistą? Mój szef zastanawia się, dlaczego w TextBoxie jest pusty ciąg zamiast wartości, …
Eric Lippert podkreślił bardzo interesujący punkt w swojej dyskusji na temat tego, dlaczego C # używa nullraczej niż Maybe<T>typu : Ważna jest spójność systemu typów; czy zawsze możemy wiedzieć, że odwołanie, które nie ma wartości zerowej, nigdy nie jest w żadnym wypadku uważane za nieprawidłowe? A co z konstruktorem obiektu …
Załóżmy na przykład, że mam klasę Member, która ma lastChangePasswordTime: class Member{ . . . constructor(){ this.lastChangePasswordTime=null, } } którego lastChangePasswordTime może być nieobecny, ponieważ niektórzy członkowie mogą nigdy nie zmieniać swoich haseł. Ale zgodnie z Jeśli wartości zerowe są złe, co należy zastosować, gdy wartość może być znacząco nieobecna? …
Chcę dowiedzieć się o wartościach zerowych lub referencjach zerowych. Na przykład mam klasę o nazwie Apple i utworzyłem jej instancję. Apple myApple = new Apple("yummy"); // The data is stored in memory Potem zjadłem to jabłko i teraz musi być zerowe, więc ustawiłem je jako zerowe. myApple = null; Po …
Wprowadzamy system i czasami otrzymujemy słynny wyjątek NullReferenceExceptionz komunikatem Object reference not set to an instance of an object. Jednak w metodzie, w której mamy prawie 20 obiektów, posiadanie dziennika, który mówi, że obiekt jest pusty, tak naprawdę w ogóle się nie przydaje. To tak, jakby powiedzieć, kiedy jesteś agentem …
Zastanawiam się, czy powinienem bronić się przed wartością zwracaną wywołania metody, sprawdzając, czy spełniają one moje oczekiwania, nawet jeśli wiem, że metoda, którą wywołuję, spełni takie oczekiwania. DANY User getUser(Int id) { User temp = new User(id); temp.setName("John"); return temp; } CZY POWINNAM void myMethod() { User user = getUser(1234); …
Czytałem o (nie) wygodzie posiadania nullzamiast (na przykład) Maybe. Po przeczytaniu tego artykułu , jestem przekonany, że byłoby znacznie lepiej do użytkuMaybe (lub coś podobnego). Jestem jednak zaskoczony, widząc, że wszystkie „dobrze znane” imperatywne lub obiektowe języki programowania nadal używają null(co pozwala na niekontrolowany dostęp do typów, które mogą reprezentować …
Uznanie autorstwa: Wynikało to z powiązanego pytania P.SE Moje doświadczenie jest w C / C ++, ale pracowałem sporo w Javie i obecnie koduję C #. Ze względu na moje tło C sprawdzanie wskaźników zakończonych i zwróconych jest używane, ale potwierdzam, że podważam mój punkt widzenia. Niedawno widziałem wzmiankę o …
Powiedzmy, że mam metodę: public void DoSomething(ISomeInterface someObject) { if(someObject == null) throw new ArgumentNullException("someObject"); someObject.DoThisOrThat(); } Nauczono mnie wierzyć, że rzucanie ArgumentNullExceptionjest „poprawne”, ale błąd „Odwołanie do obiektu nie jest ustawione na wystąpienie obiektu” oznacza, że mam błąd. Czemu? Wiem, że jeśli buforowałem odwołanie do niego someObjecti korzystałem z …
Jest to jedna z zasad, które powtarzają się w kółko i to mnie denerwuje. Wartości zerowe są złe i należy ich unikać, gdy tylko jest to możliwe . Ale, ale - z mojej naiwności pozwól mi krzyczeć - czasami wartość MOGĄ być wyraźnie nieobecna! Pozwól, że zapytam o przykład, który …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.