/ / Qt include i file - c ++, qt, include

Qt include i file - c ++, qt, include

Sono entrato in una discussione con qualcuno che mi dice che non è bello fare ciò che Qt fa con i file include perché ho adottato la stessa strategia nel mio codice.

Usiamo QApplication come esempio, quando vuoi includere QApplication dovresti fare:

#include <QApplication>

QApplicazione è un file senza estensione che contiene:

#include "qapplication.h"

L'unico svantaggio è vedere che crea più file nel progetto. Oltre a ciò penso che abbia solo vantaggi.

Quindi la mia domanda è: perché questa è una buona o una cattiva idea?

risposte:

2 per risposta № 1

Penso che sia la questione del gusto personale, per lo più. Diversi progetti usano uno stile diverso. Qt ha raccolto questo stile.

1) Fondamentalmente corrisponde parzialmente alla libreria standard include senza l'estensione dell'intestazione, sebbene CamelCase. A questo proposito è diverso, tuttavia, che la libreria standard non consente in questi giorni di utilizzare la versione suffissa.

2) Potrebbe anche aiutare con la classe include all'interno di un'intestazione con una classe principale diversa. Vedi questo esempio:

#include <QFoo>

dove QFoo è definito in qbar.h poiché la classe principale è QBar, ma c'è un'altra classe inserita nella stessa intestazione.

L'unico svantaggio è vedere che crea più file nel progetto.

Non crea più file del necessario perchéquesti potrebbero essere generati al volo come nel progetto Qt. In tal caso, non ingombra l'albero dei sorgenti e verrà inserito nella directory di creazione, o almeno in un punto separato in cui non viene ostacolato. Questo è fatto attualmente da syncqt nel progetto Qt.


2 per risposta № 2

L'utilizzo di file di intestazione senza estensione non è abuona idea in quanto rende difficile la ricerca di file di intestazione (* .h o * .hpp) e rende più difficile identificare il contenuto di un file (ad esempio se il tuo editor si basa sull'estensione per scegliere la giusta modalità di evidenziazione della sintassi ). Inoltre fa sì che ci siano più file nel progetto come hai menzionato.

Anche Qt usa questa convenzione esattamente perché i programmatori intelligenti non lo fanno. Significa che le tue intestazioni non si scontreranno con le nuove intestazioni di Qt.

Quindi penso che l'utilizzo dei file di intestazione con estensioni separa in qualche modo i file di intestazione personalizzati da quelli Qt. Rende più chiaro e pulito ciò che l'intestazione è per Qt e quale è il tuo.