How does D improve design practices over C++?

Janderson ask at me.com
Wed Oct 29 08:21:13 PDT 2008


Walter Bright wrote:
> Janderson wrote:
>> Hi,
>>
>> I was talking with some collages at work and they asked me how D 
>> enforces good programming practices.   For course I mentioned a couple 
>> of the ones I knew of hand -
>>
>> - Unit checking
>> - Design by contract
>> - Invariant checks
>> - Stronger const
>> - Modules
>> - Garbage collection
>> - No automatic copy constructor
>> - More restrictive operators
>> - Delegates (Specifically, encouraging there use by making them simple 
>> to use)
>> - Specific constructs such as Interfaces
>> - More restrictive casting
>> - No C style Macros
>>
>> I'm sure I've missed a lot in this area.  I'd like to email them a 
>> good list of "good coding design" that D promotes through syntax.  
>> Note: The C++ verse D page is not what I'm looking for.  I'm more 
>> interested in coding practices then anything else.  For instance 
>> things that you can mess up in C++ but D won't let you.
> 
> It's a good idea to come up with such a list. Let me add:
> 
> - Overload sets which prevent function call hijacking
> - Nested functions
> - Structs with value semantics, Classes with reference semantics
> - Ability to move (bitcopy) a struct without invoking construction
> - Alias parameters to templates
> - Compile time function evaluation
> - Function, array, and struct literals
> - String mixins
> - In, reference, and out function parameters
> - Lazy function parameters
> - Standardized way of doing conditional compilation
> - Standardized way of debug conditionals
> - Warnings on implicit casts that lose bits
> - No uninitialized data
> - User defined default initializers for typedefs and fields
> - Template constraints
> 

Here's another big one:
- encourages less frequent use of pointers

-Joel



More information about the Digitalmars-d mailing list