Discussion Thread: DIP 1040--Copying, Moving, and Forwarding--Community Review Round 1
12345swordy
alexanderheistermann at gmail.com
Tue Mar 16 17:45:57 UTC 2021
On Tuesday, 16 March 2021 at 16:55:47 UTC, bachmeier wrote:
> On Tuesday, 16 March 2021 at 16:08:46 UTC, H. S. Teoh wrote:
>> On Tue, Mar 16, 2021 at 03:18:49PM +0000, bachmeier via
>> Digitalmars-d wrote:
>>> On Monday, 15 March 2021 at 17:18:19 UTC, H. S. Teoh wrote:
>>>
>>> > Although there are definitely cases for which it's actually
>>> > useful, the problems it brings along make it of
>>> > questionable value as a general language feature. I'd also
>>> > be in favor of getting rid of it, at least from classes, if
>>> > not completely. (The latter is probably impossible; quite a
>>> > lot of my own code relies on it, and I imagine I'm not the
>>> > only one using it among the users of D.)
>>>
>>> A feature that can't be used wrong isn't much of a feature.
>>> alias this is easy to use correctly and provides immense
>>> value. The removal of useful features is not a good solution
>>> to bad program design.
>>
>> I used to have your stance. But these days, I'm starting to
>> realize more and more that implicit conversions are almost
>> always a bad idea. They are convenient and fast in the
>> beginning when you're trying to get the job done, but in the
>> long term, they hurt readability and maintainability. I've
>> come to realize that when the code relies too much on this
>> kind of implicit conversion, esp. via alias this, it's often a
>> sign of poor code structure. It's a code smell. It works, but
>> smells bad, and eventually you realize that it *is* bad.
>
> If you're calling into a C library for matrix operations, but
> you have three or more strategies for allocating the underlying
> memory, alias this is reasonable. Otherwise you're writing
> *extremely* verbose code or you need to engage in extraordinary
> code duplication or you're writing a bunch of ugly generic code
> that sits on top of the C library. alias this is a clean,
> trivial solution in this case.
Meta programing is meant to solve the verbose code problem. What
is preventing you from using tools such as templates and string
mixins?
- Alex
More information about the Digitalmars-d
mailing list