Domanda

MFC ha tutti i nomi di classe che iniziano con C.Per esempio, CFile e CGdiObject.Qualcuno ha visto utilizzato altrove?C'è un ufficiale di denominazione convenzione di guida da Microsoft che consiglia questo stile?Nata l'idea di origine con MFC o qualche altro progetto?

È stato utile?

Soluzione

Qualcosa di un po 'simile è usato in Symbian C ++, in cui la convenzione è che:

classi T sono "valori", per esempio TCHAR, TInt32, TDES

classi R sono maniglie per kernel (o altro) le risorse, ad esempio RFILE, RSocket

M classi sono mixins, che comprende interfacce (intesi come mixins senza implementazioni funzione). La linea guida è che l'ereditarietà multipla dovrebbe coinvolgere al massimo di classe 1 non-M.

classi C sono più o meno tutto il resto, e derivano da CBase, che ha alcune cose in esso per aiutare con risorse gestione.

HBufC esiste principalmente per generare messaggi confusi sui forum di Symbian, e avere un proprio prefisso è solo l'inizio. La H sta per "eh?", O forse "Haw, Haw! Tu non hai STL!" ; -)

Questa è vicino in spirito a Apps ungherese notazione piuttosto che sistemi di notazione ungherese. Il prefisso ti dice qualcosa circa la classe che si potrebbe cercare nella documentazione, ma che non si sa altro. Il punto di nominare nulla in programmazione è quello di fornire tali suggerimenti e promemoria , altrimenti devi solo chiamare le vostre classi "Class001", "Class002", ecc.

Sistemi ungherese solo indica il tipo di una variabile, che IMO è nulla per ottenere entusiasti, soprattutto in un linguaggio come C ++ tipi dove tendono ad essere o ripetuto costantemente oppure completamente nascosto dai parametri del modello. Il suo analogo quando si nomina tipi è la pratica Java di chiamare tutte le interfacce con I. Anche in questo caso, non ottengo molto entusiasti di questa (e nemmeno le librerie standard di Java), ma se si sta andando a definire un'interfaccia per ogni classe , oltre alle interfacce che vengono effettivamente utilizzati per il polimorfismo in situazioni non di prova, allora avete bisogno di un modo per distinguere le due cose.

Altri suggerimenti

E 'il male. Non usare la notazione ungherese per qualsiasi cosa, ma le cose astratte.

Per esempio, btnSubmit è ok per descrivere un pulsante denominato Submit (che avrebbe un lblSubmit di accompagnamento per l'etichetta accanto al pulsante)

Ma le cose come CMyClass per la Classe e uiCount per intero senza segno di nome conteggio non aiuta i programmatori e porta solo alla digitazione più dispendioso.

E 'stato un vecchio C ++ stile di codifica, e MFC è stato probabilmente una delle ultime cose per usarlo.

Di solito era solo una convenzione di C ++ (e forse un paio di altre lingue), e, quindi, ha iniziato a cadere in disgrazia, come le lingue è diventato più interoperabile, attraverso COM e quindi .NET.

È ancora vedere suo cugino, l ' "io" prefisso per le interfacce, abbastanza spesso. Ho sempre trovato interessante il fatto che "io" sopravvissuto quando "C" è morto, ma che era probabilmente perché le interfacce sono stati utilizzati in modo pesantemente l'interoperabilità COM.

Mi ricordo compilatori Borland venivano con le librerie in cui i nomi delle classi iniziato con 'T'. Probabilmente per "tipo":)

Anni fa convenzione di denominazione è fondamentale per aiutare a identificare la classe, il tipo di anche il raggruppamento della classe. Non dimenticate allora non c'era spazio dei nomi e nessun / intellisense limitato a disposizione. C è una forma di notazione ungherese ma certamente reso popolare da MFC. Borland Delphi e stava usando T - come prefisso per tipo

Mentre MFC e un sacco di software scritto per Windows utilizzato il convegno "C" per le classi, in genere non si trova il secondo in software scritto per piattaforme UNIX. Credo che sia stata un'abitudine fortemente incoraggiata da Visual C ++. Ricordo che Visual C ++ 6.0 potrebbe precedere una "C" per tutte le classi che quello creato con la procedura guidata di classe.

Non posso rispondere a tutte le vostre domande, ma per quanto ne so, è solo per distinguere le classi MFC da altre classi -. Una forma di notazione ungherese

È interessante notare che, a quanto pare è discutibile non solo al di fuori di MS, ma sia all'interno che .

Vedi qui: http://www.jelovic.com/articles/stupid_naming.htm per un lungo articolo su questo tema.

Tali convenzioni per le variabili sono utili per lingue come il Fortran in cui non è necessario dichiarare il tipo delle variabili prima di utilizzarle. Mi sembra di ricordare che le variabili che è in nomi iniziato con "i" o "j" inadempienti a numeri interi, e le variabili che è in nomi iniziato con "r" e altre lettere in default a valori reali (float).

che la gente usa simili per le lingue in cui si ha bisogno di dichiarare le variabili - o per le definizioni di classe -. È probabilmente solo una reliquia di qualcuno incomprensione convenzioni vecchio codice da linguaggi come Fortran dove effettivamente contava

Durante la scrittura di applicazioni che utilizzano le librerie Qt, si usa una convenzione di denominazione che contraddistingue le classi che sono derivati direttamente o indirettamente da QObject da classi che non sono.Questo è utile perché si può dire il nome della classe se supporta o meno i segnali/slot, proprietà, e tutte le altre chicche che provengono da QObject.

lo usiamo al lavoro, come molte altre convenzioni di denominazione

I da molti significava C per le classi, p per puntatore, m_ per i membri, s_ per i membri statici, n per intero ... non molti documenti

Personalmente trovo che la notazione ungherese mi aiuta, nel senso che io posso guardare uno schermo pieno di variabili e subito sapere che cosa sono, come cerco di assorbire la logica. Il tuo unico argomento contro di essa che vedo è "tipizzazione extra"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top