Projektowanie klas vs. IDE: Czy funkcje nonfriend członków naprawdę warto?

W (poza tym) znakomitej książceStandardy kodowania C ++, Pkt 44, zatytułowany„Preferuj pisanie niepochodzących funkcji nieprzyjaznych”Sutter i Alexandrescu zalecają, aby tylko funkcje, które naprawdę potrzebują dostępu do członków klasy, były członkami tej klasy. Wszystkie inne operacje, które można zapisać przy użyciu tylko funkcji składowych, nie powinny być częścią klasy. Powinny być osobami nie będącymi członkami i nie-przyjaciółmi. Argumenty są następujące:

Promuje enkapsulację, ponieważ jest mniej kodu, który potrzebuje dostępu do elementów wewnętrznych klasy.Ułatwia pisanie szablonów funkcji, ponieważ nie musisz zgadywać za każdym razem, czy dana funkcja jest członkiem, czy nie.Utrzymuje klasę małą, co z kolei ułatwia testowanie i konserwację.

Chociaż widzę wartość tych argumentów, widzę ogromną wadę:moje IDE nie pomoże mi znaleźć tych funkcji! Ilekroć mam jakiś obiekt i chcę zobaczyć, jakie operacje są na nim dostępne, nie mogę po prostu wpisać „pMysteriousObject->„i otrzymasz listę funkcji członkowskich.

Utrzymanie czystego projektu w końcu ułatwia życie programistyczne. Ale to znacznie utrudniłoby moją pracę.

Zastanawiam się, czy naprawdę warto się kłopotać.Jak sobie z tym radzisz?

questionAnswers(7)

yourAnswerToTheQuestion