2023.11.2

第28节:时间耦合

这一节讨论了时间耦合,即与时间相关的各种问题,包括并发、次序和解除时间次序上的依赖。

1. 时间耦合是关于时间的各种事项,如并发、次序等,对软件设计至关重要。

2. 在设计架构时,应允许并发并考虑解除任何时间次序上的依赖。这有助于提高系统的性能和灵活性。

3. 使用UML活动图可以帮助进行工作流分析,以改善并发性和解除时间次序上的依赖。

4. 在设计时,尤其是在面对并发问题时,要以服务为中心进行设计,而不是组件。饥饿的消费者模型可以有效实现多个消费者进程之间的快速负载平衡。

5. 并发编程迫使程序员更仔细地考虑代码,尽可能设计线程安全的类。

第29节:它只是视图

这一节讨论了不同模块之间的通信和事件处理方式。

1. 为了确保代码的模块性,程序员应该将程序分割成具有单一且清晰责任的模块。

2. 为了处理模块间的通信和事件,可以使用发布/订阅模式(Observer模式)。在该模式中,订阅者(Subscriber)向发布者(Publisher)注册,然后发布者通知订阅者有关事件的信息。

3. Model-View-Controller(MVC)是一种架构模型,它将模型和用户界面(视图)分离,以减少数据和视图之间的耦合。

第30节:黑板

这一节讨论了黑板模型,将其比喻为侦探破案过程的黑板,用于处理事件和信息。

1. 黑板模型类似于一个处理事件的模型,不同于传统的工作流,它不需要考虑各种情况、组合和先后顺序,而是基于事件的数据共享和协作。

2. 黑板模型是一种解耦模式,各个组件可以独立地向黑板系统写入、读取、查询和通知事件,而不需要直接交互。

第31节:靠巧合编程

这一节强调了在编码过程中应避免"靠巧合编程",即仅仅依赖代码能够运行而不了解其内部工作原理的做法。

1. "靠巧合编程"是指代码在外部表现正常工作,但开发人员不清楚为什么它能正常工作。这是应该尽力避免的行为。

2. 当准备重构可能存在问题的代码时,应该考虑一些因素,如代码是否真的能正常工作,是否依赖特定的边界条件,是否存在多余或不必要的调用,以及对性能的影响。

3. 编程时应时刻保持警惕,避免靠巧合编程。需要时,应重构和重新思考代码。

第32节:算法效率

这一节介绍了算法效率和时间复杂度的概念,以及如何评估和优化算法。

1. 程序员需要经常进行资源估算,包括时间、处理器、内存等。时间复杂度是评估算法效率的关键概念。

2. 时间复杂度通常以大O符号(O())表示,它可以有不同的类型,如O(1)、O(n)、O(m*n)、O(log(n))、O(nlog(n))等,每种类型代表不同的时间复杂度级别。

3. 不同的时间复杂度在数据规模达到一定水平时会产生显著差异,因此在编程中需要优化算法以提高效率。

4. 最优的算法并不总是最适合,应根据实际情况选择合适的算法。在数据量很小的情况下,算法的效率可能不是主要关注点。

第33节:重构

这一节介绍了重构的概念,包括何时以及如何进行重构。

1. 重构是指重新编写、重新设计或重新构建代码,以改进代码的质量、可维护性和性能。

2. 当代码出现重复、非正交设计、知识过时、性能影响等特征时,应考虑重构。

3. 重构的原则是早重构、常重构,不应等到问题积累到无法控制时再进行重构。

4. 在重构之前,确保有良好的测试覆盖,以防止引入新的错误。

5. 重构时,应采取小步骤,每次修改不要太大,不要试图在重构的同时增加新功能。

posted @   我也不想的  阅读(13)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示