<p dir="ltr">Shadowing is good in this case because it lets you capture constant values for the exact scope in which you need them. This helps avoid overhead of repeated getters and method calls. Using shorter names is automatically less descriptive; otherwise, people would advocate using abbreviations in property names, which is a stylistic and readability faux pas. </p>
<br><div class="gmail_quote"><div dir="ltr">On Sat, Dec 19, 2015, 4:34 PM Dennis Lysenko <<a href="mailto:dennis.s.lysenko@gmail.com">dennis.s.lysenko@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Disagree. Short names are less descriptive and less readable. And saying "shadowing is bad" without any argument is just silly for a mailing list. </p>
<br><div class="gmail_quote"><div dir="ltr">On Sat, Dec 19, 2015, 3:57 PM Dave Abrahams via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><blockquote type="cite"><div>On Dec 19, 2015, at 12:37 PM, ilya via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:</div><br><div><div style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;white-space:pre-wrap">I prefer <br><br>if let vc = someInterestingViewConroller {<br> vc.doSomething()<br>}<br><br>- Explicit is better than implicit<br>- shadowing is bad <br>- now there's no ambiguity about how to change the original property. <br><br>Therefore I'm -1 on any proposal that hides explicit name binding and/or increases shadowing, including let foo and unwrap foo. <br></div></div></blockquote><div><br></div></div></div><div style="word-wrap:break-word"><div>+1 to that. IMO re-using the same name for the unwrapped version of an optional variable does not help readability, and I don't want to encourage it. In a localized context like this, a short name is often better anyway as it declutters the code inside the block.</div></div><div style="word-wrap:break-word"><div><br><blockquote type="cite"><div><br style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div class="gmail_quote" style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="ltr">On Sat, Dec 19, 2015 at 21:31 Kevin Wooten via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto"><div>As much fun as it to example with foo, I would argue the opposite when you use some real world variable names:</div><div><br></div><div>if let someInterestingViewConroller =<span> </span><span style="background-color:rgba(255,255,255,0)">someInterestingViewConroller {</span></div><div><span style="background-color:rgba(255,255,255,0)">}</span></div><div><br></div><div>vs</div><div><br></div><div>If let <span style="background-color:rgba(255,255,255,0)">someInterestingViewConroller {</span></div><div>}</div><div><br></div><div>We know what let does and it should be enough to impart the necessary information for this statement.</div><div><br></div><div>When it comes to newcomers I think you'd be hard pressed to find somebody who'd be able to understand either form without teaching; so not losing much there.<br><br></div></div><div dir="auto"><div><br>On Dec 19, 2015, at 10:01 AM, Chris Lattner via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br><br></div><blockquote type="cite"><div><br><div><blockquote type="cite"><div>On Dec 11, 2015, at 8:19 AM, Jeff Kelley via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:</div><br><div><div style="word-wrap:break-word">I’ve had similar ideas to this. Instead of ditching the<span> </span><font face="Menlo">if let</font><span> </span>syntax altogether, another approach would be to use the existing name if no new name is given, so that this code:<div><br></div><div><font face="Menlo"><span style="white-space:pre-wrap">        </span>if let foo = foo { /* use foo */ }</font></div><div><br></div><div>could become this code:</div><div><br></div><div><font face="Menlo"><span style="white-space:pre-wrap">        </span>if let foo { /* use foo */ }</font></div><div><br></div><div>In both cases,<span> </span><font face="Menlo">foo</font><span> </span>is non-optional inside the braces. If you gave it another name with the<span> </span><font face="Menlo">if let</font><span> </span>syntax, that would work as it does today.<br></div></div></div></blockquote><br></div><div>Hi Jeff,</div><div><br></div><div>This is commonly requested - the problem is that while it does help reduce boilerplate, it runs counter to the goal of improving clarity.</div><div><br></div><div>-Chris</div><br><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=1Ry8ov4zuU66O51YNcjYWXuMGf2gObG8uPwoJz-2B4Z1VqMdeyeesw-2Bc9SDkZTEmLmnofSO3tNgiMGF47sxE879Ut5x-2F6sLSrTgmZhXJOq-2B59bEaSmJ0a44hp5limyi-2FpsrcKvySjRuPP0gLr6FoeZNJoisevK-2BimrVdnhvmWcLj69rx67MHqizgTcdJrprVSbV2f-2FkGqilX9aSsmL60yEZg-3D-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important"></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=1p9Jer2O6jVE9KWvo-2B9iUaEyN8slp4IizyiLwsfp54MtyOWrxaoHaMGzAhnPMF0sp5LxPZXk5eNlBjxy-2FAt5zkVbo2VD-2FQ4W-2BUOuGoaft-2FplxC7EKcDRU0CihWEShk8inzqrtA1U88maK5c2nA9GWIyomaiD9Fdm9Rv0pxi-2BRLreE13nSbY2-2BiUb-2BzelAVPA9sLs0wsXjhNwG2RMjUwV9g2oowx9vB6BgEzO0DKOI-2BM-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important"></div>_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></blockquote></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=JfMPa-2F7wwZPzsZ3QKA8NjtONIYX4SjbWuUxtpfsTY2hXedcyq5lkDMFuqNI-2FTYM60ihjikmscX8M3ZWEMSkdUkX05raM9I4R3R-2FHyFe3G2N3ShP5gnuZ4v9E-2Fu53eu6K0JUYD-2FQs4hRoc0-2BZzgPfjjqPyrJ-2BlIG98aa8-2BHgIqDapk-2BzusDVZ8RtNIvNilt8B8DCCwD4pASKA7Ufschn4uVODQzqxiMJRfWykP9LNHH4-3D" alt="" width="1" height="1" border="0" style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important"><span style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"><span> </span>_______________________________________________</span><br style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">swift-evolution mailing list</span><br style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="mailto:swift-evolution@swift.org" style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">swift-evolution@swift.org</a><br style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family:AvenirNext-Regular;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br></div><div style="word-wrap:break-word"><div>
-Dave<div><br></div><br>
</div>
<br>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=8CZIdLciSFC-2BO5jF-2FiP8qN7dBFsgCUZ50wdTsolcRPdTVS8Tw54Ep55nuvbPV-2FtPEBf3SpXw53WO9uWKD6AYrvrvJk0EHXo9p-2BnyhXVuIR2pddjfK4kVdKZORb1dht-2BV40k-2FGPK1AWr0GoC8-2F1RvYwIGiBv15Kl9S2H91lQ-2Fso14CWTqtyiwSekH927TQndK-2BG9ukAyaCgXSc4wT6TNECUp8iL9sKHnmpRP4pF5WZFQ-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important">
</div>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div></blockquote></div>