在设计IOSapp时为了代码的扩展性可可维护性需要遵守的原则

  作为软件工程范畴的iosApp,为了保持代码的可维护性和扩展性,必然要遵守软件的基本特性,众所周知高内聚低耦合的程序才能具备这样的特性。

  首先,不能依赖于storyboard和xib,原显而易见。第一点是,在源代码管理方面,在团队项目中,一旦有人改变了一点内容storyboard就会显示modify的样子,所以让人看起来很不安,其实带着M的原因很可能就是其他团队成员鼠标手点击了一下而已,最新的源代码管理工具在Xcode中的集成基本上解决了这个问题,但是依然还是会产生严重的代码冲突,这不是团队人员想要见到的样子,所以,很少有用户体验和功能强大的app是采用storyboard的形式的。

  下面来聊一下如何能让代码更加的易于维护和易于扩展。

  我们在工作中最重要的是什么?当然是进度。我们对于代码的功能抽取和模块重构自然是没法跟上进度的更新的,所以我们需要一个懂得软件生命周期并且看中软件未来的领导来带领团队。开始的时候我们可以为了产品的成型速度而放弃代码的抽取甚至于为了产品能早点上线而写出控制器很重的代码,其实在很多公司中都是这样的上千行的控制器随处可见,国内某地图应用产品的控制器竟然有2+w行,这其中的重复代码和层的代码自然是非常之多的。后期的维护真的很难进行下去。而这个时候作为团队的主管,就需要为团队的为了和公司的为了做出牺牲了,尽量敦促团队成员规范的进行代码的编写,产品经理总是在崔,最为老大的你需要做的是在程序猿和产品之间进行斡旋,即不能忽略产品也不能完全牺牲猿们。斡旋的功夫大家自然都是懂得的,这里讨论的只是程序猿需要遵守的:

  1.代码必须进行层次划分,为了赶工期可以产生重复的代码,或者未抽取父类的很多的类,但是代码必须是让版本控制牢牢把控的。

  2.刚刚拿到任务的人,除非是工作了许久的大牛,否则,基本都是在试水的,不可能直接完成某个模块的顶层类和方法的抽取,当然模型除外,因为产品设计阶段基本已经完成了这个任务。可以先试着去完成功能,然后在进行代码的顶层父类或者重复功能的抽取。

  3.一定要遵守MVC的设计思路,不要出现在控制器中进行属性赋值的操作,而是通过对象来进行数据的传递,作为桥梁的控制器,如果负担过重的话必然会产生程序的不稳定性。

  4.本文仅仅是作者自己的心得体会,只是想要记录下来和大家分享。

  

在设计IOSapp时为了代码的扩展性可可维护性需要遵守的原则,布布扣,bubuko.com

时间: 2024-11-03 01:30:26

在设计IOSapp时为了代码的扩展性可可维护性需要遵守的原则的相关文章

装饰者模式与代码扩展性的探究

代码的增强优化与扩展,是每个程序员绕不开的坎儿,当然也是我们所追求的理念与信仰,而装饰者模式则是一种很优秀的代码优化理念, 在这里跟大家分享一些自己的学习心得: ------------------------------------------------------------------------------------------------------------------------------------- 举个简单的例子, public static void action(

《.NET 设计规范》第 6 章:扩展性设计

第 6 章:扩展性设计 6.1 扩展机制 考虑用不包含任何虚成员或受保护的成员的非密封类来为框架提供扩展性.这种方法所提供的扩展性广受用户欢迎,而且它的开销也不高. 考虑将受保护的成员用于高级的定制方案. 要在对安全性.文档及兼容性进行分析时,把非密封类中受保护的成员当做公有成员那样来对待. 考虑使用回调函数来允许用户向框架提供自定义的代码供框架执行. 考虑使用事件来允许用户对框架的行为进行定制,这样就不需要用户对面向对象设计有深入的了解. 要优先使用事件,而不是简单的回调函数,其原因在于广大开

数据库扩展性设计:使用二进制解决一条记录关联多个状态的问题

程序开发中,经常遇到一条记录有多个状态位,比如一条商品,他属于热门,新品,特卖.我们的数据库如何设计呢? 一般有几种方法 (1)建立关联表 关联表字段:关系Id,商品Id,属性Id 查询:使用关联表的方式,查询某属性的商品. 程序:写入时,写商品表和关联表: (2)将多个属性存在一个字段中,用|分割 状态存储在一个字段中,比如某条商品属于热卖,新品和特卖,则字段存储的值:01|02|03 SQL查询:使用like 程序处理:(1)取值需要先将01,02,03分割,再处理.(2)写入需要先将01,

深入NGINX:我们如何设计它的性能和扩展性

英文原文:Inside NGINX: How We Designed for Performance & Scale 为了更好地理解设计,你需要了解NGINX是如何工作的.NGINX之所以能在性能上如此优越,是由于其背后的设计.许多web服务器和应用服务器使用简单的线程的(threaded).或基于流程的(process-based)架构, NGINX则以一种复杂的事件驱动(event-driven)的架构脱颖而出,这种架构能支持现代硬件上成千上万的并发连接. Inside NGINX info

前端工程师必须要知道的SEO技巧(2):制作比设计还要漂亮的代码(内容和语义化代码)上

前言:现在的网站设计,大多数不仅仅要求美观,前端代码往往发挥着重要的作用.这意味着很大一部分搜索引擎优化或搜索引擎优化责任应该落在设计师身上.然而,有大量的网页设计师不理解这个问题以及如何在建立一个网站初期就达到是完全的搜寻引擎优化.当然,要达到这个高度,肯定离不开学习.需要花费时间使用. 一.制作比设计还要漂亮的代码(语义化代码)其实就是在适当的位置使用适当的代码. 接下来,我举几个例子就能明白: H1~H6标签多用于标题. UL标签多用于无序列表. OL标签多用于有序列表. DL标签多用于定

C#设计界面时,未将对象引用设置到对象实例问题解决方案

在做.Net项目时,经常遇到在设计界面时,出现未将对象引用设置到对象实例问题,下面给出解决方案: 1.对于Winform和Asp.Net的界面设计可以按如下操作: Winform项目: protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (string.Compare(Process.GetCurrentProcess().ProcessName, "devenv") == 0) return; //其他相关

json_encode在设计api时需要注意的问题

在设计api时我们经常会使用关联数组,例如:我要返回给客户端主题信息和主题包列表 原始数组格式 $arr = array( 100=>array('themeName'=>'a','files'=>array('1.jpg','2.jpg')), 200=>array('themeName'=>'b','files'=>array('1.jpg','2.jpg')), 300=>array('themeName'=>'c','files'=>array

springAop 使用@Around,@After等注解时,代码运行两边的问题

springAop使用@Around,@After等注解时,代码运行两边的问题 将@Component注解删掉就好了

bootstrap设计网站中添加代码高亮插件

这款插件的名字叫做google-code-prettify 使用该插件之前的效果: 使用插件之后的效果: 接下来说步骤: (1)下载两个文件 http://codecloud.sinaapp.com/google-code-prettify/prettify.css http://codecloud.sinaapp.com/google-code-prettify/prettify.js (2)在head中引入这两个文件 <link href="google-code-prettify/p