How does D improve design practices over C++?
Janderson
ask at me.com
Wed Oct 29 08:39:27 PDT 2008
Janderson wrote:
> 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
- No friend, enforcing better encapsulation. Things can be shared only
in the same module.
More information about the Digitalmars-d
mailing list