BikkelZ schreef op vrijdag 09 oktober 2015 @ 12:58:
[...]
Ik dacht er eerst inderdaad ook zo over, maar daar ben ik toch van af gestapt. Crashlytics laat je non-fatal issues loggen op het moment dat je in een guard let else blok terecht komt die een fatsoenlijk team wat er gewoon boven op zit net zo veel vertelt als een harde crash.
[...]
Over welke "ons" heb je het, je vaste werk of bij Ray Wenderlich?
Mijn vaste werk.
In de ideale wereld wordt alles goed doorgetest ook bij kleine wijzigingen. In de echte wereld gaat de junior die nauwelijks snapt wat jouw scherm doet nog even een kleine UI bug fixen en vervangt daarbij net die ene NSLayoutConstraint die jij in uitzondering X een klein beetje aanpast in je code, maar op dat punt komt hij nooit in de code noch de tester noch valt het op in een code review dus gaat het ineens live.
Ik heb besloten forced wraps met de volgende mentaliteit te benaderen: "mocht deze variabele onverhoopt toch nil zijn, is dat dan zo erg dat de applicatie moet crashen?". Ik ben er nog geen use case voor tegen gekomen.
Wij testen dit soort dingen redelijk intensief:
- Eerst als een nieuwe feature voor het eerst geschreven is
- Dan als die feature in master gemerged wordt
- Een "smoke"- en integratietest elke week als we een release doen
- Tegelijkertijd met release testing sturen we een beta uit naar zo'n 1000 (binnenkort 2000+) power users
We zien zelden crashes in productie, en als dat gebeurt is het meestal iets binnen Apple's frameworks. Maar, ik snap je punt. We hebben ook geen juniors en veel code reviews worden door bijna iedereen in het team wel bekeken, dus de kans dat iemand iets aanpast dat ongezien dingen breekt is klein.
[...]
Die nil-check moet je dus overal herhalen en vooral niet vergeten, terwijl hem optional maken geen zwaar wegende nadelen heeft. Je wordt er altijd compile time al braaf aan herinnerd dat je hem eerst moet checken.
Ik vind het feit dat al je views nu optional zijn zwaarwegend. Als je nu waardes uit wil lezen moet je alles eerst gaan unwrappen, alleen maar omdat een view dat je weet dat er altijd is, toch optional is (nogmaals, views waarvan je dat niet weet verdienen wel optional te zijn).
Maar goed waarom Apple precies weak var ! gebruikt vind ik lastig om te achterhalen, of het nou gemak is of ook nog iets onder de motorkap.
BikkelZ schreef op vrijdag 09 oktober 2015 @ 17:41:
[...]
Autolayouts is vrij lastig om in te komen. Probeer het bij Interface Builder te houden in het begin, geen coded constraints. Scrollviews en tableviewcells zijn vaker lastig. Varieer eens tussen verschillende sizes in Interface Builder om te kijken of er niks rood wordt (ik zet hem altijd standaard op 3,5" iPhone)
Over het algemeen is het maken van constraints met NSLayoutConstraint waardeloos, maar ik vond het in het begin wel echt helpen het te begrijpen. Je leest namelijk precies wat je doet ("constraint with item X's top, equal to item Y's bottom"). Als je de basis eenmaal doorhebt overstappen op IB en de NSLayoutConstraint methods vergeten.
[
Voor 13% gewijzigd door
Scott op 09-10-2015 20:18
]