Quanto è sbagliato parlare di "metodi" C ++ (rispetto alle "funzioni membro")?

18

I comprendono che secondo le specifiche del C ++ non esiste un "metodo" e alcuni (molti "la maggior parte?) I programmatori C ++ considerano il" metodo "come un Java-ismo. D'altra parte, anche in un forum C ++ le persone sembrano parlare di metodi senza spasmi. Sto cercando convenzioni note o pratiche comuni relative a questa terminologia.

Sto documentando un'API che ha sia versioni C ++ che Java. Gli sviluppatori in realtà mantengono la classe e il metodo / i nomi delle funzioni dei membri uguali tra i due, presumibilmente per convenienza nel porting e nel test. Per questo motivo, alcune delle cose che devono essere documentate su queste API si trovano "al di sopra" della scelta del linguaggio; Devo essere in grado di parlare in generale di Foos e Bars, con i loro metodi baz () e mumble () ...

Se parlo di metodi, i programmatori Java lo considereranno naturale e, a quanto pare, i programmatori C ++ probabilmente capiranno, ma alcuni lo considereranno errato. La mia domanda è: quanto è odioso questo nella pratica ? In che modo le funzioni dei membri C ++ vengono discusse convenzionalmente in contesti "generali OOP", al contrario di quelli specifici di C ++? C'è un modo migliore per parlare delle funzioni dei membri in un modo che non è corretto per entrambe le lingue? ("Funzioni membro" è un po 'prolisso.)

Questo non è un sondaggio di opinione; Sto cercando di determinare se ci sono convenzioni effettive o pratiche comuni per risolvere questo problema.

Sono a conoscenza di questa domanda , ma riguarda l'OOP in generale e non richiede informazioni su lingue specifiche .

    
posta Monica Cellio 30.12.2015 - 21:54
fonte

3 risposte

9

Perché non includi una spiegazione (molto simile a quella che hai fatto nella tua domanda) nella parte introduttiva della documentazione, ad es. una sezione Convenzioni ? Quindi potresti spiegare che il termine "metodo", usato nella tua documentazione, è inteso nel senso generico del metodo (Java), della funzione membro (C ++), ... poiché la documentazione si applica a tutte le implementazioni.

    
risposta data 31.12.2015 - 06:36
fonte
15

Bene, non hai intenzione di essere giustiziato per questo.

La denuncia nel mondo C ++ non è di correttezza pedante: è ambigua. Ci sono così molti diversi tipi di "metodi" là fuori nella natura selvaggia a seconda del dominio di cui stai parlando , che molti di noi preferiscono attenersi alla terminologia standard per evitare malintesi in seguito. Ciò significa, approssimativamente, "statico / [non statico] [puro] virtuale / [non virtuale] membro / [libero] funzione".

Se invece scrivi "metodo" nella tua documentazione, alcuni programmatori C ++ potrebbero lamentarsi che non è chiaro di cosa stai parlando, o preoccuparti che se non hai familiarità con questo C ++ convenzione, quali altri ti mancano?

Ma sono sicuro che ci sono milioni di programmatori C ++ professionali che non hanno idea che sia addirittura una cosa. È un grande mondo.

Non hai intenzione di essere eseguito per questo.

    
risposta data 30.12.2015 - 22:21
fonte
3

Eiffel li chiama Routine o Funzioni , C ++ li chiama Funzioni membro e (quasi) ogni altra lingua OO mai creata nel tutta la storia dell'informatica, sia prima che dopo il C ++ li chiama Methods , quindi questo termine dovrebbe essere generalmente compreso anche dai programmatori C ++ (e Eiffel), a meno che veramente non abbiano mai sentito parlare di Simula, Smalltalk, Self, Objective-C, Newspeak, Java, C #, VB.NET, PHP, Python, Ruby, ECMAScript / JavaScript, Scala, CoffeeScript, ...

    
risposta data 30.12.2015 - 23:51
fonte

Leggi altre domande sui tag