Czasami natrafiam na metody, w których programista postanowił zwrócić coś, co nie jest krytyczne dla funkcji. Mam na myśli, że patrząc na kod, wygląda na to, że działa tak samo dobrze, voida po chwili zastanowienia pytam „Dlaczego?” Czy to brzmi znajomo?
Czasami zgadzam się, że najczęściej lepiej jest zwrócić coś takiego boollub int, a nie po prostu zrobić void. Nie jestem jednak pewien, ogólnie rzecz biorąc, o zaletach i wadach.
W zależności od sytuacji zwracanie intmoże uświadomić programowi wywołującemu liczbę wierszy lub obiektów, na które wpływa metoda (np. 5 rekordów zapisanych w MSSQL). Jeśli metoda taka jak „InsertSomething” zwraca wartość logiczną, mogę mieć metodę zaprojektowaną tak, aby zwracała truesukces, w przeciwnym razie false. Dzwoniący może zdecydować się na działanie lub nie na podstawie tych informacji.
Z drugiej strony,
- Czy może to prowadzić do mniej wyraźnego celu wywołania metody? Złe kodowanie często zmusza mnie do dwukrotnego sprawdzenia zawartości metody. Jeśli coś zwróci, powie ci, że metoda jest tego typu, że musisz coś zrobić ze zwróconym wynikiem.
- Innym problemem byłoby to, że jeśli implementacja metody jest dla Ciebie nieznana, co deweloper postanowił zwrócić, co nie jest krytyczne pod względem funkcji? Oczywiście możesz to skomentować.
- Wartość zwracana musi zostać przetworzona, gdy przetwarzanie może zostać zakończone w końcowym przedziale metody.
- Co dzieje się pod maską? Czy wywoływana metoda została wywołana z
falsepowodu wyrzuconego błędu? A może zwrócił fałsz z powodu wyniku oceny?
Jakie są twoje doświadczenia z tym? Jak byś na to zareagował?
voidco najmniej informuje programistę, że wartość zwracana przez metodę jest nieistotna; wykonuje akcję, a nie oblicza wartość.