游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛茶馆

关注:121

当前位置:游戏蛮牛 交流专区 蛮牛茶馆

查看: 4520|回复: 17

[每天程序猿] 10年感触:架构是什么?——消灭架构!

[复制链接]  [移动端链接]
排名
3
昨日变化

6878

主题

7402

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
9877
威望
30
注册时间
2013-7-29
在线时间
3535 小时
最后登录
2018-10-18

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

发表于 2016-5-25 10:44:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
  架构是什么?昨天下午我坐飞机从西安到太原的路上,不禁在思考这个问题。我做C#开发已经11年了,做过很多项目,经历了很多项目开发过程中的折磨,在小企业兼职过不靠谱的“技术总监”,在大公司也当过码工,见识过很多牛人,分析过牛人的代码,并且也和团队设计了OSGi.NET框架和iOpenWorks插件仓库平台。回想这么多年的软件开发经验,我发现自己一直在追逐如何使软件开发做的更好,如何让一个团队开发出一个像样的软件产品,而不是像大多数的国人生产的丑陋不堪、经常出现各种古怪问题的企业软件。

  目前除了做软件开发平台,我们还深入到热力、能耗监测等能源监控领域,进入这个领域之后,发现传统的几个大厂家,做的软件都极其的烂,那软件简直丑的不能再丑了,送给我我都不要。这些厂家那么有钱,他们做不出好软件?真是不可思议。因此,我跟我的合作伙伴放出豪言,我们要做这个行业最好的软件,要做到这个领域的第一。

  哈哈,话说出来容易!当我在一个特定环境下,带领一个新的、刚刚成立的团队尝试来开发这么一个软件的时候,我却发现我们软件的第一个版本也是其丑无比。这才恍然大悟,或许那些厂家的软件开发也是这么的方式来生产的。这样生产出来的软件要满足用户的需求,那这些开发人员得遭多少罪,才能够在一个不靠谱的软件修修补补使其稍稍靠谱。

  因此,我开始反思,怎么能使一个新团队开发一个好的软件产品?

  答案和我的标题是一样的,我要依靠架构。那么架构是什么?

  架构是一个约定,一个规则,一个大家都懂得遵守的共识。那这是什么样的约定、什么样的规则、什么样的共识呢?

  我以包为例,我经常出差,双肩背包里装了不少东西。笔记本电脑、电源、2个上网卡、鼠标、USB线、一盒大的名片、一盒小的名片、口香糖、Mini-DisplayPort转VGA接口、U盘、几根笔、小螺丝刀、洗漱用品、干净衣服、袜子、香水、老婆给我带的抹脸膏(她嫌我最近累,脸有点黄)、钱包、Token卡、耳机、纸巾、USB线、U盘等。这个包有很多格子,最外面的格子我放常用的,比如笔、纸、一盒小的名片等;中间的格子一般放的是衣服、袜子、洗漱用品、香水等;靠背的那个大格子放了笔记本电脑,和笔记本电脑相近的小格子放的是两个上网卡、Mini-DisplayPort转VGA接口、大盒名片、记事本,和笔记本电脑相近的大格子放的是电源、鼠标、口香糖等。

  我闭着眼睛都可以将我的东西从包里掏出来,闭着眼睛都可以将东西塞到包里!但是,非常不幸的是,一旦我老婆整理过我的包,那我就很惨了,老是因为找不到东西而变得抓狂!更不幸的,要是我那个不到两岁的“小可爱”翻过,就更不得了了。

  这个包就是我放所有物品的“架构”,每一个东西放置的位置就是我的“约定、规则、共识”。倘若我老婆也知道我的“架构”、我的“约定、规则、共识”,那么不管她怎么动我的包,我都照样能够轻易的拿东西或者放东西。进一步,如果我的同事也知道我的“架构”,知道我的“约定、规则、共识”,那么他们什么时候动我的包,我也毫无所知!

  恍然大悟!我前一个公司Sybase,所有的产品都是基于一个统一的插件开发平台,每一个产品都是一个插件,每一个插件都按照名字约定好了BO(Controller)、GO(View)、SO(Model/DataAccessor),定义好PropertyPage、PropertyDialog、Wizard。我记得当我确定工作角色后,我就拿到一个开发文档,里面描述了这些目录、名字的规则,有UI文字陈述规则、文字的大小规则等,一周内我就能够修Bug,一个月之后我就能做New Feature,然而,我此时对我们的平台、框架依然一无所知。过了1年后,产品依然遵守约定不断进行改进,在维护过程中,我们竟然丝毫没有感觉到累。基于这样的框架做产品,我发现不管是什么人,开发的样式都完全一致。我以前竟然丝毫没有觉得惊讶!

  在公司混了两年之后,有点成为老鸟了,还很得瑟的整了一个《Flex UI Composition SDK》,就是基于Flex的界面组合组件,搞的老漂亮了,代码写的好看,文档搞的正式,而且这个小SDK功能强大且很灵活。老大很给面子,让我给美国的架构组Show一下。我很激情的在半夜里用电话会议和那帮很牛的架构师、专家级工程师展示我的SDK。完事后,印象很深刻,一个很资深的老外架构师提了一句,他觉得这个SDK有点复杂。

  以前我不太理解为什么他会说复杂。原因很简单,以他的技术,使用这个SDK我觉得没有太大的问题,只要稍稍学习就好了。后来,我终于慢慢想通了。这个SDK不好的地方在于太灵活了,灵活到无法构建一个统一标准的、容易让人遵守的“约定、规则、共识”。在没有“共识”的支撑下,这样的系统经过若干人维护后,那绝对玩完了,成“万人坑”了,谁改代码就坑谁,以后什么事情都有可能发生的。

  于是,我有一点点想明白了,架构就是这么的一个共识。当共识普遍传递的时候,架构就消失了,开发好的软件就成为了习惯。

  这就是为什么有高人提出“消灭架构”!哦,天啊,这帮人太变态了,他们这么早就想通了!

  谈到这,我也有必要继续分享一下,我在新的团队是如何消灭架构的。方法很简单,和Sybase的前同事学习!

  第一步:使用插件架构

1.png

  第二步:定制统一的界面框架


2.png

  这个界面框架如下所示。

3.png

  该框架约定了统一的界面样式,比如按钮、磁贴、标签页、导航条、进度条、Form等等。

4.png

  第三步:定制插件的统一架构

  每一个插件都创建5个目录:Controllers、DataAccessors、Models、ViewModels、Views,如下所示。每一个目录存放的代码通过名字都知道是什么了。

5.png

  第四步:定制开发模板(升华,该步骤不是必须的,是为了更好提高易用性,让傻瓜也可以开发插件,仅供参考)

6.png

  在主程序模板可以保护统一数据访问、统一安全管理等功能模块。

  哈哈,这个方法终于能使新团队开发出具有较为统一风格、较高质量的软件产品了!这时候,你会发现,所有人都不需要关心架构了,我们只有共识。

  这样,架构被成功消灭了,架构的目标就是消灭架构!但是,如果架构被消灭了,架构师不也被消灭了吗?这个搞笑的问题留给读者吧。

  附:关于架构的官方定义,建议参考《Java应用架构设计》,该书很经典。本文关于“架构就是共识、消灭架构”说法,来自于该书。我不是“架构就是共识、消灭架构”说法的发明者。

      作者:道法自然
      原文链接:http://www.cnblogs.com/baihmpgy/p/3653373.html

评分

参与人数 3鲜花 +7 收起 理由
小枫小 + 4 很给力!
wx_LkCNc1Rv + 1 顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶.
pilibengpa + 2 很给力!

查看全部评分

[发帖际遇]: 一个袋子砸在了 清风 头上,清风 赚了 1 蛮牛币. 幸运榜 / 衰神榜

跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复

使用道具 举报

排名
12146
昨日变化
11

8

主题

58

帖子

204

积分

UID
12081
好友
18
蛮牛币
551
威望
0
注册时间
2014-1-8
在线时间
66 小时
最后登录
2017-12-22
QQ
发表于 2016-5-25 13:09:22 | 显示全部楼层
框架就是指导普通员工去工作的一个标准,好用就好,没有框架一样完成工作,只是没有一个标准,后期维护很困难。

回复 支持 反对

使用道具 举报

7日久生情
2877/5000
排名
341
昨日变化

0

主题

572

帖子

2877

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
88896
好友
0
蛮牛币
11463
威望
0
注册时间
2015-4-2
在线时间
597 小时
最后登录
2018-10-20
发表于 2016-5-26 06:39:23 | 显示全部楼层
看了你的文章,很是赞同,确实是有经历的老手!

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1386/1500
排名
1746
昨日变化
1

7

主题

325

帖子

1386

积分

Rank: 6Rank: 6Rank: 6

UID
104110
好友
0
蛮牛币
312
威望
0
注册时间
2015-5-29
在线时间
339 小时
最后登录
2018-2-24
发表于 2016-5-26 09:14:14 | 显示全部楼层
很同意,软件越做越复杂,真正好的软件是易于修改易于扩充的,功能倒是排到第二位了。

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1038/1500
排名
2050
昨日变化
7

1

主题

43

帖子

1038

积分

Rank: 6Rank: 6Rank: 6

UID
143714
好友
4
蛮牛币
1834
威望
0
注册时间
2016-3-28
在线时间
360 小时
最后登录
2018-10-19
发表于 2016-5-26 10:38:04 | 显示全部楼层
6666666666666666

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1104/1500
排名
2203
昨日变化

2

主题

170

帖子

1104

积分

Rank: 6Rank: 6Rank: 6

UID
6484
好友
2
蛮牛币
3747
威望
0
注册时间
2013-10-27
在线时间
328 小时
最后登录
2018-8-28
发表于 2016-5-26 15:24:24 | 显示全部楼层
深有体会

回复

使用道具 举报

5熟悉之中
708/1000
排名
4130
昨日变化
3

5

主题

112

帖子

708

积分

Rank: 5Rank: 5

UID
55392
好友
6
蛮牛币
827
威望
0
注册时间
2014-11-14
在线时间
259 小时
最后登录
2018-10-16
发表于 2016-6-22 15:01:50 | 显示全部楼层
eagle1098 发表于 2016-5-26 09:14
很同意,软件越做越复杂,真正好的软件是易于修改易于扩充的,功能倒是排到第二位了。 ...

这句话说得真好

回复 支持 反对

使用道具 举报

2初来乍到
109/150
排名
14900
昨日变化
8

0

主题

28

帖子

109

积分

Rank: 2Rank: 2

UID
234798
好友
0
蛮牛币
154
威望
0
注册时间
2017-7-28
在线时间
33 小时
最后登录
2018-2-5
发表于 2017-11-16 14:45:44 | 显示全部楼层
现代社会的分工很明确,需要大量的协作,协作的一致性就要有规范,约定,共识来达成。框架即共识,是为了协作的一致性,从高效,高质的完成任务。当一个行业或一个工种发展到一定的高度,共识即习惯后,就可以消灭构架了。
[发帖际遇]: gfanny 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

7日久生情
2730/5000
排名
2930
昨日变化
28

2

主题

1841

帖子

2730

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10455
威望
0
注册时间
2017-9-6
在线时间
409 小时
最后登录
2018-10-21
发表于 2017-11-17 09:29:43 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

4四处流浪
436/500
排名
5417
昨日变化
3

2

主题

90

帖子

436

积分

Rank: 4

UID
250757
好友
1
蛮牛币
1396
威望
0
注册时间
2017-10-25
在线时间
98 小时
最后登录
2018-9-25
发表于 2017-11-18 09:32:17 | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
2730/5000
排名
2930
昨日变化
28

2

主题

1841

帖子

2730

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10455
威望
0
注册时间
2017-9-6
在线时间
409 小时
最后登录
2018-10-21
发表于 2017-11-22 08:34:14 来自Mobile--- | 显示全部楼层
感谢感谢你

回复

使用道具 举报

5熟悉之中
599/1000
排名
3149
昨日变化
3

0

主题

21

帖子

599

积分

Rank: 5Rank: 5

UID
235336
好友
0
蛮牛币
1270
威望
0
注册时间
2017-8-1
在线时间
138 小时
最后登录
2018-9-11
发表于 2017-11-22 09:30:26 | 显示全部楼层

回复

使用道具 举报

排名
22113
昨日变化
6

0

主题

8

帖子

38

积分

Rank: 1

UID
267148
好友
0
蛮牛币
85
威望
0
注册时间
2018-1-31
在线时间
10 小时
最后登录
2018-5-29
发表于 2018-2-5 11:43:54 | 显示全部楼层
很不错。文章里说的很好,很容易理解,受教。

回复 支持 反对

使用道具 举报

5熟悉之中
862/1000
排名
18504
昨日变化
12

0

主题

363

帖子

862

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1613
威望
0
注册时间
2015-6-24
在线时间
465 小时
最后登录
2018-10-16
发表于 2018-2-24 16:38:40 | 显示全部楼层
无招胜有招,做到心中无码,应对任何问题都可以看得透透的

回复 支持 反对

使用道具 举报

5熟悉之中
526/1000
排名
4017
昨日变化
15

0

主题

45

帖子

526

积分

Rank: 5Rank: 5

UID
197052
好友
0
蛮牛币
2109
威望
0
注册时间
2016-12-29
在线时间
139 小时
最后登录
2018-10-19
发表于 2018-3-8 11:17:27 | 显示全部楼层
多谢分享经验

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表