Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Zgodność typów w procedurach

Termin Definicja
Zgodność typów w procedurach

Zgodność typów w procedurach wymaga, by parametry wywołania odpowiadały typom zdefiniowanym w jej sygnaturze.

Typ parametru jako część kontraktu procedury

Zgodność typów w procedurach oznacza zachowanie zgodności między wartościami przekazywanymi przy wywołaniu a typami zapisanymi w deklaracji parametrów. Procedura ma określoną sygnaturę, czyli zestaw informacji obejmujący nazwę, kolejność parametrów, ich typy oraz często sposób przekazywania wartości. Jeżeli parametr został zdefiniowany jako liczba całkowita, przekazany argument powinien mieć typ liczbowy zgodny z wymaganiami danego języka lub systemu. Analogicznie parametr tekstowy wymaga wartości tekstowej, a parametr logiczny wartości reprezentującej prawdę albo fałsz.

Typ nie opisuje wyłącznie przykładowej zawartości parametru. Określa również sposób przechowywania wartości, zakres dopuszczalnych danych, sposób porównywania oraz reguły konwersji. Różnica między typem całkowitoliczbowym, zmiennoprzecinkowym, datą i tekstem może prowadzić do odmiennego wyniku działania procedury, nawet gdy przekazane dane wyglądają podobnie. Z tego powodu sygnatura jest kontraktem pomiędzy kodem wywołującym a kodem procedury i powinna być traktowana jako element interfejsu programu.

Konwersja jawna i niejawna podczas wywołania

Niektóre języki programowania oraz systemy baz danych potrafią automatycznie konwertować argument do typu oczekiwanego przez procedurę. Taką operację nazywa się konwersją niejawną. Przykładem może być przekazanie liczby całkowitej do parametru wymagającego liczby zmiennoprzecinkowej, o ile konkretne środowisko dopuszcza rozszerzenie tego typu. Innym przykładem jest próba zamiany tekstu zawierającego cyfry na wartość liczbową. Automatyczna konwersja nie zawsze jest jednak możliwa, bezpieczna albo jednoznaczna.

Konwersja jawna polega na świadomym wskazaniu typu docelowego w kodzie wywołującym lub wewnątrz procedury. Pozwala to określić, jak ma zostać potraktowana wartość, a także ułatwia analizę kodu. Trzeba uwzględnić możliwość utraty części informacji: zamiana liczby zmiennoprzecinkowej na całkowitą może usunąć część ułamkową, a zamiana długiego tekstu na typ o ograniczonej długości może doprowadzić do jego obcięcia albo błędu. Przy konwersji dat znaczenie może mieć również format zapisu oraz ustawienia regionalne środowiska.

Błędy wynikające z niezgodności typów

Nieprawidłowy typ argumentu może zostać wykryty już podczas kompilacji, przygotowywania instrukcji albo sprawdzania definicji procedury. W takim przypadku wykonanie może zakończyć się komunikatem o niezgodności typów, nieprawidłowej liczbie argumentów lub braku możliwości wykonania konwersji. W środowiskach o słabszej kontroli typów błąd może pojawić się dopiero w czasie działania, gdy procedura otrzyma konkretną wartość. Utrudnia to diagnostykę, ponieważ sama deklaracja wywołania może wyglądać poprawnie.

Problemy mogą wystąpić także wtedy, gdy typy są formalnie konwertowalne, lecz ich znaczenie biznesowe jest różne. Identyfikator zapisany jako tekst może zawierać zera wiodące, których nie wolno utracić po zamianie na liczbę. Data przechowywana jako tekst może być porównywana leksykograficznie zamiast chronologicznie. Wartość pusta, wartość NULL, zero i pusty ciąg znaków również nie zawsze oznaczają to samo. Przy analizie procedury należy sprawdzić definicję parametrów, miejsce wywołania, rzeczywiste typy zmiennych oraz zachowanie dla wartości granicznych.

Sprawdzanie sygnatury i poprawa wywołania

Diagnostykę należy rozpocząć od odczytania aktualnej definicji procedury, a nie od założenia, że dokumentacja lub starsza wersja kodu nadal opisuje ten sam interfejs. Następnie porównuje się każdy argument z odpowiadającym mu parametrem: kolejność, typ, dopuszczalność wartości pustej, długość tekstu, precyzję liczbową oraz sposób przekazywania. Warto również sprawdzić, czy procedura została zmieniona bez równoczesnej aktualizacji kodu aplikacji, formularza, skryptu lub modułu odpowiedzialnego za przygotowanie danych.

Bezpieczna poprawa polega zwykle na przekazaniu wartości w typie zgodnym z sygnaturą albo na zastosowaniu jawnej, kontrolowanej konwersji przed wywołaniem. Nie należy maskować problemu przez przypadkowe zmiany typów w wielu miejscach, ponieważ może to wprowadzić kolejne błędy. Po korekcie trzeba przetestować typowe dane, wartości puste, wartości graniczne oraz przypadki zawierające znaki specjalne lub zera wiodące. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów i komputerów PC, w tym diagnostykę problemów z oprogramowaniem, które mogą powodować błędy wywoływania procedur.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę