na pewno styl twojego kolegi jest niestandardowy, jednak czy zaraz bledny, hmmm...
przypomina mi troche zabawe z posixem, czy genralnie unix/linux gdzie sprawdzalo sie zawsze czy fukncja zwrocila 0/1 bo inaczej pan odcinal punkty na laborkach :D
uzycie out czasem sie przydaje, zeby zwrocic kilka wartosci i nie musiec tworzyc sztucznej klasy za pomoca ktorej sie to zrobi
inna sprawa ze w podanym przykladzie logicznie byloby ze GetUsers zwroci liste uzytkownikow jesli wszystko poszlo ok, a null lub pusta liste jesli wystapily jakies problemy
zakladam ze message jest do zwracania bledow, pytanie czy nie moznaby rzucic jakiegos biznesowego wyjatku, ale to juz zalezy od architektury aplicakacji, za duzo exceptionow tez zle ;]
z drugiej strony jesli metoda nalezy juz do jakiejs wyzszej warstwy abstrakcji, to moze jednak warto miec jakis zunifikowany model zwracania przez nia danych i zrobienie specjalnej klasy bazowej, ktora zwracaja wszystkie metody tej warstwy nie jest zlym pomyslem
kolejna sprawa, jesli jedna funkcja za pomoca out zwraca zbyt duzo elementow, to znaczy ze byc moze nie jest dobrze zaprojketowana, bo idea jest aby enkapsulowac dane/zachowanie i tworzyc obiekty/metody wyspecjalizowane, ktore dobrze wykonuja jedna rzecz, wiec w przypadku metody, ktora duzo danych zwraca przez out, moze wartoby ja rozczlonkowac na kilka mniejszych
rozumiem ze aby zawsze zwracac bool, ajakies informacje w message, musi miesz try-catch w kazdej metodzie
osobliwe. dlaczego?
bo w ten sposob lapiac wszystkie wyjatki inne warstwy przestaja miec o nich szczegolowe informacje, chyba ze jako message zwraca exception.ToString() a nie tylko Message exceptiona, to byloby glupie
ale wracajac do lapania wszystkich wyjatkow, jesli takze zapisuje je do np. trace (czy ma jakis inny model logowania), to jeszcze pol biedy, ale jesli nie, to jest to dobry argument za tym aby zmienil podejscie, bo jesli cos przestaje dzialac, to w tej sytuacji przestajesz wiedziec czemu, bo dostaniesz z metody false i jakis komunikat, np. ze jakis obiekt jest null, ale jaki? to juz zagadka