
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了程序员需要掌握的一些软件设计方法等内容,而本文我们就继续来学习一下,模块化编程开发原则都有哪些类型。
1)单一职责原则
当组件有一个的精确目标时,就称它们遵循SRP。
2)API优先原则
专注于公共接口的设计是开发可维护组件系统的关键。好的接口设计可以使访问组件的基本或常见的用例变得简单,而且有足够的灵活性来支持出现的其他用例。
API设计的解决之道在于弄清楚使用者需要哪些属性和方法,同时使接口尽可能小。
关注的重点是可改进的空间、边缘用例、如何更改API,以及现有的API是否能够在不破坏向后兼容性的情况下具有更多的用途。
3)揭示模式
如果一个组件中的所有功能都被公开,就没有什么可以被视为实现的细节,因此很难对该组件进行更改。
将所有内容封装在一个闭包中,这样就不会暴露全局变量,并且功能的实现是私有的,返回一个公共API。
与其暴露好几个接触点让使用者选择,不如只暴露一个接触点,这个接触点可以根据使用者提供的输入执行恰当的代码路径。
4)寻找正确的抽象
深入挖掘,在该需求的特性,为路线图规划的特性,以及希望在未来调整组件以支持的特性之间找到共同点。
抽象极大地减少了代码重复的问题,同时还能一致地处理所有用例,限制了复杂性的产生。
如果合并一开始并不相关的用例,实际上是增加了复杂性,终会创建比实际需要更紧密的耦合。
好是等到出现一个可区分的模式之后再行动,这时才能明显地看到,引入抽象将有助于降低复杂性。
抽象会产生复杂性,因为它引入了新的中间层,削弱了跟踪程序周围不同代码流的能力。
5)状态管理
状态就是用户输入的函数:当用户与应用程序进行交互时,状态会增长并发生变化。
模块化设计的目标之一是让状态的数量尽可能少。
模块化设计通过将状态树划分成可管理的小块来解决这个问题,树的每个分支都处理状态的一个特定子集。
6)CRUST原则
1、一致(consistent)意味着幂等。代码风格一致能减少开发者之间的摩擦以及合并代码时的冲突;函数形态一致,提高可读性,符合直觉;命名和架构一致则能减少意外,保持代码的一致性。
2、弹性(resilient)意味着灵活,并且接受几种不同的方式的输入,包括可选参数和重载。
3、明确(unambiguous)即对于如何使用API的功能、如何提供输入或理解其输出,没有多种不同解释。对于相同类型的结果,应该返回相同类型的输出。
4、简单(simple)是指使用,处理一般用例几乎不需要配置,对于高级用例允许其定制。通过对常见用例进行优化,可以了解在保持接口简单性方面还有多大空间。
5、小巧(tiny)即够用但没有过度设计,包含尽可能小的表面积,同时为未来的非破坏性拓展留有空间。更少的失败测试用例、BUG、滥用接口的方式、需要的文档。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。