做一个“懒惰”的程序员-lcp框架系列交流

24
做“做做”做做做做 做“做做”做做做做 懒懒” 懒懒” : : 做做做做做做 做做做做做 做做做做做做做做做做做做做做 做做做做做做做做做做做做 ,一,。 做做做做做做 做做做做做 做做做做做做做做做做做做做做 做做做做做做做做做做做做 ,一,。 懒懒懒懒 for 做做做 做做 做做 做做 MSN [email protected] QQ 15792827

Upload: lichengdongdong

Post on 24-Jul-2015

970 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: 做一个“懒惰”的程序员-LCP框架系列交流

做一个“懒惰”的程序员做一个“懒惰”的程序员 ““ 懒惰” 懒惰” : :

其实的意思是,想办法让一些工具或框架帮助我们去其实的意思是,想办法让一些工具或框架帮助我们去做事,让更多时间去思考和休息。做事,让更多时间去思考和休息。

技术讨论 for

演讲者:李程 网名:东东MSN : [email protected] : 15792827

Page 2: 做一个“懒惰”的程序员-LCP框架系列交流

1.1. 前言前言

关键词:“工作创新” 关键词:“工作创新”

““ 人类创新方法之一就是如何把‘劳动’更大程度分摊给‘机器或其他物种’人类创新方法之一就是如何把‘劳动’更大程度分摊给‘机器或其他物种’ ,, 这这

也是人和动物的区别之一。也是人和动物的区别之一。””

开发者需要大部分时间 ’思考’ 而非 ‘编程’ 开发者需要大部分时间 ’思考’ 而非 ‘编程’ ,,

思考:思考:

11 )如何)如何 "" 分享经验“ 分享经验“ (( 灌输给框架灌输给框架 ) )

22 )如何性能提高 )如何性能提高 (( 灌输给框架灌输给框架 ) )

33 )如何更好沟通 )如何更好沟通 (( 灌输给框架灌输给框架 ) )

44 )了解未知的学习 )了解未知的学习 (( 剩下的时间剩下的时间 ) )

55 )快乐 )快乐 (( 剩下的时间剩下的时间 ))

技术讨论 for

Page 3: 做一个“懒惰”的程序员-LCP框架系列交流

1.1 1.1 各种开发方式的比较各种开发方式的比较

1) php 直接和 html 结合编程

2)discuz模式有了模版引擎

3)zf及 cakephp等程序员用 "重 "框架

4)thinkphp等程序员 "轻 "框架

5)lcp 针对所有人员的 "轻 "框架

1).php 文件没有框架化 .( 文件很多很多 . 公共调用凌乱 )2). 没有模版 , 界面维护比较麻烦 .( 美工和程序员结合非常不方便 , 美工的修改要有程序员参与 )

1 ) php 文件没有框架化 ( 文件很多很多 . 公共调用凌乱 )2 )使用了自己的模版技术 ( 美工和程序员结合方便 )

太架构化 而忽视了 php 的优势 . 把 mvc 完全脱离化 , 这个适合文档完整 , 有专门程序开发文档的应用 .而且不同层次由不同人员进行开发 .( 这种基本是依据一些 java 的方法 )

1 )架构简单 实现基本的 mvc2) 界面分离了

1) 架构简单实现了基本的 mvc2) 界面分离3) 融合不同工作范畴

技术讨论 for

Page 4: 做一个“懒惰”的程序员-LCP框架系列交流

1.2 1.2 交流目的交流目的

大家做个交流,目的是大家提出更多意见,让大家更 “懒惰” 的工作。

开发

效率提高稳定提高

开发框架 转移 自动编程转移

文档化

转移

开发工具

转移

技术讨论 for

Page 5: 做一个“懒惰”的程序员-LCP框架系列交流

2 .LCP 2 .LCP 框架的一些特点框架的一些特点

LCP 框架 是以前几年来工作的同事们总结的一些方法得到的框架。LCP 框架是 LCP 体系中的一小部分,帮助完成开发的工作。LCP 框架 以 XK 指数衡量 框架发展成功与否。

XKXK 工作愉悦指数工作愉悦指数 == 开发效率开发效率 XX + + 功能稳定功能稳定 KK

表单 处理

不谈编程先,谈谈现在的生活,(l cp主要的东西基于生活)

技术讨论 for

Page 6: 做一个“懒惰”的程序员-LCP框架系列交流

2.1 2.1 类类 windowwindow 结构结构 ( X( X 提高提高 0.10.1 倍,倍, KK 提高提高 0.10.1 倍 倍 ))

松散的架构,把应用分为操作系统层 和 应用软件层。(应用软件层 只要达到 mvc 层次即可)

平台层

软件 软件 软件相互调用 相互调用

注册表

window

软件本身的dll库

软件界面控制逻辑

平台层

应用 模块 功能相互影响 相互调用

config.php

l cp

functions + model

viewcontroller

数据库持久层

技术讨论 for

Page 7: 做一个“懒惰”的程序员-LCP框架系列交流

2.1 2.1 类类 windowwindow 结构 结构

模块化 文件分散化

文件管理 方便 , 需要改哪个功能就去哪个文件夹找 文件查找不方便 (discuz 就是这样 )

统计智能化 文件夹分了 , 可以直接进行统计什么功能的什么操作 , 运行和执行的情况

不好自动采集

SEO 文件结构化后,可以统一 seo 化

统一表现转换 可以瞬间 网站 Wap 化

模块调用 import 一个模块即可 调用很麻烦 ,include 的路径问题比较复杂

Page 8: 做一个“懒惰”的程序员-LCP框架系列交流

2.2 2.2 Light FrameworkLight Framework 轻框架 轻框架 (( XX 提高提高 0.30.3 倍,倍, KK 提高提高 0.10.1 倍)倍)

轻就是很简洁, 1 个小时就可以学会的框架。采用“轻”架构,兼容性问题, php 的强项不是做 oo 应用。他更多是轻巧,在以前团队中开发人员,用过 phpcake , zendframework ,这种很适合做系统软件的应用。

轻框架 重框架

学习 很快进入角色 需要对框架进行不断的学习 , 编程的速度取决于你对框架的了解程度

松散 很松散 , 即可以灵活的使用其他类文件 .

注入很方便 , 扩展很方便 , 方便扩展其他框架 , 也可以注入其他框架

类的注入比较麻烦 . 比较

适合 适合快速开发和业务经常修改的互联网应用 适合文档确定的软件开发 , 而且稳定性

Page 9: 做一个“懒惰”的程序员-LCP框架系列交流

2.2 2.2 Light FrameworkLight Framework 轻框架 轻框架

index.phpindex.php(V + C)

user.class.php(M + 持久层)

?Name=user

会员模块:user

User.php User.php(V + C)

Login.htmlHandle=login

Reg.htmlHandle=reg

Cgpwd.html

Infoedit..html

Handle=cgpwd

Handle=infoedit

?name=user

admin.php admin.php(V + C)

?name=user

Edit.html

list..htmlHandle=list

Handle=edit

其他模块

Config.php

Function.php

Page 10: 做一个“懒惰”的程序员-LCP框架系列交流

2.3 2.3 支持伪页面开发流程支持伪页面开发流程 (X(X提高提高 11倍,倍, KK提高提高 0.10.1倍倍 ))

开发的时候: ui 和程序可以同时开工。一个应用的劳乏 时间是 “搭积木和不断的润饰的过程” (这点符合面向对象 和 css +div 规范。)

维护的时候,如果是 ui 的问题,不需要影响 dev , dev 的问题,也不需要影响 ui 。好处在于充分发挥不同工种的主动性和功能维护的时效性

(V)Html (C)Control MConfig / function

(V)Html (C)Control (M)model

Css + div 结构

走向完成

产品查看(交互) UI 不断完善 开发不断添加逻辑Leader不断查看进

Page 11: 做一个“懒惰”的程序员-LCP框架系列交流

2.3 2.3 支持伪页面开发流程 支持伪页面开发流程

伪页面 其他流程

谁控制谁? 程序员和 UI 及美工可以同时开工,互补干扰 要么是程序员“主导”美工,要么是美工“主导”程序员,在以前都遇到过。

项目监控 就是在项目一开始,任何人都可以检测软件的运行开发情况

只有项目结束,页面和程序结合的时候可以做。因为有的团队,还一个合的过程。

开发阶段 ui 和程序可以同时开工。一个应用的劳乏 时间是 “搭积木和不断的润饰的过程” (这点符合面向对象 和 css +div 规范。)

维护的时候 如果是 ui 的问题,不需要影响 dev , dev 的问题,也不需要影响 ui 。好处在于充分发挥不同工种的主动性和功能维护的时效性

交互体验? 可以一开始就有交互体验 只有项目完成才可以做,才能看到最后的样子

技术讨论 for

Page 12: 做一个“懒惰”的程序员-LCP框架系列交流

2.4 2.4 模块相互独立 模块相互独立 (( XX提高提高 0.50.5倍,倍, KK提高提高 0.30.3倍)倍)

1 )对于开发来说。对于开发或查找问题,相当方便。 同时,模块之间相互可以调用。同时,可以各个团队之间相互共享开发。

2 )对于团队来说。比如 口碑网 和 淘宝网,是同样是在一个集团下面可以智力共享,功能只要仍进去即可使用。(我们以前有 www.amb2b.com 和 china.amb2b.com 可以共享应用的)

模块1

网站1

模块1

网站2

Copy

技术讨论 for

Page 13: 做一个“懒惰”的程序员-LCP框架系列交流

2.5 2.5 采用异常机制采用异常机制 (X(X提高提高 0.50.5倍,倍, KK提高提高 0.30.3倍倍 ))

异常机制改变了程序开发的方式。利用了 php 的异常作为错误显示机制。而不是单纯的 if else 开发,和 r

eturn false 、 return true 的开发。

view

controller

model error

errorthrow

throw

error view

xml html json wap

success

success view

showtype=xml default showtype=json showtype=wap

技术讨论 for

Page 14: 做一个“懒惰”的程序员-LCP框架系列交流

2.5 2.5 采用异常机制采用异常机制

一个小例子

Control

If(module::userReg()==false){ echo “ 错误”}

Model

Function userReg(){ … return false;}

C-M

错误控制很麻烦.

Control

Module::UserReg();

Model

Function userReg(){ throw SiteException(“ 请填写名称” ) ;}

C-M

错误控制很方便

Framework

捕获异常,并进行表现

技术讨论 for

Page 15: 做一个“懒惰”的程序员-LCP框架系列交流

2.6 2.6 “Light-ORM”“Light-ORM”轻对象数据映射轻对象数据映射 (( 很重要很重要 ,,减少了很多开发工减少了很多开发工作作 ) ) (( XX 提高提高 11 倍,倍, KK 提高提高 0.50.5 倍)倍)数据控制和传输通过对象作为媒介。 为数据验证和完整性带来保障。在控制层只需要了解传输对象即可。其他的靠逻辑层和持久层来完成。

View

Control Model

Swf:xml

Html:Post

User对象注册流程

User对象

User对象

User对象

其他入口

Json

Xml

Php数据

其他格式

调用html表现

UseSession:useReg(Use $use)

UseSession:findUse(array,array)

技术讨论 for

Page 16: 做一个“懒惰”的程序员-LCP框架系列交流

2.7 2.7 ““流”注释开发方式流”注释开发方式 (( 重要重要 ,, 升级后升级后 ) ) (( XX提高提高 11倍,倍, KK提高提高 11倍)倍)

可以进行黑盒测试(性能和逻辑)自动收集测试用例,帮助以后的测试和维护的效率。

技术讨论 for

Page 17: 做一个“懒惰”的程序员-LCP框架系列交流

2.8 2.8 ““数据和表现分离”的多表现形式 数据和表现分离”的多表现形式 (( XX 提高提高 0.30.3 倍,倍, KK 提高提高 0.20.2

倍)倍)

11.自由的发布互联网的 view 。 1 )开发 mvc :一个应用其实就是 数据 + 表现 ( js document.write , xml ,手机界面, json ,) 2 )未来的 www-mvc (互联网级架构)就是 m (云服务) + c (根据自己客户的特性设计不同的控制流程) + v( 显示界面可能放在 淘宝里面,可能放在 51里面,可能放在 facebook里面 ) ,让引流其他平台的用户到自己的平台,

3 )为 google seo 设计(后面也有): 每个程序,自动生成 sitemap.xml (静态更新) 有总 xml 和分 xml 。提供良好的 soap 接口,适合做应用 api 。 让所有其他开发爱好者,通过你提供的 api 利用 curl 和 json ,或 xml 流进行交互。

技术讨论 for

Page 18: 做一个“懒惰”的程序员-LCP框架系列交流

2.8 2.8 ““数据和表现分离”的多表现形式数据和表现分离”的多表现形式

html :数据 + 样式

html di v化:数据 css:样式

xml:数据 css:样式

端(应用)

人类获取信息

J SON:数据

html:数据

wap:数据

数据SRV

3~5年前

1~3年前

现在

盛大

新浪 淘宝校内

云:数据 端(应用)

未来

表现丰富接口可以直接转换成xml , j son, html , wap

CSS+DI V框架

模版分离

应用转换器所有模块通过转换器和所有云兼容

l cp

l cp

l cp

l cp

想到的

Page 19: 做一个“懒惰”的程序员-LCP框架系列交流

2.9 2.9 兼容主流“其他框架” 兼容主流“其他框架” (( XX 提高提高 0.10.1 倍,倍, KK 提高提高 0.10.1 倍)倍)

因为他本来就很轻,所以如果你使用了 phpcake你可以在一些小项目使用 lcp 。或者你有自己的框架里面加入以上思想或功能。 lcp 提供接口。

技术讨论 for

Page 20: 做一个“懒惰”的程序员-LCP框架系列交流

2.10 2.10 自带编程机器人 自带编程机器人 (( XX 提高提高 22 倍,倍, KK 提高提高 0.50.5 倍)倍)

直接演示

总计: X 效率提高 6 倍,功能稳定 K 提高 3 倍

技术讨论 for

Page 21: 做一个“懒惰”的程序员-LCP框架系列交流

3 .3 .之后版本在框架层要加入新的元素:之后版本在框架层要加入新的元素: 目标,只要能改善开发人员和用户的体验都算。

1 )流程化的代码更加深入 (X 提高 0.5 倍, K 提高 0.5 倍 )

2 )增加方便只能的 memcache 机制 (X 提高 0.3 倍, K 提高 0.1 倍 )

3 )机器人更加智能,推出机器人 0.3版本,建立机器人培训机制

(X 提高 2 倍, K 提高 0.1 倍 )

4 )“系统空气开关”增加系统稳定 . (X 提高 0.1 倍, K 提高 1倍 )

5 )继承自动测试 (X 提高 0.1 倍, K 提高 1 倍 )

6 )和 air 结合 (X 提高 0.1 倍, K 提高 0.1 倍 )

X 效率提高 3倍,功能稳定 K 提高 2倍

技术讨论 for

Page 22: 做一个“懒惰”的程序员-LCP框架系列交流

3.1 3.1 创意来自生活创意来自生活

一些 tip :系统空气开关灵感:

最近看到一个应用很慢 ,影响到了 pv.当时 pv损失 78万,后来和 phil等同事吃饭的时候想到灵感 , 在家庭用电里使用了空气开关 ,大大的提高了家庭用电安全 . 想到这个。

具体说明:对于一个功能总有程序没有写优化的地方,如何在潜伏起发现他。

设计功能的时候,就对预计的访问量进行设置 “值得注意” 和“必须解决”等多个 level级别。(这个是框架解决的)

当量到一定的时候,比如到达“值得注意”的时候。 就把相关的 sql 或模块或逻辑发给相关的程序员,进行改进建议。

技术讨论 for

Page 23: 做一个“懒惰”的程序员-LCP框架系列交流

谢谢谢谢 !!让我们做一个懒惰的程序员让我们做一个懒惰的程序员

技术讨论 for

演讲者:李程 网名:东东MSN : [email protected] : 15792827

此讨论 PPT 为 LCP 开发流程系列 PPT 之一,其姊妹 PPT 为:《 LCP 开发体系 - 高效源自流程和工具》 《 LCP体系之 UED 及角色模型 - 企业所有成员需要明白的第一件事》 《 LCP体系之 设计 /PD 同步运算 - 两条流水线并行会更高效 -流程 CPU 》 《 LCP体系之 松散的开发框架 - 属于程序员 / 美工 /产品 /测试 大伙的 LCP 开发框架》《 LCP体系之 编程机器人 - 把程序员 ( 美工 )从代码解放出来 , 要让他们去思考》

Page 24: 做一个“懒惰”的程序员-LCP框架系列交流

4.4.您发现开发中的困难了吗?请说出来。您发现开发中的困难了吗?请说出来。

1 )

2 )

3)

......