Sorum çok bilimsel görünebilir, ancak bence bu yaygın bir sorundur ve deneyimli geliştiriciler ve programcılar, bahsettiğim sorunu önlemek için bazı tavsiyelerde bulunacaklardır. Btw., Aşağıda tarif ettiğim şey, iOS projemde proaktif olarak çözmeye çalıştığım gerçek bir problem, ne pahasına olursa olsun önlemek istiyorum.
Sonlu durum makinesi ile bunu kastediyorum> birkaç düğmeli bir kullanıcı arayüzüm var, bu kullanıcı arayüzü ile ilgili birkaç oturum durumu ve bu kullanıcı arayüzü neyi temsil ediyor, değerler kullanıcı arayüzünde kısmen görüntülenen bazı verilerim var, bazı harici tetikleyicileri alıyorum ve işliyorum (sensörlerden gelen geri çağrılarla temsil edilir). Bu kullanıcı arayüzünde ve uygulamada arzu edilen ve mevcut olan ilgili senaryoları daha iyi haritalamak için durum diyagramları yaptım. Kodu yavaşça uyguladığımda, uygulama olması gerektiği gibi gittikçe daha fazla davranmaya başlar. Ancak, yeterince sağlam olduğundan pek emin değilim. Şüphelerim, kendi düşünme ve uygulama süreçlerimi izlemekten geliyor. Her şeyi kapsadığımdan emindim, ancak kullanıcı arayüzünde birkaç kaba test yapmak yeterliydi ve çabucak davranışta hala boşluklar olduğunu fark ettim .. Onları yamaladım. Ancak, çünkü her bileşen başka bir bileşenden gelen girdiye bağlı olarak hareket eder ve kullanıcıdan veya bazı harici kaynaklardan gelen belirli bir girdi bir olaylar zincirini tetikler, durum değişiklikleri .. vb. Ben birkaç bileşen var ve her biri gibi Tetik girdi -> tetik ve onun analiz analiz -> analiz dayalı bir şey (bir mesaj, bir durum değişikliği) alınan davranır
Sorun şu ki, bu tamamen kendi kendine yetmez ve bileşenlerim (veritabanı öğesi, oturum durumu, bazı düğmelerin durumu) ... Olay zincirinin kapsamı dışında değiştirilebilir, etkilenebilir, silinebilir veya başka şekilde değiştirilebilir istenen senaryo. (telefon çökerse, pil aniden boştur telefon dönüşü) Bu sisteme, sistemin kurtarılması için potansiyel OLMADIĞI GEREKEN OLMAYAN geçersiz bir durum getirecektir. Bunu görüyorum (düşünülen insanlar bu sorunun farkında değil) Apple mağazasındaki rakiplerimin uygulamalarının çoğunda, müşteriler böyle şeyler yazıyor> "Üç belge ekledim ve oraya gidip onları açamıyorum, onları görse bile. " veya "Her gün video kaydettim, ancak çok günlük bir video kaydettikten sonra, altyazıları açamıyorum .. ve altyazı düğmesi görünmüyor '
Bunlar sadece kısaltılmış örneklerdir, müşteriler genellikle daha ayrıntılı olarak açıklar ... bunlarda açıklanan açıklamalardan ve davranışlardan, belirli bir uygulamanın bir FSM arızası olduğunu varsayalım.
Yani asıl soru bundan nasıl kaçınabilirim ve sistemi kendi kendini engellemekten nasıl koruyacağım?
EDIT> Ben bir viewcontroller telefonda görüş bağlamında konuşuyorum, ben uygulamanın bir parçası demek. MVC modelini anlıyorum, farklı işlevsellik için ayrı modüllerim var ... Açıkladığım her şey kullanıcı arayüzündeki bir tuvalle ilgili.