D pointers

Lars Knoll lars at trolltech.com
Mon Oct 3 07:19:05 BST 2005


On Sunday 02 October 2005 18:57, Cornelius Schumacher wrote:
> On Sunday 02 October 2005 09:35, Stephan Kulow wrote:
> > That having said, I for sure don't want to see a script output somewhere
> > somewhen checking. But I will review new kdelibs code for over-using of
> > inline functions (as we did in the past with d pointers).
>
> Ok, if the policy is "Avoid inline functions", than that's ok, because it
> really makes sense because it makes the code more extensible.
>
> But if the policy is "Move all private members to private classes" I would
> object, because this thread shows that there are no clear benefits and it
> is more a question of personal coding style.

The benefit is the greater refactoring possibilities you have. I can only say 
that from past 5 years of coding in Qt I have missed this possibility quite a 
few times just because a member happened to be in the class and not the d 
pointer. 

People often don't get details right at the first try, and suddenly you find 
you that you don't need a member anymore or you would like to reorganize the 
member variables. All of that can only be done if you don't have the members 
in the public classes. 

When putting the members into the d pointer you don't have to be as careful 
with your first implementation as if you put them into the public class. In 
the d-pointer you can do everything you like; adding variables, removing 
them, changing their type, reordering them, you name it. In the public class 
you can do more or less nothing (there are some ugly hacks you could do in 
some cases, but these tend to be really ugly and not give a clean 
implementation).

So if you think about long term maintainability of code it is clearly 
preferable to have all members in the d-pointer.

Lars




More information about the kde-core-devel mailing list