本文主要是介绍项目总结一:微孵化项目总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、项目简介
1、项目基本信息
基本信息 | 详细 |
---|---|
项目名称 | 微孵化 |
平台 | iOS(兼容iOS 7.0 以上的系统) |
V 1.0开发周期 | 2015年8月6日-2015年9月9日(共24天,除去周末,无加班) |
项目背景 | 此次项目名称叫做微孵化,是为为中小微企业发展全周期(种子期、初创期、成长期、成熟期)提供数十项专业服务,提供公司注册、场地租赁、人才服务、法务咨询、投融资等多项专业化服务。 |
主要技术 | 1、广告轮播;2、微信登陆;3、注册短信验证码;4、支付(银联支付、微信支付、支付宝支付);4、分享组件(分享到QQ好友、QQ空间、微信好友、微信朋友圈、新浪微博);5、消息推送 |
iOS团队 | 4人 |
2、项目部分截图
二、项目总结
1、项目中犯的错
(1)、局部变量、全局变量满天飞
写一个类之前没有全局思考,不知道要定义多少个变量,需要的时候就临时随便定义一个变量,也没有去思考这个变量要定义成全局或者是局部。如果一个类里面的变量很多,到最后我自己也分不清了。我自己都搞不清坨了,更不用说别人能看懂了,所以随意定义全局、局部变量,严重降低了代码的可读性。
正确的做法是:多用局部变量,少用全局变量。能用局部变量的,坚决不用全局变量。如果B方法中需要用A方法中的某个变量,我们可以用参数传递。
(2)方法的命名不能很好的描述此方法的作用
其实,变量名、方法名定义的时候要具有实际的意义,这些概念我们都知道,但是在实际的项目中并没有表现的淋漓尽致,比如下面的例子,我定义了一个按钮的方法,作用是点击按钮报名。
- (void)btnClick:(id)sender
{//此方法的作用是点击按钮报名某个活动
}
这样写,没什么问题,方法名定义也具有实际的意义,很多人都会这样写。但是,我们没有将”定义变量名和方法名具有实际意义“的思想发挥到淋漓尽致。如果一个类里面有多个按钮方法,那其他的按钮方法名你怎么定义呢?看下我这样写,是不是会更好一些?
//点击报名活动
- (void)btnClickSignUp:(id)sender
{//此方法的作用是点击按钮报名某个活动
}
这样写详细的描述了这个按钮点击事件的作用,并且给这个方法添加了一个注释,让别人即使不懂代码的人也知道这个方法的作用。
(3)类中的方法从不进行分类
在做开发的时候,一般需要一个方法,就定义一个方法,从上一直往下写,不会对代码进行整理,如果方法比较多,就会感觉非常的混乱了,这样代码的可读性就很差很差了。
正确的做法:对于一些作用相同的方法,我么可以写在一起,用”#pragma mark
-“进行标注,这样结构会显得很清晰,自己要找对应的方法可以一下子找到,可大大提高代码的可读性。
(4)没有采用任何的编程设计思想
有的时候,会把所有的代码都写在viewDidLoad方法中,导致一个方法里面可能有五六百行代码,这种编程的思想是很糟糕的。viewDidLoad中只做一些初始化的动作,比如控件的初始化或者是数据的初始化和数据请求。
正确的做法:设计类采用分层的思想,一个方法只干一件事情,不要所有的代码都写在一个方法里面。不要把所有功能模块全写着一个类中,部分功能模块可以抽象成一个单独的类,一个类中的代码应该少于800行。
下面是一个请求数据的方法,这个里面有四个接口,或许你会把四个请求数据的接口全部写着一个数据请求方法里面,但是这是不合理的。应该采用分层的思想,每个接口单独写一个数据请求的方法,这样大大降低了代码的藕合度,提高了代码的可读性。
#pragma mark - RequestData//待付款
-(void)requestMyOrderList11
{}//已付款
-(void)requestMyOrderList12
{}//待确认
-(void)requestMyOrderList13
{}//已完成
-(void)requestMyOrderList14
{}
(5)为了实现需求不择手段
你有干过为了实现需求不择手段的事情么?不要否认,勇敢点,你肯定干过。为了实现需求而不择手段,是做外包项目的思维。反正我只要把需求做出来了,至于我怎么实现的,那你就管不着了。我曾经犯过很多这样的错误,有一次一个类本来是继承于BaseNavViewController,但是我要用BaseTableViewController里面的方法,我的把本来继承BaseNavViewController的类在头文件中直接改成了继承BaseTableViewController,我为此还很得意,因为我少写了几十行代码。
错误的事例:
#import "BaseNavViewController.h"@interface SignUpViewController : BaseTableViewController
//直接改成继承BaseTableViewController@property (strong, nonatomic) NSString *actId;
@property (strong, nonatomic) NSString *strTitle;@end
虽然这些直接改了继承方式,测试了也没什么问题,但是会存在很大的隐患。你知道为什么你的程序里面老是有些莫名其妙的crash么?就是因为你为了实现需求而不择手段,自己给自己埋下了坑。
(6)慎用“拿来主义”
很大开发人员遇到一个功能需求,老是喜欢去网上百度有没有类似的,然后下载一个直接拿过来用。这种“拿来主义”,可以为开发项目节省时间,但是我觉得还是要慎用“拿来主义”。一方面如果网上下载的东西,如果代码可读性差,那么学习成本很高。一方面网下有时候会不靠谱,可能东西会有bug。另一方面,你老实用别人的东西,自己不写点东西,那么怎么提高你的技术,你无非就是一个“代码搬运工”罢了。在做这个项目的时候,我们需要做一个分享组件。我接过这个需求时,主管说你打算怎么做?我第一反应就是,用友盟分享组件。然后主管问为什么要用友盟分享组件,我说因为它集成了所有的分享,而且很多人在用。最后,主管说不要用第三方的,你自个儿写一个集成分享的。一开始我觉得好难,但是最后写出来了,比友盟的更好用,总共的代码不到一百行。
正确的做法:如果是成熟的第三方的框架,并且自己很熟悉,可以自己改动其中的代码,那便可以引入到项目中来。
2、个人心得体会
做这个项目,让我感觉到实现项目的需求很简单,但是要真的把代码写好,还是不是那么容易的。上面说到的一些东西,其实对于需求的实现无关紧要,都是一些很细节的东西,或者根本就是你认为不重要的东西。但是正是因为你忽略了这些细节,所以你的层次也就停留在了那个水平。编程是一门手艺活,有的干做的粗糙,有的人做的精细,就看你用不用心,有没有注意细节。
前几日看一部很老的功夫片《龙虎门》,一个自称“打遍唐人街无敌手”的双截棍少年,挑战龙虎门的掌门,三秒钟之内被龙虎门的掌门夺走了他手中的双截棍扔到了地上。掌门问少年:你知道怎么握紧你的双截棍么?少年冥思苦想,终于明白了,要握紧双截棍不是靠力气,而是要用心。你的代码为什么写的那么烂?你真的有用心写代码么!!!
此次项目的收获:
1、写代码添加注释、采用分层思想,降低代码藕合度,增加代码可读性;
2、慎用“拿来主义”,用心写代码。
2015年9月 中清龙图
这篇关于项目总结一:微孵化项目总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!