- UID
- 902291
|
建议1尽量使用系统控件
系统控件可以使得用户容易上手,但在iPhone开发中还有很多人习惯使用checkbox而不是UISwitch,使用combobox而不是使用UIPickerView。究其原因可能有两点:一是从其他Windows或者Android系统转到iPhone开发的残留,二是因为跨平台开发中为了减少设计和资源的工作而趋同设计。不过这样的设计往往造成自定义控件的开发投入,质量上也往往无法和系统控件相媲美。
建议2合理抽象
UI代码是很容易重复写的代码,很多时候就会造成代码效率的错局,让人有一种高效工作的错觉。其实很多代码是完全重复或者结构重复的,通过适当的抽象就可以进行消除和避免。比如在一个应用中,不同地方所需要的内嵌网页浏览器,这些地方往往都有一些共通的行为。比如加载的时候会显示加载进度并在状态栏显示网络状态图标,在加载完毕后隐藏进度和网络状态显示。如果单独在不同Controller中实现不仅不合理,而且容易造成大量代码重复以至于后来的维护噩梦。通过合理抽象,抽取一个基类后就可以封装这块的行为,实现相同逻辑代码的复用。
建议3优先使用组合
UI中很多部分应该像积木,可以随意拼接组合。比如下图的用户信息显示部分可以由诸如UIImageView,UILabel等几个基本控件拼接而成,而这种显示在一个项目中会通常在多个界面中显示。面对这种的问题,参考建议2后可能就会想着抽象一个基类用来处理用户信息显示相关的逻辑和界面。所有有这需求的界面都可以继承自这个基类。这种抽象是解决了逻辑和界面重复实现的问题,但另一方面却引入了高耦合的继承。如果有些界面因为功能原因更会迫切继承一个其他基类,比如建议2中提到的处理网页加载的基类,由于Objective-C无法支持多重继承,从而被迫进行部分代码的copy&paste。所以在抽象的时候就应该格外珍惜基类的抽象的使用,不断利用Liskov原则进行继承合理性的检查和确认,同时把握“优先使用组合”的原则,通过基本控件的组合制作一些应用相关的组合,比如显示用户信息的,这样其他需要的节目就可以利用组合来复用这部分代码,从而避免继承,也其他更合理的继承保留可能。
官方网站:http://www.3gtrain.com/
联系地址:河南.郑州.金水区.经三路65号江山商界A座615室【经三路农科路交叉口南50米路东】
联系电话:0371-86189958
联系传真:0371-86189978
免费电话:4000-159-369
官方QQ:130159369
官方邮箱:3g@3gtrain.com |
http://www.3gtrain.com/index.asp |
|