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

Post on 24-Jul-2015

970 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

技术讨论 for

演讲者:李程 网名:东东MSN : lichengdongong@hotmail.comQQ : 15792827

1.1. 前言前言

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

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

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

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

思考:思考:

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

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

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

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

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

技术讨论 for

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

1.2 1.2 交流目的交流目的

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

开发

效率提高稳定提高

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

文档化

转移

开发工具

转移

技术讨论 for

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

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

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

表单 处理

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

技术讨论 for

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

2.1 2.1 类类 windowwindow 结构 结构

模块化 文件分散化

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

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

不好自动采集

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

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

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

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

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

轻框架 重框架

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

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

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

类的注入比较麻烦 . 比较

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

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

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不断查看进

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

伪页面 其他流程

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

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

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

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

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

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

技术讨论 for

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

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

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

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

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

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

技术讨论 for

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

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

想到的

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

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

技术讨论 for

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

直接演示

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

技术讨论 for

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

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

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

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

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

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

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

技术讨论 for

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

技术讨论 for

演讲者:李程 网名:东东MSN : lichengdongong@hotmail.comQQ : 15792827

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

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

1 )

2 )

3)

......

top related