软件设计的风格

风格对于软件系统,犹如文化对于人类社会,对于组成系统的各个要素(无论模块、组件、对象还是函数),都会施加影响,只要是在运用该风格的边界范围之内。 2017-08-28 15:00:20 软件系统架构风格 编写现代CSS代码的20个建议 在传统的布局中我们习惯使用Floats或者inline-blocks,不过它们更适合于格式化文档,而不是整个网站。而Flexbox则是专门的用于进行布局的工具。Flexbox模型允许开发者使用很多便捷可扩展的属性来进行布局,估计你一旦用上就舍不得了。 2017-08-28 14:58:19 CSSFlexbox注释格式优化 Python开发者面向文档编程的正确姿势 很多人没有写注释的习惯,大多数不是因为懒惰,一方面是没有意识到写文档的好处,另一方面是不了解这方面的工具。毕竟从管理上依赖于人的主动性是远不如依赖于工具有效的。本文介绍如何利用Python注释提升文档书写的质量以及效率的小技巧。 2017-08-28 14:28:44 Python文档编程正确姿势 企业部署混合云面临的场景困境与破局战略 原创 混合云在未来很多场景中,需要的不仅仅是控制面打通,更关键在于如何解决数据面不同的问题。混合云未来的趋势一定是在数据融合上和数据交互上发生更多的关系,不再仅仅只是单独控制面程度。此外还有发力大数据与AI领域等。 2017-08-28 07:43:27 企业部署混合云 浮点运算潜在的结果不一致问题 昨天发现了项目中的一个 bug ,是因为浮点运算的前后不一致导致的。明明是完全相同的 C 代码,参数也严格一致,但是计算出了不相同的结果。我对这个现象非常感兴趣,仔细研究了一下成因。 2017-08-25 17:59:41 浮点运算C语言 Paradox 的数据文件格式 Paradox 是我很喜欢的一个游戏公司,在所谓 P 社 5 萌中,十字军之王和钢铁雄心都只有浅尝,但在维多利亚和群星上均投入了大量时间和精力。 2017-08-25 17:41:17 Paradox数据文件格式 一个由正则表达式引发的血案 在测试环境,这个表达式从功能上符合业务方的要求,就被发布到了马来西亚的线上环境。结果上线之后,发现线上机器时有发生CPU飙到100%的情况,导致整个站点响应异常缓慢。 2017-08-25 16:38:05 表达式正则血案 Bitmap 比你想的更费内存 | 吊打 OOM 在一个 App 中,无可避免的会有一些 Bitmap 的资源,会被打包在 apk 中,随着 apk 发布出去。而当你在使用这些 Bitmap 的资源的时候,它到底需要占用多少内存空间?这是一个很实际的问题,把握不好就可能引发各种 OOM 的错误。 2017-08-25 14:46:43 OOMBitmap内存 Google升级App Engine防火墙:方便开发者限制特定IP 为了方便开发者和管理员们借助 App Engine 限制特定流量来源的访问,Google 特地推出了一项全新的防火墙功能。 2017-08-25 14:28:23 Google 利用TensorFlow和神经网络来处理文本分类问题 本文介绍了如何使用神经网络和 TensorFlow 来处理文本分类任务。它介绍了与实验有关的基础信息。

风格对于软件系统,犹如文化对于人类社会,对于组成系统的各个要素(无论模块、组件、对象还是函数),都会施加影响,只要是在运用该风格的边界范围之内。

[[201406]]

1

风格对于软件系统,犹如文化对于人类社会,对于组成系统的各个要素(无论模块、组件、对象还是函数),都会施加影响,只要是在运用该风格的边界范围之内。

这种风格影响如文化烙印一般,体现出一种强烈的一致性。当然,一旦选错了风格,那就好像17世纪中,五月花的落魄船员们闯入了印第安人的部落,可能会是混乱、风格的格格不入。

2

Roy Fielding对风格的定义为:

“风格是一种用来对架构进行分类和定义它们的公共特征的机制。每一种风格都为组件的交互提供了一种抽象,并且通过忽 略架构中其余部分的偶然性细节来捕获一种交互模式(pattern of interation)的本质特征。”

这个定义有两个关键词:

  • 分类
  • 共同特征

这两个关键词皆与抽象有关。

同时,这句话还提及了风格与协作之间的关系,即它是对协作的抽象。架构风格应不涉及详细设计细节,需要找出那些稳定不变的本质特征,且这个特征是与系统的目标与需求是相匹配的。

3

Roy Fielding在论文《架构风格与基于网络的软件架构设计》中写道:

网络研究则恰恰相反,集中于系统之间普通的通信行为的细节和提高特殊通信技术的性能,却常常忽略了一个事实,即改变一个应用的交互风格对于性能产生的影响要比改变交互所使用的通信协议更大。

这事实上体现了宏观架构与微观架构之间的关系,二者应该保持一致。当然,宏观架构的影响是战略的影响,微观架构的影响是战术的影响,在分而治之的架构原则下,微观架构产生的影响虽然存在,但影响主要还是发生在局部。

4

画出自己的边界线,在边界之内保证风格的一致性。边界外,看待风格的一致性又有另外的标准。

风格对设计起指导作用,并由此驱动对一系列架构属性的满足。架构属性还包括对架构的约束,这些约束一方面能够对设计与实现进行规范,另一方面也可以减少选择项,让设计变得更为简单。

5

一种架构风格是一组协作的架构约束,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。

将风格视为约束是合理的,但约束更像是对一个封闭的大的集合中的裁剪,规定你不能做什么。风格不仅要规定你不能做什么,还要告诉你应该做什么,它要处理的是一个开放的大的空间,我们需要找到该空间内和谐的内容,并把不和谐的部分剔除出去。剔除出去的这部分内容其实就是违背了架构约束的内容。

架构风格强调的是软件架构的不同方面,一种特定的架构可能有多种架构风格组成。这就体现了架构风格是有层次的。

为了保证架构的一致性,需要在整体层面体现为统一的架构风格,而在不同边界内,展现另外的架构风格。换言之,这种风格的多样性与隔离性,以及风格的层次其实是与架构的层次相对应的。

6

对于设计风格而言,除了要保证风格的一致性外,关键的是要找到一种与正在解决的问题最为匹配的风格。

要了解自己需要解决的问题,同时还要了解不同的架构风格的特征与优缺点,清楚地知道这些架构风格究竟适合处理哪种场景。

【本文为清一色专栏作者“张逸”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月5日 00:49
下一篇 2023年5月5日 00:49

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信