复杂系统设计开发的正道和关键

 

经常见到一些开发人员在讲,使用框架(例如Spring、ORM)是为了解决复杂度的问题,系统太复杂、业务太复杂,如果不用这些,做起来岂不是非常困难?

 

对此,我的看法是,期望工具解决系统复杂度的问题非常不现实,它们起到的是实现(代码)阶段的一些规范化和减少代码量,使程序员对于一些通用类型的模块和工具不再重复工作,但是对真正的系统复杂度,大体上是无能为力的。

 

复杂度的问题,我更赞成的是“系统复杂,实现复杂;系统简单,实现简单”,复杂系统设计和实现非常简单,是不切实际的幻想;简单系统,做的无比复杂,设计师难辞其咎。

 

真正的复杂度降低,应该是靠系统分解来做到的,完整系统切分为一系列相互依赖和通信的子系统组成,合理切分,合理定义依赖和通信是关键;子系统如果还复杂,要切分为模块,模块间一样存在依赖和通信,也需要合理定义;如果模块还是非常复杂,要定义其中的子模块,再往后,定义其中的程序单元(例如包、类、函数等等)。

 

说整个系统是复杂的,这个是常见的现象,甚至说,一个子系统复杂,也很正常,但是你要是经过多次切分,到了一个程序单元那里,还复杂无比,那说明架构师不称职。

 

就像做一把椅子,设计师定义好椅子面、腿、靠背的样式、尺寸以及它们相互对接的部分的明确要求,每个部分实现都不复杂,每个部分只要按照架构师给它的“部件需求规格说明”来设计自己的部分即可。而且,架构师也不用管部件的设计细节,定义先用锯子还是先用刨子。在一个“椅子产品”的设计和实现中,架构师和部件设计实现者各司其职就可以了。

 

实际的软件系统当然比作一把椅子复杂得多,但是这个例子中的方法,是解决复杂度问题的正道。没有工具能够解决你特定业务的的复杂度,因此,应该把一个称职的、优秀的架构师,作为系统设计和开发的核心,这样,才能做到《道德经》说说“挫其锐,解其纷”,做出好的产品。

要在CSS中引入字体文件,你需要进行以下步骤: 1. 首先,创建一个放置字体文件的文件夹,比如命名为"font"。 2. 将字体文件(比如"庞门正道标题体.ttf")放入该文件夹中。 3. 在CSS文件中定义字体,可以创建一个名为"font.css"的文件。 4. 在"font.css"文件中使用@font-face规则来定义字体,如下所示: ``` @font-face { font-family: "庞门正道标题体"; src: url("../font/庞门正道标题体.ttf") format('truetype'); font-weight: normal; font-style: normal; } ``` 这样就定义了一个名为"庞门正道标题体"的字体,并指定了字体文件的路径。 5. 在webpack的配置文件(比如"webpack.base.conf.js")中,添加对字体文件的处理规则。可以使用url-loader来处理字体文件,如下所示: ``` { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('fonts/\[name\].\[hash:7\].\[ext\]') } } ``` 这样配置后,webpack会将字体文件转换为base64编码的DataURL,并将其嵌入到生成的CSS文件中。 这样,你就可以在CSS中引入"庞门正道标题体"字体了。只需在需要使用该字体的地方,使用"font-family"属性来指定字体名称即可。 #### 引用[.reference_title] - *1* *2* [vue项目引入三方字体](https://blog.csdn.net/sinat_37255207/article/details/109644677)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值