L'articolo 23 di Effective C ++ (terza edizione) di Scott Meyers è intitolato: "Preferisci le funzioni non associate ai non membri alle funzioni dei membri". La ragione per cui Scott suggerisce è l'aumento dell'incapsulamento. Quindi, solo le funzioni che necessitano di accedere ai membri privati sono rese funzioni membro, le altre funzioni sono rese indipendenti.
Ora, l'utente non si preoccupa delle mie considerazioni. Tutto ciò che desidera è un'interfaccia uniforme e semplice da apprendere il più possibile. Avere alcune funzioni come membri e alcuni come free-standing sembra rompere questa uniformità. Inoltre, la scelta di quale funzione è membro e che è indipendente può sembrare casuale per l'utente, che non è a conoscenza dei dettagli dell'implementazione (cioè i membri privati) della mia classe.
Una risposta riporta anche una proposta linguistica relativa a questo problema.
La mia domanda è: è una buona idea fornire sempre una funzione wrapper indipendente per ogni funzione membro al fine di presentare all'utente un'interfaccia uniforme composta solo da funzioni indipendenti?