Why we shouldn't install header files created by UIC
Matt Rogers
mattr at kde.org
Wed Apr 6 18:33:29 UTC 2005
Hi,
As I'm going through and changing the main settings widget to look nicer
(screenshot at
http://www.sourcextreme.com/projects/kdevelop/newmainsettings.png), I've
noticed that we're installing a header file that's based of a .ui file and
calling it public API (i.e. we're not saying these headers are private and
they shouldn't be used). There are several reasons why this is bad, and
here's the two that i can think of ATM:
1. No BC. the header file may or may not change depending on what version of
uic is used to generate the file. If we didn't autogenerate the .h and
the .cpp file everytime, this wouldn't be as much of a problem, but we do, so
it is a problem.
2. No encapsulation. All the data members are public. You change a variable
name (as I have done) and you break BC, which goes back to point number 1.
The solution to this is to create a new class that contains a pointer to the
UIC generated class and make this class part of the public API.We can't base
the new class off of the UIC generated class because you'll still run into
the above two points. Anyways, i still plan to go forward with my changes, so
i hope nobody cares that we're breaking BC.
Matt
More information about the KDevelop-devel
mailing list