Jestem prawie pewien, że istnieje specjalna nazwa dla „specyfikacji” funkcji / metody. To słowo odnosi się do
- ile potrzeba argumentów
- kolejność argumentów
- które argumenty są opcjonalne
Czy jest na to jakaś nazwa?
Jestem prawie pewien, że istnieje specjalna nazwa dla „specyfikacji” funkcji / metody. To słowo odnosi się do
Czy jest na to jakaś nazwa?
Odpowiedzi:
Zwykle jest to nazywane podpisem typu .
Podpis typu zawiera typ zwracany przez funkcję, liczbę argumentów, typy argumentów lub błędy, które może przekazać.
interface
lub C / C ++ w pliku nagłówkowym (dosłownie nazywanym a prototype
).
TL; DR Prawdopodobnie mówisz o podpisie funkcji (lub podpisie metody), którego częścią jest podpis typu.
Ale tak naprawdę zależy od tego, co uważasz za funkcję „spec”. Interpretuję to jako „wszystkie informacje wymagane przez programistę do wywołania funkcji”. Obejmuje to nazwę funkcji, typ parametru, kolejność i konieczność, prawdopodobnie typ zwracany, a prawdopodobnie nawet przestrzeń nazw tej funkcji.
Ale to, czy wszystkie te rzeczy są wymagane (czy nawet dobrze zdefiniowane), zależy od używanego języka / środowiska. Ponadto, jeśli zmienisz definicję na „wszystkie informacje wymagane przez maszynę do wywołania funkcji”, specyfikacja prawdopodobnie będzie inna 1 .
Ściśle mówiąc, podpis funkcji (lub metody) nie jest spójnym terminem 2, 3 nawet w tym samym języku. 4, 5, 6, 7 Ale prawie na pewno jest to słowo, którego szukasz, ponieważ zrozumie je prawie każdy programista.
public
, static
itdlanguage-agnostic
, przykłady C ++ są dla mnie (A) istotne i (B) ilustrują zamieszanie, które tak często otacza ludzką terminologię
Uważam, że terminem tym jest „umowa”. Definiuje interfejs i czego oczekuje się od dzwoniącego i odbierającego; jednak obejmuje również takie wartości, jak dopuszczalne wartości parametrów, które nie są czymś, co wiele języków pozwala na zdefiniowanie przez funkcję lub definicję klasy, więc termin „kontrakt” może być szerszy niż to, co miałeś na myśli. Widziałem to w kilku książkach programistycznych i specyficznych dla Java. Nie jestem pewien, czy jest to specyficzne dla Javy, ale nie rozumiem, dlaczego miałoby tak być. Podpis jest drugim powszechnie używanym terminem, ale polubiłem „kontrakt”.