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

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

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和