项目总结一:微孵化项目总结

2024-05-17 05:18
文章标签 总结 项目 孵化

本文主要是介绍项目总结一:微孵化项目总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、项目简介

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月 中清龙图

这篇关于项目总结一:微孵化项目总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995507

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem