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

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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;