[swift-evolution] What about a VBA style with Statement?
L Mihalkovic
laurent.mihalkovic at gmail.com
Thu Apr 14 13:23:36 CDT 2016
> On Apr 14, 2016, at 7:39 PM, Vladimir.S via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> Can't agree with you.
>
> As you see from this topic, many of us use the "with" feature by
> using workarounds/hacks.
>
> Those, who don't use such "with" feature - can
> produce even more bugging code(copy-paste,wrong editor's code completion
> suggestion).
> So, I think this is "good" feature, not just cool/nice
> looking. It will help us to write code with less bugs, without workarounds/hacks.
>
> Do you want to stop good feature, that is helping us to produce good code, because someone can use it "wrong"? Well, don't think this is right.
>
that is a bit of an extreme simplification of what I was saying, but I do believe that programming has become a modern day blue-colar job where IMHO the majority of programmers display a lot of creativity when it comes to perverting good ideas. In that context, I think that it makes sense to rescue code from the programmers writing it. I have seen a lot of bad VBA code written using WITH blocks.
I just realized that my problem with this thread is the reference to VBA. The concept of method cascades described in: https://gist.github.com/erica/6794d48d917e2084d6ed <https://gist.github.com/erica/6794d48d917e2084d6ed> is partially interesting to me.
IMHO a solution allowing the following
WITH self {
.doSomething()
// a lot of code
…
….
…..
// and 700 lines of code later
.doSeomthingElse()
}
is barking up the wrong tree, because for as grotesque as this code is, if it can be done, it will be done… a lot .. because it is easy to do. And code like the following is IMHO taking the same slippery slope
sharedName = newValue // myInstance.sharedName = newValue (3)
_.sharedName = newValue // the locally scoped newValue (2)
_._.sharedName = newValue // I don't actually propose this, but (1)
The following code however looks like a real productivity improvement (provided NOTHING else can be added between the chained invocations)
with let task = NSTask() {
launchPath = "/usr/bin/mdfind"
arguments = ["kMDItemDisplayName == *.playground"]
standardOutput = pipe
launch()
waitUntilExit()
}
Cheers
LM/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160414/ba3c6abc/attachment.html>
More information about the swift-evolution
mailing list