[swift-evolution] [pitch] rename 'guard' to 'ensure'

William Sumner prestonsumner at me.com
Tue Oct 25 12:04:57 CDT 2016


> On Oct 25, 2016, at 10:38 AM, Jay Abbott via swift-evolution <swift-evolution at swift.org> wrote:
> 
> I mentioned this in passing on a different thread <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20161024/028371.html>. Although it caused some slight confusion when I first learned the 'guard' keyword, it was easy to overcome and I didn't think the issue was strong enough to warrant a change. However, after reading the other discussion on that thread (around the possibility of a 'matches' keyword and how code is "read out" or "internally verbalised"), and seeing how passionate everyone here is about Swift, I'm thinking that maybe it should be changed.
> 
> The issue is that in English, 'guard' has an inverted logical connotation to how it is used in Swift. For example, take this sentence:
> 
> "In some functions it's a good idea is to put some checks in place, in order to guard against invalid input values."
> 
> Swift's 'guard' keyword is to guard against invalid values.
> Or to put it another way, to ensure that we have valid values.
> 
> However, the way it reads in Swift, we guard that we have valid values.
> 
> I fully understand and agree that it's better to state the true condition for valid values here, using else to perform a contingency. And I understand why the word 'guard' was picked (given the above example sentence). I just think that 'ensure' would be better.
> 
> ensure x > 0 else {
>     return
> }
> 
> ensure camp.isSafe else {
>     runForTheHills()
> }
> 
> ensure let thingy = object as? Thingy else {
>     return ExamineThingyResult.NotAThingy
> }
> 
> As I said, I thought it was too small a niggle to worry about, but seeing how people on here care so much about making Swift better, and the willingness to change things, I thought I'd suggest it. Although it would be a breaking change, the code changes are easy.
> 
> So what do people think? In particular it would be interesting to hear from non-native English speakers on this, did 'guard' confuse you or did 'guard' cause your understanding of the English word to be confused?

“Guard” is a computer science term for a test that must pass for execution to continue. Given that, I don’t think changing the keyword is warranted.

Preston
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161025/f5d8b3f4/attachment.html>


More information about the swift-evolution mailing list