Mam nadzieję, że to pytanie dotyczy tematu.Jaki jest prawidłowy termin zwracania czegoś jako parametru wyjściowego?
robiłem przegląd kodu i natknęliśmy się na następujących funkcji:
bool SomeFunc(std::string& o_xxx, char& o_yyy);
Ta funkcja służy do pobierania wartości xxx
i yyy
jakiejś klasie za pomocą spośród parametrów.
Komentarze (które są później wykorzystywane do automatycznego dokumentacji) powiedzieć:
... to funkcja powraca przez odniesienia [xxx] i [yyy] ...
Oczywiście funkcja zwraca wartość boolowską wskazującą powodzenie lub niepowodzenie. Tak więc powyższe zdanie wymaga ponownego sformułowania. Ale jak? Jaki jest poprawny termin (jeśli w ogóle istnieje) dla zwracania czegoś, jak gdyby za pomocą parametru out, lub, innymi słowy, zapełniania argumentu przekazanego przez referencję?
Pytanie jest oznaczone jako agnostyczne, ponieważ nie jest specyficzne dla C++. Ale jest również oznaczony jako C++, ponieważ przykład znajduje się w C++.
ja zwykle powiedzieć coś do skutku „funkcja zwraca wartość wskazującą sukces lub niepowodzenie w przypadku powodzenia' będzie o_xxx' mają. wartość [xxx] i "o_yyy" będą miały wartość [rrr], aw przypadku niepowodzenia argumenty pozostają niezmienione. ". –
Parametry wyjściowe są czasem używane, ponieważ istnieje więcej niż jeden parametr do zwrócenia. Jeśli połączysz je w klasę, możesz po prostu zwrócić instancję. Czasami parametry wyjściowe są jednak wykorzystywane do zwiększenia wydajności. Na koniec, dlaczego przekazujesz dane dookoła? Encapsulate: powiedz, nie pytaj! –
@ R.MartinhoFernandes: "W przypadku niepowodzenia, argumenty pozostają bez zmian" - i zauważ, że jest to silna gwarancja wyjątku.Więc jeśli tak powiesz, pamiętaj, aby przypisać 'o_xxx' w funkcji * przed * przypisaniem do' o_yyy', ponieważ przypisanie ciągu jest tym, które może zawieść. Lub użyj swapów. –