
Emerging Best Practices in Swift - ingve
https://realm.io/news/gotocph-ash-furrow-best-practices-swift/
======
Camillo
The second code example ("if you were doing this before ARC") is completely
wrong. "alloc" is a class method that allocates memory for an instance, on
which "init" is then called. Calling it on an instance returned by a factory
method is nonsensical.

The error is made consistently all three times, so it's clear that the author
is genuinely confused about Objective-C. Maybe he's better at Swift, but it
doesn't look good.

~~~
thealistra
The code samples were weird. Why injected property has to be optional, we can
inject it using the constructor.

~~~
Glide
I think the DI was for a view controller in this case. In normal usage I would
agree. DI -> use the constructor. Even in languages like Java and C# I would
advocate constructor injection. View controllers and where they get
instantiated with storyboards, xibs, etc? Not so much.

~~~
AshFurrow
Yup.

------
bsaul
I'm a bit curious as to why people talk about "protocol oriented" as something
new. It seems to me to be just a way of doing interface-oriented programming,
like people coding in java have been doing for the last ten years, as well as
golang dev, and many other languages... Am i missing a difference, or is it
just not to confuse people that only develop in objective-c ?

------
sinhpham
Is the currying example even currying? It looks like it's just a function
returning a function to me. I thought currying it's some thing like func
contains(subString: String, string: String) -> Bool, and calling contains("a")
would automatically return a func(x: String) -> Bool.

~~~
bdash
Currying refers to the process of taking a function that accepts multiple
arguments, and turning it into a sequence of functions, each accepting a
single argument. The example you provide would be more aptly described as
partial application, which is the process of fixing a number of arguments to a
function, producing a function of smaller arity.

------
AshFurrow
Yeah, sorry for the typos in the slides – I missed them while proofreading and
unfortunately can't correct them now.

I think the people in this thread discussing how my stylistic choices are
"wrong" may have missed my point. Too bad.

------
mjmsmith
Why is this explicitly testing for false:

    
    
      if defaults.boolForKey("launchBefore") == false {
    

rather than:

    
    
      if !defaults.boolForKey("launchBefore") {

~~~
florian_buerger
I use this style myself. It is way easier to read than `!condition`. If you
are scanning the code, a single `!` at the beginning of the condition won't
stand out that much.

------
andyfleming
Unrelated: Is there a plugin syncing speaker deck and the video? Or something
custom?

~~~
bdash
Its based on [http://presentz.org](http://presentz.org), which sadly appears
to no longer be maintained.

