> On Apr 14, 2016, at 7:39 PM, Vladimir.S via swift-evolution 
> <swift-evolution@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/

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to