I’m looking at the special case of library code. If I surface an API in a 
library, it’s the library user who will call this function. Would you regard 
this as an assert or throws scenario?

> On 07 Dec 2015, at 08:25, Brent Royal-Gordon via swift-users 
> <swift-users@swift.org> wrote:
> 
>> When writing library code, what method of parameter validation would be 
>> suggested?
> 
> It depends.
> 
> If the data may come from somewhere out of your control, like a user or the 
> network, throws (or an optional or Bool return value) is an appropriate 
> choice.
> 
> If the data will come from a source which should “never” be wrong, like data 
> that has already been parsed or a calculation you perform, then 
> precondition() (rather than assert(), which is removed in production builds) 
> is a good way to run a sanity check.
> 
> Basically, if you anticipate that the value could ever be invalid, use throws 
> or an optional/boolean return. If you don’t think the value should ever be 
> invalid, use precondition().
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

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

Reply via email to