KDevelop4 architecture rework
Roberto Raggi
roberto at kdevelop.org
Sun Jan 21 13:52:58 UTC 2007
Hi!
Quoting Alexander Dymo <dymo at ukrpost.ua>:
> Hi!
> I've started the rework of the architecture in
> branches/work/kdevelop-sublime-integration today.
Thank you
>
> The goals are (as discussed previously):
> - to separate interfaces from shell
> - to clean up both shell and interfaces
> - to review some design decisions in favor of known working solutions
> from KDevelop3.
Please, try to reduce the number of files(and classes) in kdevelop/lib.
At the moment we have something like 202 files in kdevelop/lib. The
library is not exactly accessible to normal developers.
Interesting stuff I noticed while reading the source code
- The Koncrete namespace
I know a lot of poople think that weird names for new KDE projects is
cool, but if you ask me this is 100% stupid. It is OK to have a cool
name for our code base(like gideon for KDevelop3), but do we really
have to use these cool names in our *PUBLIC API*!
We are working on KDevelop! Please use KDev* as prefix. If this is not
good for you, then you should consider to start a new project, name it
Koncrete and put it in kdenonbeta.
- useless classes in our public api
For example, kdevelop/lib/kdevast.h. kdevast.h contains the declaration
of Koncrete::AST. This class has no ctor/dtor, one public member (a
pointer to the LanguageSupport) and two (non virtual) functions. I want
to ask you, do we really need this class in our library! Another
awesome example is kdevelop/lib/kdevcodedelegate.h. It declares
Koncrete::CodeDelegate. CodeDelegate doesn't have any functions or
members at all. It just has a ctor and a dtor. Again, why this stuff is
in our public api! kdevperstenthash.h should be removed too. Same story
for kdevparsejob.h.
Another thing that is very interesting is
Koncrete::LanguageSupport/Koncrete::LanguageController. Do you really
want LanguageController in our public api?
ciao robe
>
> At this point I've refactored Core (made it look and work like KDevAPI
> in KDevelop3), PluginController (mostly cleanups) and MainWindow
> (it's now Sublime::MainWindow and just waits for more stuff from
> Sublime library to be used).
>
> So far the consequences are: clearer initialization procedure,
> minimal interfaces and (still) working plugin architecture.
> I'll keep you informed as the rework continues. Feel free to contribute
> to this cleanup effort, but just make sure you contacted me at irc before
> you start over.
> I'd like to refactor Document/Part controllers by myself. Also MainWindow
> is my job too. But everything else needs attention as well. For example, the
> independent task would be to experiment with inter-plugin deps and BC ideas
> (see http://lists.kde.org/?l=kdevelop-devel&m=112620787223741&w=2)
> and try to make use of them in KDevelop extension interfaces mechanism.
> If everything works ok, project manager needs to be modified so it provides
> extension interfaces.
>
> Another task would be to sort out utility stuff that still lies everywhere
> in lib/. Take a look at Matt's reply to "useful stuff in lib" thread for
> hints.
>
> Also there're smaller tasks. Removing unused code, checking dependencies
> between files and removing extra #include's, reformatting
> the code when nesessary.
>
>
> _______________________________________________
> KDevelop-devel mailing list
> KDevelop-devel at kdevelop.org
> https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel
>
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
More information about the KDevelop-devel
mailing list