首页 > 其他分享 >如何提升结构化设计的能力?

如何提升结构化设计的能力?

时间:2023-05-27 17:05:51浏览次数:38  
标签:API 结构化 代码 结构性 提升 设计 设计模式

软件架构能力指的是为相对复杂的场景定义并引导实施结构化软件方案的能力,其中结构化,代表这个软件在其设计范围内的设计理念、代码结构和实现方式上是同质的。

提升结构化设计能力的起点,其实就是代码的结构性。不过在结构性之前,还有个更朴素的起点,就是代码的整洁性。

在互联网时代,代码整洁主要来自编程规范的掌握和运用、设计抽象和常见设计模式的采用。对于编程规范,各大软件公司一般都有要求,网上可以检索到。

面向对象编程(OOP)的设计思想。OOP 其实是结构化思维的一个重要范式,要求我们认真思考什么是类,什么是对象,什么是对象所具备的属性,什么是对象可能发生的行为,这个行为的作用对象是谁,等等。通过这种对模型本质的思考来定义软件结构,就是提升软件结构性设计能力的有效方法。

另一个对代码整洁性帮助很大的就是设计模式。设计模式的主要价值包括三个方面。

  1. 沉淀经验,用一句话来简单描述就是:如果遇到这种场景,就应该采用这种设计模式。可以说,这是个系统化且高效借鉴他人成功经验的过程。
  2. 传递设计原理,也就是对代码背后思考的一种标准化注释。代码所覆盖的领域可能是全新的,比如是元宇宙中的一个新物种,甚至在现实世界中都不一定有对应的存在。但如果用 _Factory_ 或者 _Visitor_ 这个词,别人马上就会知道这个设计背后的含义,比注释更深远也更准确。可以说,你通过规范化的设计语言表达了自己的思想。
  3. 降低理解和维护代码的门槛。如果实现中经常采用常见的设计模式,就会大幅降低其他人理解和维护你的代码的成本。在代码中,这些设计模式就好比旅游景点里供游人歇息的座椅一样,让另一个在你的代码高山里艰难攀行的路人,突然间找到了一个熟悉的小憩之地。

设计模式与 OOP 思维范式不同。设计模式强调趋同性,用广泛传播的知识来标准化代码的实现,从而降低实现手段和命名的多样性,也就是提升代码的一致性。当然也有人非常反对设计模式,认为设计模式多数时间都被用烂了。很多人为了引用设计模式而得出了错误的设计,这种现象的确存在。但这不是设计模式的问题,而是使用者应用不当的问题。

那么在日常工作中,想做好结构化设计,应该具体关注什么呢

1、设计理念。也就是说,整体设计需要与公司或部门的理念保持一致。

比如整个公司都采用分层架构,那么你的设计也要尽量采用分层架构。整个公司都采用微服务的设计理念,那么你的设计也要采用微服务的设计理念。否则写出来的代码既难维护又难理解,也难以被别人复用。

2、API 的结构性。也就是说,软件模块的对外界面要有比较明显的语义结构。

暴露给其他调用方的 API,要有条理、表达准确,且易于理解。否则,API 在被使用的环境中,会让调用方的代码变得晦涩难懂、结构混乱。

首先是语义表达的结构性。如果把 API 理解成一段文字,那么这段文字需要有内在的顺序和结构,也就是我们强调的语义结构。这种定义具有一定的内在含义和逻辑顺序,因此也就具有宏观的结构性。

其次是功能组织上的结构性。举个例子,一个 API 可能为多个用户角色服务,每个用户角色又有多个场景,每个场景还可能有多个功能。那么这些功能就应该组织成三层的结构:角色、场景和功能。不同的用户角色和不同的使用场景,都应该有不同的设计粒度。

最后是数据模型的结构性。API 会暴露数据给调用方,那么暴露出来的数据就要有清晰的结构,遵守一定的规范。

3、模块内部的结构性,也就是程序的结构性。这种结构性其实是我们前面提到的程序员设计能力的具体体现。

事实上,我们日常工作涉及的很多领域都有现成的国际标准,不需要再去发明创造。使用常见的 SprintBoot 等服务框架,依赖主流而不是小众的技术,遵守 W3C 发布的最佳实践等,都是提升代码结构性的好办法。


标签:API,结构化,代码,结构性,提升,设计,设计模式
From: https://blog.51cto.com/key3feng/6362559

相关文章

  • 源代码管理工具:提升团队协作与开发效率的利器
    在软件开发领域,源代码管理是一项至关重要的任务。随着团队规模的扩大和项目复杂性的增加,有效地管理和协调代码的变更变得尤为重要。为了应对这一挑战,源代码管理工具应运而生。本文将介绍源代码管理工具的概念、作用以及一些流行的工具,以帮助读者理解并选择适合自己团队的工具。......
  • 设计模式概述
    推荐文档:https://www.cnblogs.com/zhili/p/DesignPatternSummery.htmlhttps://www.runoob.com/design-pattern/design-pattern-tutorial.html为什么要使用设计模式?使用设计模式的根本原因是适应变化,为了增加代码复用率,是软件更具有维护性和可扩展性。设计原则单一职责原则......
  • 设计模式之备忘录(Memento)
    概述备忘录模式(MementoPattern),是行为型模式设计模式之一,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护被保存的这些对象状态的完整性以及内部实现不向外暴露,本篇博客,我们就来......
  • MATLAB实验一:一维寻优法(0.618法)程序设计
    一、实验目的通过一维寻优黄金分割法的程序设计,培养计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。二、实验内容(1)用0.618法求解优化问题:minf(x)=x^2-sin(x)在区间[0,1]上的极小点和极小值;(2)根据0.618法算法步骤编写Matlab的程......
  • MATLAB实验二:最速下降法程序设计
    一、实验目的通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式;通过此次实验,进一步巩固最速下降法的基本原理和思想。二、实验内容(1)求解无约束优化问题:(2)完成最速下降法(负梯度法)的MATLAB编程、调试;(3)要求选取多个......
  • MATLAB实验三:Newton法程序设计
    一、实验目的掌握Hesse矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;正确处理实验数据和分析实验结果及调试程序。二、实验内容(1)求解无约束优化问题(3)完成Newton法(牛顿法)的MATLAB编程、调试;(4)选取几个与实验二中相同的初始点,并给出相关实......
  • MATLAB实验四:共轭梯度法程序设计
    一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。二、实验内容 (1)求解无约束优化问题:minf(x)=100(x1^2-x2)^2+(x1-1)^2,x∈R;(2)终止准则取||f(x^k)||<=10^-5,搜索方法采用非精确搜索Armijo;......
  • 设计可以求最短路径的图类
    类包括根据顶点数和边初始化的构造函数,添加边,求两点最短路径等函数1.邻接矩阵classGraph{private:vector<vector<int>>graph;public:Graph(intn,vector<vector<int>>&edges){graph.resize(n,vector<int>(n,INT_MAX/2));for(auto&......
  • AI辅助产品设计
    AI技术在辅助产品设计领域的应用日益广泛。以下是一些AI技术及其在产品设计中的应用:1.设计数据挖掘:AI可以从大量的设计数据中发现模式、趋势和关联,为设计师提供有价值的见解和建议。通过使用自然语言处理和文本挖掘技术,AI可以分析用户反馈、设计趋势等信息,为设计师提供灵感和方向......
  • ABAP-屏幕设计-上门拜访动态切换
    *&---------------------------------------------------------------------**&ReportZHQ_01_04*&*&---------------------------------------------------------------------**&*&*&-------------------------------------------------......