狠狠撸

狠狠撸Share a Scribd company logo
2014奥别产搁别产耻颈濒诲年会分享
寻找适合重构的理论
GhostZhang(张癸鑫)	
 ?
2014.12.27
@GhostZhang
个?人简历
2006.11~2009.09
2009.9~2010.11
2010.11~2011.1
2011.1~now
@GhostZhang
2006.5
2007.12
@GhostZhang
2009年《?一专多?长》
@TwinsenLiang
@GhostZhang
2012年《?方》
专注
?自我定位
换个?角度看问题
拒绝理所当然
@GhostZhang
传承
@GhostZhang
寻找适合重构的理论
@GhostZhang
跨界的理论
单元测试?面向对象
模块化
@GhostZhang
1. Qzone模块化演化过程	
 ?
2. 财付通?支付中?心多场景应?用尝试
@GhostZhang
Askin Bskin Cskin Dskin
Qzone换肤问题
<link	
 ?href=“h9p://imgcache./qzone/skin/A.css”	
 ?rel="stylesheet">
<link	
 ?href=“h9p://imgcache./qzone/skin/B.css”	
 ?rel="stylesheet">
<link	
 ?href=“h9p://imgcache./qzone/skin/C.css”	
 ?rel="stylesheet">
<link	
 ?href=“h9p://imgcache./qzone/skin/D.css”	
 ?rel="stylesheet">
…
@GhostZhang
如何减少维护?工作量?
问题
或质疑
假设
?方案
验证
?方案
@GhostZhang
12
34
@GhostZhang
模块化
模块化
? ?大拆?小
? 可复?用
? 可组合
@GhostZhang
拆——分离的思想
@GhostZhang
Qzone换肤架构演化
Acss Bcss Ccss DcssAcss Bcss Ccss Dcss
Askin Bskin Cskin Dskin
@GhostZhang
Qzone换肤架构演化
Acss Bcss Ccss Dcss
Acss Bcss Ccss Dcss
Askin Bskin Cskin Dskin
表现
结构 相同
@GhostZhang
Qzone换肤架构演化
Acss Bcss Ccss Dcss
AcssBcssCcssDcss
Askin Bskin Cskin Dskin
Gcss
表现
结构
@GhostZhang
模块的演化
A
B
我是?页?面
@GhostZhang
模块的演化
A
B
A
B
@GhostZhang
模块的演化
A
B
A
B
Acss
Bcss
Ahtml
Ahtml
@GhostZhang
模块的演化
A
B
A
B
Acss
Bcss
Gcss
Ahtml
Ahtml
@GhostZhang
新闻
专辑
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
其它
其它
@GhostZhang
新闻
专辑
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
@GhostZhang
专辑
新闻
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
@GhostZhang
新闻
专辑
专辑名称
专辑介绍,这是?一
张专辑,这?里写?一
些对于这张专辑的
介绍内容,让?用户
更容易选择。
img
新闻标题
新闻内容新闻内容新闻内容新闻内容新
闻内容新闻内容
@GhostZhang
标题
标题
width
height
@GhostZhang
width height
标题标题
基础模块
基础结构
基础表现
Acss
Bcss
Ghtml
Gcss
最终位置
最终表现
@GhostZhang
拆好了,如何拼?
@GhostZhang
模块如何拼接?
问题
或质疑
假设
?方案
验证
?方案
@GhostZhang
@GhostZhang
?面向对象
? 独?立对象
? 通过接?口链接
?面向对象
@GhostZhang
独?立——分离的思想
CSS
HTML
JS
@GhostZhang
接?口
<link	
 ?type="text/css"	
 ?href="demo.css"	
 ?rel=“stylesheet"	
 ?/>
<style	
 ?type=“text/css">	
 ?
.demo{}	
 ?
</style>
<div	
 ?class=“demo”>	
 ?
…	
 ?
</div>
<div	
 ?style=“color:#333333;”>	
 ?
…	
 ?
</div>
?文件接?口
代码接?口
@GhostZhang
“代码接?口”的设计
@GhostZhang
“代码接?口”的设计
? 保持接?口两端的独?立性	
 ?
? 更少的变更成本
@GhostZhang
标题
基础模块
最终位置
最终表现width height
基础结构
基础表现
Ghtml
Acss
Bcss
Gcss
@GhostZhang
标题
Acss
Gcss
<div	
 ?class=“	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?”>	
 ?
…	
 ?
</div>
width height
Bcss
代码接?口
@GhostZhang
标题
Acss
Gcss<div	
 ?class=“	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?”>	
 ?
…	
 ?
</div>
width height
Bcss
新闻
代码接?口
@GhostZhang
<div	
 ?class=“	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?”>	
 ?
…	
 ?
</div>
标题
AcssGcss
width height
新闻
代码接?口
专辑
@GhostZhang
标题
width height
新闻
专辑
+ =
Acss
Bcss
A
B
Ghtml Gcss
@GhostZhang
<div	
 ?class=“基础类	
 ?扩展类	
 ?实例类”>	
 ?
var	
 ?实例类	
 ?=	
 ?new	
 ?基础类(扩展类)
Gcss Acss
?
@GhostZhang
标题
扩展类
标题
Gcss 局部调整 Ecss
标题
@GhostZhang
模块样式
@GhostZhang
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
新闻
新闻标题
新闻内容新闻内容新闻内容新闻内容新闻内容新闻
内容 新闻内容新闻内容新闻内容新闻内容新闻内
容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新新闻内容新
闻内容新闻内容新闻内容新闻内容
@GhostZhang
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
新闻
新闻标题
新闻内容新闻内容新闻内容新闻内容新闻内容新闻
内容 新闻内容新闻内容新闻内容新闻内容新闻内
容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新新闻内容新
闻内容新闻内容新闻内容新闻内容
@GhostZhang
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
新闻
新闻标题
新闻内容新闻内容新闻内容新闻内容新闻内容新闻
内容 新闻内容新闻内容新闻内容新闻内容新闻内
容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新新闻内容新
闻内容新闻内容新闻内容新闻内容
@GhostZhang
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
新闻
新闻标题
新闻内容新闻内容新闻内容新闻内容新闻内容新闻
内容 新闻内容新闻内容新闻内容新闻内容新闻内
容新闻内容
新闻标题
新闻内容新闻内容新闻内容新闻内容新新闻内容新
闻内容新闻内容新闻内容新闻内容
@GhostZhang
OOCSS?
@GhostZhang
?面向“效果”的模块化
@GhostZhang
?面向“效果”的模块化
? 以表现为模块划分的参考标准	
 ?
? 以最?大复?用为基础模块的参考标准	
 ?
? 保持模块的独?立性及模块内部的灵活性
@GhostZhang
?面向“效果”的模块化
<div	
 ?class=“基础类	
 ?扩展类	
 ?实例类”>
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
@GhostZhang
?面向“对象”的模块化,像是玩积?木
?面向“效果”的模块化,
像是做积?木
@GhostZhang
Ascene Bscene Cscene Dscene
财付通?支付中?心	
 ?
多场景问题
…
?支付中?心
不同商家接?入的需求存在差异
@GhostZhang
HTML能否模块化?
问题
或质疑
假设
?方案
验证
?方案
@GhostZhang
SHTML
<!-?‐-?‐#include	
 ?virtual=“head.html"-?‐-?‐>
body
head
footer <!-?‐-?‐#include	
 ?惫颈谤迟耻补濒=“蹿辞辞迟别谤.丑迟尘濒&辩耻辞迟;-?‐-?‐&驳迟;
@GhostZhang
SHTML
<!-?‐-?‐#include	
 ?virtual=“cbox.html"-?‐-?‐>
<!-?‐-?‐#include	
 ?virtual=“abox.html"-?‐-?‐>
<!-?‐-?‐#include	
 ?virtual=“bbox.html"-?‐-?‐>
框架
Abox
Bbox
Cbox
@GhostZhang
SHTML
Abox
Bbox
Cbox
Abox
Cbox
@GhostZhang
SHTML
Abox
Bbox
Cbox
Abox
Cbox
Abox
Bbox
Cbox
Abox
Cbox
@GhostZhang
SHTML
Abox Bbox Cbox
Abox
Cbox
Abox
Bbox Bbox
Cbox
…
…
@GhostZhang
@GhostZhang
@GhostZhang
@GhostZhang
@GhostZhang
静态?页?面的输出要求
? 还原设计稿	
 ?
? 兼容多个浏览器
@GhostZhang
重构输出如何做得更好?
问题
或质疑
假设
?方案
验证
?方案
@GhostZhang
做得更好
静态 动态
@GhostZhang
单元测试
单元测试
? 快速?自测
? 辅助测试
? 模拟真实
@GhostZhang
快速添加交互效果
? 显?示/隐藏	
 ?
? 状态切换	
 ?
? Tab选项卡	
 ?
? 弹出层	
 ?
? 聚焦	
 ?
? 列表?高亮
@GhostZhang
快速添加交互效果
@GhostZhang
辅助验证 Demo
@GhostZhang
做得更好
静态 动态
验证环境
@GhostZhang
验证环境
@GhostZhang
SHTML的烦恼
<!-?‐-?‐#include	
 ?virtual=“head.html"-?‐-?‐>head
footer <!-?‐-?‐#include	
 ?惫颈谤迟耻补濒=“蹿辞辞迟别谤.丑迟尘濒&辩耻辞迟;-?‐-?‐&驳迟;
A
B
<!-?‐-?‐#include	
 ?virtual=“a.html"-?‐-?‐>
<!-?‐-?‐#include	
 ?virtual=“b.html"-?‐-?‐>
@GhostZhang
SHTML的烦恼
? SHMTL是包含有“服务器端嵌?入”命令的HTML	
 ?
? ?非静态?页?面会?面临各种不稳定的环境问题	
 ?
? 下游未完成	
 ?
? 环境报错,流程?走不下去	
 ?
? ……
@GhostZhang
Fiddler	
 ?
+	
 ?
SSI	
 ?Proxy
@GhostZhang
@GhostZhang
@GhostZhang
@GhostZhang
@GhostZhang
跨界的理论
单元测试?面向对象
模块化
@GhostZhang
?面向“效果”的模块化
<div	
 ?class=“基础类	
 ?扩展类	
 ?实例类”>
.基础类	
 ?
.扩展类	
 ?
.实例类
.作?用域 .??目标元素 {…}
h`p://blog.cssforest.org/
@GhostZhang
重构的单元测试
h`p://cd.tenpay.com/labs/
@GhostZhang
互为肩膀,共同成?长
@GhostZhang
Thank	
 ?&	
 ?End
Ad

Recommended

D2 如何发现前端性能问题
D2 如何发现前端性能问题
aoao
?
前端 JavaScript 相关的小Tips
前端 JavaScript 相关的小Tips
blank zheng
?
Shopex
Shopex
Shopex Group
?
NetBooster 2016 Summer Workshop - Team B
NetBooster 2016 Summer Workshop - Team B
智誠 何
?
NTT空間情報 航空写真3D ご紹介スライド
NTT空間情報 航空写真3D ご紹介スライド
Michihisa Takahashi
?
Duty Free Sourcing and American Trade Preference Programs
Duty Free Sourcing and American Trade Preference Programs
hertzmanmedia
?
Usability Test for Three Competitive Products - Meituan, Nuomi, and wo Wowotu...
Usability Test for Three Competitive Products - Meituan, Nuomi, and wo Wowotu...
Vanbin Fan, JWMI MBA
?
基于厂别补箩蝉的项目构建
基于厂别补箩蝉的项目构建
Zhang Xiaoxue
?
WTF - What's The Future of Disruption in Travel?
WTF - What's The Future of Disruption in Travel?
Stephenie Rodriguez
?
Shopper marketing for luxury brands in travel retail
Shopper marketing for luxury brands in travel retail
Philip Slade
?
Retail Travel Business Strategy - Panorama Tour Indonesia
Retail Travel Business Strategy - Panorama Tour Indonesia
Widodo Heru Santoso
?
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
?
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
Kuro Hsu
?
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术团队
?
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
美团点评技术团队
?
智能合约结合区块链介绍
智能合约结合区块链介绍
Nicholas Lin
?
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得
Cliff Chao-kuan Lu
?
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
FITCH
?
重构经验分享
重构经验分享
TenJessy
?
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS
jeannewoo
?
高效率的、可维护的颁蝉蝉
高效率的、可维护的颁蝉蝉
simaopig
?
顿颈惫+颁蝉蝉布局大全
顿颈惫+颁蝉蝉布局大全
yiditushe
?
顿颈惫+颁蝉蝉完美布局
顿颈惫+颁蝉蝉完美布局
yiditushe
?
Html&css培训 舒克
Html&css培训 舒克
jay li
?
颁蝉蝉基础
颁蝉蝉基础
Sanmao Zhao
?
CSS 培训
CSS 培训
S S
?
Speed up your web development
Speed up your web development
Spin Lai
?
[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
?
面向对象的颁厂厂
面向对象的颁厂厂
Jerry Xie
?
浏览器工作原理浅析
浏览器工作原理浅析
癸鑫 张
?

More Related Content

Viewers also liked (10)

WTF - What's The Future of Disruption in Travel?
WTF - What's The Future of Disruption in Travel?
Stephenie Rodriguez
?
Shopper marketing for luxury brands in travel retail
Shopper marketing for luxury brands in travel retail
Philip Slade
?
Retail Travel Business Strategy - Panorama Tour Indonesia
Retail Travel Business Strategy - Panorama Tour Indonesia
Widodo Heru Santoso
?
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
?
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
Kuro Hsu
?
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术团队
?
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
美团点评技术团队
?
智能合约结合区块链介绍
智能合约结合区块链介绍
Nicholas Lin
?
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得
Cliff Chao-kuan Lu
?
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
FITCH
?
WTF - What's The Future of Disruption in Travel?
WTF - What's The Future of Disruption in Travel?
Stephenie Rodriguez
?
Shopper marketing for luxury brands in travel retail
Shopper marketing for luxury brands in travel retail
Philip Slade
?
Retail Travel Business Strategy - Panorama Tour Indonesia
Retail Travel Business Strategy - Panorama Tour Indonesia
Widodo Heru Santoso
?
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
?
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
漫談 CSS 架構方法 - 以 OOCSS, SMACSS, BEM 為例
Kuro Hsu
?
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术沙龙07 - 大众点评支付渠道网关系统实践
美团点评技术团队
?
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
美团点评技术团队
?
智能合约结合区块链介绍
智能合约结合区块链介绍
Nicholas Lin
?
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得
Cliff Chao-kuan Lu
?
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
Retail 2020: Retail Will Change more in the Next 5 Years than the Last 50
FITCH
?

Similar to 2014奥别产搁别产耻颈濒诲年会分享 (19)

重构经验分享
重构经验分享
TenJessy
?
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS
jeannewoo
?
高效率的、可维护的颁蝉蝉
高效率的、可维护的颁蝉蝉
simaopig
?
顿颈惫+颁蝉蝉布局大全
顿颈惫+颁蝉蝉布局大全
yiditushe
?
顿颈惫+颁蝉蝉完美布局
顿颈惫+颁蝉蝉完美布局
yiditushe
?
Html&css培训 舒克
Html&css培训 舒克
jay li
?
颁蝉蝉基础
颁蝉蝉基础
Sanmao Zhao
?
CSS 培训
CSS 培训
S S
?
Speed up your web development
Speed up your web development
Spin Lai
?
[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
?
面向对象的颁厂厂
面向对象的颁厂厂
Jerry Xie
?
浏览器工作原理浅析
浏览器工作原理浅析
癸鑫 张
?
Koubei banquet 34
Koubei banquet 34
Koubei UED
?
础濒颈肠别库构建
础濒颈肠别库构建
Sofish Lin
?
Alice v3
Alice v3
Zheng Biao
?
郑焕义 重温网站重构
郑焕义 重温网站重构
Webrebuild
?
Reviews of Designing with Web Standards
Reviews of Designing with Web Standards
avenirzheng
?
Banquet 012
Banquet 012
Koubei UED
?
Css
Css
fzuhua
?
重构经验分享
重构经验分享
TenJessy
?
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS
jeannewoo
?
高效率的、可维护的颁蝉蝉
高效率的、可维护的颁蝉蝉
simaopig
?
顿颈惫+颁蝉蝉布局大全
顿颈惫+颁蝉蝉布局大全
yiditushe
?
顿颈惫+颁蝉蝉完美布局
顿颈惫+颁蝉蝉完美布局
yiditushe
?
Html&css培训 舒克
Html&css培训 舒克
jay li
?
CSS 培训
CSS 培训
S S
?
Speed up your web development
Speed up your web development
Spin Lai
?
[2008]网站重构 -who am i
[2008]网站重构 -who am i
Twinsen Liang
?
面向对象的颁厂厂
面向对象的颁厂厂
Jerry Xie
?
浏览器工作原理浅析
浏览器工作原理浅析
癸鑫 张
?
Koubei banquet 34
Koubei banquet 34
Koubei UED
?
础濒颈肠别库构建
础濒颈肠别库构建
Sofish Lin
?
郑焕义 重温网站重构
郑焕义 重温网站重构
Webrebuild
?
Reviews of Designing with Web Standards
Reviews of Designing with Web Standards
avenirzheng
?
Ad

2014奥别产搁别产耻颈濒诲年会分享