做一个“懒惰”的程序员-lcp框架系列交流
TRANSCRIPT
![Page 1: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/1.jpg)
做一个“懒惰”的程序员做一个“懒惰”的程序员 ““ 懒惰” 懒惰” : :
其实的意思是,想办法让一些工具或框架帮助我们去其实的意思是,想办法让一些工具或框架帮助我们去做事,让更多时间去思考和休息。做事,让更多时间去思考和休息。
技术讨论 for
演讲者:李程 网名:东东MSN : [email protected] : 15792827
![Page 2: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/2.jpg)
1.1. 前言前言
关键词:“工作创新” 关键词:“工作创新”
““ 人类创新方法之一就是如何把‘劳动’更大程度分摊给‘机器或其他物种’人类创新方法之一就是如何把‘劳动’更大程度分摊给‘机器或其他物种’ ,, 这这
也是人和动物的区别之一。也是人和动物的区别之一。””
开发者需要大部分时间 ’思考’ 而非 ‘编程’ 开发者需要大部分时间 ’思考’ 而非 ‘编程’ ,,
思考:思考:
11 )如何)如何 "" 分享经验“ 分享经验“ (( 灌输给框架灌输给框架 ) )
22 )如何性能提高 )如何性能提高 (( 灌输给框架灌输给框架 ) )
33 )如何更好沟通 )如何更好沟通 (( 灌输给框架灌输给框架 ) )
44 )了解未知的学习 )了解未知的学习 (( 剩下的时间剩下的时间 ) )
55 )快乐 )快乐 (( 剩下的时间剩下的时间 ))
技术讨论 for
![Page 3: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/3.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/4.jpg)
1.2 1.2 交流目的交流目的
大家做个交流,目的是大家提出更多意见,让大家更 “懒惰” 的工作。
开发
效率提高稳定提高
开发框架 转移 自动编程转移
文档化
转移
开发工具
转移
技术讨论 for
![Page 5: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/5.jpg)
2 .LCP 2 .LCP 框架的一些特点框架的一些特点
LCP 框架 是以前几年来工作的同事们总结的一些方法得到的框架。LCP 框架是 LCP 体系中的一小部分,帮助完成开发的工作。LCP 框架 以 XK 指数衡量 框架发展成功与否。
XKXK 工作愉悦指数工作愉悦指数 == 开发效率开发效率 XX + + 功能稳定功能稳定 KK
表单 处理
不谈编程先,谈谈现在的生活,(l cp主要的东西基于生活)
技术讨论 for
![Page 6: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/6.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/7.jpg)
2.1 2.1 类类 windowwindow 结构 结构
模块化 文件分散化
文件管理 方便 , 需要改哪个功能就去哪个文件夹找 文件查找不方便 (discuz 就是这样 )
统计智能化 文件夹分了 , 可以直接进行统计什么功能的什么操作 , 运行和执行的情况
不好自动采集
SEO 文件结构化后,可以统一 seo 化
统一表现转换 可以瞬间 网站 Wap 化
模块调用 import 一个模块即可 调用很麻烦 ,include 的路径问题比较复杂
![Page 8: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/8.jpg)
2.2 2.2 Light FrameworkLight Framework 轻框架 轻框架 (( XX 提高提高 0.30.3 倍,倍, KK 提高提高 0.10.1 倍)倍)
轻就是很简洁, 1 个小时就可以学会的框架。采用“轻”架构,兼容性问题, php 的强项不是做 oo 应用。他更多是轻巧,在以前团队中开发人员,用过 phpcake , zendframework ,这种很适合做系统软件的应用。
轻框架 重框架
学习 很快进入角色 需要对框架进行不断的学习 , 编程的速度取决于你对框架的了解程度
松散 很松散 , 即可以灵活的使用其他类文件 .
注入很方便 , 扩展很方便 , 方便扩展其他框架 , 也可以注入其他框架
类的注入比较麻烦 . 比较
适合 适合快速开发和业务经常修改的互联网应用 适合文档确定的软件开发 , 而且稳定性
![Page 9: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/9.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/10.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/11.jpg)
2.3 2.3 支持伪页面开发流程 支持伪页面开发流程
伪页面 其他流程
谁控制谁? 程序员和 UI 及美工可以同时开工,互补干扰 要么是程序员“主导”美工,要么是美工“主导”程序员,在以前都遇到过。
项目监控 就是在项目一开始,任何人都可以检测软件的运行开发情况
只有项目结束,页面和程序结合的时候可以做。因为有的团队,还一个合的过程。
开发阶段 ui 和程序可以同时开工。一个应用的劳乏 时间是 “搭积木和不断的润饰的过程” (这点符合面向对象 和 css +div 规范。)
维护的时候 如果是 ui 的问题,不需要影响 dev , dev 的问题,也不需要影响 ui 。好处在于充分发挥不同工种的主动性和功能维护的时效性
交互体验? 可以一开始就有交互体验 只有项目完成才可以做,才能看到最后的样子
技术讨论 for
![Page 12: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/12.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/13.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/14.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/15.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/16.jpg)
2.7 2.7 ““流”注释开发方式流”注释开发方式 (( 重要重要 ,, 升级后升级后 ) ) (( XX提高提高 11倍,倍, KK提高提高 11倍)倍)
可以进行黑盒测试(性能和逻辑)自动收集测试用例,帮助以后的测试和维护的效率。
技术讨论 for
![Page 17: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/17.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/18.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/19.jpg)
2.9 2.9 兼容主流“其他框架” 兼容主流“其他框架” (( XX 提高提高 0.10.1 倍,倍, KK 提高提高 0.10.1 倍)倍)
因为他本来就很轻,所以如果你使用了 phpcake你可以在一些小项目使用 lcp 。或者你有自己的框架里面加入以上思想或功能。 lcp 提供接口。
技术讨论 for
![Page 20: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/20.jpg)
2.10 2.10 自带编程机器人 自带编程机器人 (( XX 提高提高 22 倍,倍, KK 提高提高 0.50.5 倍)倍)
直接演示
总计: X 效率提高 6 倍,功能稳定 K 提高 3 倍
技术讨论 for
![Page 21: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/21.jpg)
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框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/22.jpg)
3.1 3.1 创意来自生活创意来自生活
一些 tip :系统空气开关灵感:
最近看到一个应用很慢 ,影响到了 pv.当时 pv损失 78万,后来和 phil等同事吃饭的时候想到灵感 , 在家庭用电里使用了空气开关 ,大大的提高了家庭用电安全 . 想到这个。
具体说明:对于一个功能总有程序没有写优化的地方,如何在潜伏起发现他。
设计功能的时候,就对预计的访问量进行设置 “值得注意” 和“必须解决”等多个 level级别。(这个是框架解决的)
当量到一定的时候,比如到达“值得注意”的时候。 就把相关的 sql 或模块或逻辑发给相关的程序员,进行改进建议。
技术讨论 for
![Page 23: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/23.jpg)
谢谢谢谢 !!让我们做一个懒惰的程序员让我们做一个懒惰的程序员
技术讨论 for
演讲者:李程 网名:东东MSN : [email protected] : 15792827
此讨论 PPT 为 LCP 开发流程系列 PPT 之一,其姊妹 PPT 为:《 LCP 开发体系 - 高效源自流程和工具》 《 LCP体系之 UED 及角色模型 - 企业所有成员需要明白的第一件事》 《 LCP体系之 设计 /PD 同步运算 - 两条流水线并行会更高效 -流程 CPU 》 《 LCP体系之 松散的开发框架 - 属于程序员 / 美工 /产品 /测试 大伙的 LCP 开发框架》《 LCP体系之 编程机器人 - 把程序员 ( 美工 )从代码解放出来 , 要让他们去思考》
![Page 24: 做一个“懒惰”的程序员-LCP框架系列交流](https://reader031.vdocuments.pub/reader031/viewer/2022020713/55b16404bb61ebda488b47c4/html5/thumbnails/24.jpg)
4.4.您发现开发中的困难了吗?请说出来。您发现开发中的困难了吗?请说出来。
1 )
2 )
3)
......