防御式变成的主要思想是:子程序应该不因传入错误的数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。于是在防御式编程的概念中有一个比较重要的议题,就是子程序出错后,应当怎样处理。一般处理方案无非两种:

  1. 尝试让程序从错误中恢复
  2. 将主程序终止

这两种方案各有优点。前者让程序在运行过程中更加健壮,不会因为子程序的错误导致主程序错误。而后者,让程序的逻辑清晰,避免了错误恢复带来的程序流程混乱。而我这里推荐使用第二种方式,尤其是在ios的网络编程中。

 

iOS的网络编程也有两种主要的方式,同步方式和异步方式。同步方式,采用阻塞的方式,线程会阻塞在网络交互部分,等待服务器返回数据。异步方式,多线程并行执行,程序不会因为网络交互而阻塞。在一般情况下使用异步方式,能够发挥多线程的优点。让程序能够有一个良好的体验。但是存在的问题,在异步调用的方式下。程序的函数之间的调用逻辑和回调时机很难掌控。出错之后的处理,也变得有点困难。而相比之下如果采用同步阻塞方式,可以将所有的网络操作写进一个函数里面顺序处理,哪里出错哪里退出。让整个程序的逻辑更加清晰。而在优化体验的时候,可以建立专门的线程来处理这些阻塞方式的网络交互过程。所以但从程序流程逻辑的清晰上来看,阻塞多线程的方式要优于异步多线程的方式。

 posted on 2012-11-26 22:21  文鬼  阅读(898)  评论(1编辑  收藏  举报