Dostal som sa do diskusie s niekým, kto mi hovorí, že to nie je dobré robiť to, čo robí Qt s zahrnúť súbory, pretože som prijal rovnakú stratégiu v mojom kóde.
Použite príklad QAplikácie, ak chcete zahrnúť QAplikáciu, potom by ste mali urobiť:
#include <QApplication>
QApplication je súbor bez rozšírenia, ktorý obsahuje:
#include "qapplication.h"
Jedinou nevýhodou je, že vytvára viac súborov v projekte. Okrem toho si myslím, že to má len výhody.
Takže moja otázka znie, prečo je to dobrý alebo zlý nápad?
odpovede:
2 pre odpoveď č. 1Myslím, že je to vec osobného vkusu, väčšinou. Rôzne projekty používajú iný štýl. Qt zdvihol tento štýl.
1) V podstate sa čiastočne zhoduje sštandardná knižnica obsahuje bez rozšírenia hlavičky, hoci CamelCase. V tomto ohľade je však iné, že štandardná knižnica v týchto dňoch neumožňuje používať príponu.
2) To by mohlo tiež pomôcť s triedou zahŕňa v hlavičke s inou hlavnou triedou. Pozrite si tento príklad:
#include <QFoo>
kde QFoo je definované v qbar.h, pretože hlavná trieda je QBar, ale do tej istej hlavičky je vložená iná trieda.
Jedinou nevýhodou je, že vytvára viac súborov v projekte.
Nevytvára viac súborov, ako je potrebné, pretožetieto by mohli byť generované za behu ako v Qt projekte. V tomto prípade to neporušuje váš zdrojový strom a bude vložený do adresára na vytvorenie, alebo aspoň na samostatné miesto, kde sa nedostane do cesty. To sa robí v súčasnosti syncqt v Qt projekte.
2 pre odpoveď č. 2
Použitie hlavičkových súborov bez prípony nie jedobrý nápad, pretože sťažuje vyhľadávanie v hlavičkových súboroch (* .h alebo * .hpp) a sťažuje identifikáciu obsahu súboru (napríklad ak sa editor pri výbere správneho režimu zvýraznenia syntaxe spolieha na rozšírenie ). Tiež spôsobuje viac súborov v projekte, ako ste spomínali.
Qt tiež používa tento dohovor presne preto, že inteligentní programátori sa nezhodujú.
Takže si myslím, že použitie súborov hlavičky s rozšíreniami nejakým spôsobom oddeľuje vaše vlastné súbory hlavičky od Qt. To robí to viac jasné a čisté, že hlavička je pre Qt a ktorý z nich je váš.