QtD 0.1 is out!

Fawzi Mohamed fmohamed at mac.com
Fri Feb 27 12:49:58 PST 2009


On 2009-02-27 21:10:29 +0100, Walter Bright <newshound1 at digitalmars.com> said:

> Eldar Insafutdinov wrote:
>> Now we have to make a manual init function called from class
>> constructors. I understand that allowing static consructors with
>> cyclic imports will make order of their execution undefined, but this
>> is acceptable and actually semantically doesn't break the idea of
>> cyclic imports. Otherwise in my opinion this behavior is
>> inconsistent..
> 
> One of the goals of D is to eliminate undefined behavior wherever 
> possible. In C++, the undefined order of static construction was a 
> source of many porting problems. I think it's better in the long run to 
> have a defined order, even if it means having to reorganize the code a 
> bit.

I fully agree, circular dependencies between modules is in general a 
good practice:
a circular dependency it means that you have tight coupling, in in that 
case it is normally better to have everything in the same module to 
have a better control on it.
Sometime one has cases in which circular dependencies arise, two ways 
to get rid of them are for example:

1) define and interface, the circular dependency is in the interfaces 
that are described in the same module, the two (or more) modules 
include the interfaces, and are not directly dependent on each other 
(only through the interfaces)

2) use templates, the circular dependencies are on a template 
parameter. The circular dependencies arise only upon instantiation



More information about the Digitalmars-d-announce mailing list