10年感触:架构是什么?——消灭架构!

2023-10-24 07:20
文章标签 架构 感触 消灭

本文主要是介绍10年感触:架构是什么?——消灭架构!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

10年感触:架构是什么?——消灭架构!

       代码写给人看的,所以一定要简单直观不容易用错。怎么样才能简单直观呢,依赖于一个漂亮的框架,框架是功能的升华,更是一种约束。如果某个设计模式可以达到这个目的,那么欢迎。如果反而变得复杂了,即便这个复杂换来的是高度的灵活性,我也是反感的,这个时候的灵活的模式反而不如一个switch case好用。最反感的做法就是自以为看了几本c++的经典教程就在代码里使用各种模板,代码各种多态,各种灵活,各种伟大。不是所有符合More Effect条款的都是适合自己的。就好像一个富豪说lv的包很便宜而且好用,如果我们也这样认为的话就大错而特错了。我说的这些话跟下面的文章没有什么直接联系,权当吐槽。



原文:http://www.cnblogs.com/baihmpgy/p/3653373.html

架构是什么?昨天下午我坐飞机从西安到太原的路上,不禁在思考这个问题。我做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的前同事学习!

 

第一步:使用插件架构

image

 

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

image

这个界面框架如下所示。

image

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

image

 

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

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

image

 

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

image

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

 

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

 

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

这篇关于10年感触:架构是什么?——消灭架构!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273611

相关文章

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

【系统架构设计师】黑板架构详解

黑板架构(Blackboard Architecture)是一种软件架构模式,它模仿了多个专家系统协作解决问题的场景。在这种架构中,“黑板”作为一个中央知识库,存储了问题的当前状态以及所有的解决方案和部分解决方案。黑板架构特别适合于解决那些没有确定算法、需要多个知识源(或称为“专家”)共同作用才能解决的复杂问题。 一、黑板架构的组成 黑板架构主要由以下几个部分组成: 黑板(Blackboa

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止