Come gestire le librerie che utilizzano convenzioni di denominazione diverse?

5

Sto lavorando a un progetto personale che utilizza alcune librerie diverse, come GLFW, glm e Bullet. In che modo diverse convenzioni di denominazione vengono trattate in questo contesto?

Lavorando con C ++ ho sempre usato la stessa convenzione utilizzata dalla libreria standard (tutto minuscolo, sottolineato come separatore di parole, non :: getSize (), just :: size (), ecc.) Preferenza personale a parte, questo funziona per me . glm usa una convenzione di nomi che è vicina alla mia, ma usa camelCase, anche per i tipi (c'è glm :: vec3 per esempio.) Bullet ha cose come btScalar o btVector (che precede tutto con bt ma il tipo ha una prima lettera maiuscola .) GLFW prefisso tutto "GLFW" o "glfw".

Solitamente, cose come glm non mi infastidiscono più di tanto perché il prefisso "glm ::" indica chiaramente che fa parte di una libreria, ma bullet non ha spazio dei nomi (non sono sicuro, ma credo che sia una libreria C .) Il mio primo istinto è stato quello di digitare le differenze di distanza, che è ovviamente inutile dato che non posso rinominare i nomi dei metodi (e cosa buona non l'ho fatto, dato che ci sarebbero stati molti typedefs)

Devo accettare le differenze? Forse astratto tutto dietro un'altra classe? Di solito come ti occupi di questo?

    
posta Luke B. 09.04.2015 - 19:21
fonte

2 risposte

11

Accetta e usa le preferenze di denominazione preferite di ciascuna libreria.

Fare qualsiasi altra cosa aggiungerebbe uno strato di astrazione tra i nomi veri e quelli che hai scelto per rafforzare il tuo stile preferito. Ciò rende quasi un incubo cercare qualsiasi cosa (inclusa la documentazione della biblioteca per un metodo o una funzione), a meno che l'unica vera differenza sia la capitalizzazione (una distinzione che dovrebbe essere comunque irrilevante, basta usare l'involucro che la biblioteca ha già stabilito).

    
risposta data 09.04.2015 - 19:26
fonte
3

Ciò che è peggio che affrontarlo riguarda i progetti che lo hanno gestito in modo carino.

Se so che qualcosa dovrebbe essere in un namespace, almeno lo so. Lo so in tutti i progetti ogni volta che lavoro con esso. Potrebbe funzionare benissimo per te, ma chiunque altro abbia usato quella libreria sarà inutilmente confuso. E probabilmente davvero infastidito.

My first instinct was to typedef the differences away

Non farlo senza una ragione davvero buona.

    
risposta data 09.04.2015 - 19:46
fonte

Leggi altre domande sui tag