程序员修炼之道6

news/2024/11/30 15:23:43/文章来源:https://www.cnblogs.com/fanxn/p/18577328

《程序员修炼之道》第五章内容概述 :
解耦与得墨忒耳法则:倡导把代码组织成最小单位即模块,并限制它们之间的交互,以减少耦合。因为对象间直接的横贯关系可能导致依赖关系的组合爆炸,一个模块的改动会影响到许多无关模块。函数的得墨忒耳法则规定了对象调用方法的限制,即只能调用自身、传入参数、创建对象以及直接持有的组件对象的方法。
源程序设计:介绍了元数据是关于数据的数据,在运行时而不是编译时被访问和使用。通过将抽象放进代码,细节放进元数据,可使系统变得高度可配置,如屏幕颜色、提示文本等应作为配置项而非硬编码到项目中,要以声明方式思考,创建高度灵活和可适应的程序。
时间耦合:指出时间耦合涉及并发和次序两个重要方面。软件设计应容许并发,并解除时间次序上的依赖,可使用 UML 活动图进行工作流分析以改善并发性。在架构设计时,建议使用服务而非组件,饥饿的消费者模型是一种有效的负载平衡途径。
他只是视图:阐述了将程序划分成不同模块,每个模块具有单一明确责任的重要性。模块间通信可采用发布 / 订阅模式,即 Observer 模式,订阅者向发布者注册后接收事件通知;以及 Model-View-Controller 架构模型,它能分离模型与表示模型的 GUI,降低数据和视图间的相互影响 。
黑板:将黑板抽象为一种处理事件的模型,不同于传统工作流需考虑各种复杂状况和顺序,黑板系统只管基础的写入、读取、查询、通知等功能,任意符合条件的事件都可进入,这也是一种解耦形式,不同线索之间可独立进行,共同帮助解决问题。
《程序员修炼之道》第五章读后感
对解耦重要性的深刻理解:通过阅读,我深切认识到解耦在软件开发中的关键作用。在实际项目中,随着功能的不断增加和业务逻辑的日益复杂,如果代码之间的耦合度过高,一个小的改动可能会引发一系列意想不到的问题,导致整个系统的维护成本大幅上升。就像书中所讲,解耦能够使各个模块相对独立地发展和变化,当某个模块需要进行功能升级或修复缺陷时,不会对其他无关模块产生过多的影响,从而提高了系统的可维护性和可扩展性。这让我在今后的编程实践中,会更加注重代码的组织结构,尽量降低模块之间的耦合度,使系统更加灵活和健壮.
元程序设计的启示:元程序设计的理念为我打开了一扇新的思维之门。它让我意识到,在编写代码时,不仅要关注当前的功能实现,还要考虑到未来可能的变化和配置需求。将一些可变的因素,如界面显示的文本、颜色等配置信息,从代码中分离出来,通过元数据的方式进行管理,可以使程序更加易于配置和适应不同的运行环境。这种以声明方式思考的方法,能够让代码更加简洁和灵活,减少因需求变更而对代码进行大量修改的情况,提高了代码的复用性和可维护性.
时间耦合的思考:时间耦合的概念让我对软件系统中的时间因素有了更深入的思考。在多线程和分布式系统日益普及的今天,并发和次序问题是我们必须要面对的挑战。书中提到的解除时间次序上的依赖以及使用 UML 活动图进行工作流分析等方法,为我在处理这类问题时提供了很好的思路和工具。在设计系统架构时,要充分考虑到各个组件之间的时间关系,尽量避免因为时间上的先后顺序而导致的紧耦合,从而提高系统的并发性和性能.
模块通信方式的学习:他只是视图中介绍的发布 / 订阅模式和 Model-View-Controller 架构模型,让我对模块之间的通信和交互有了更清晰的认识。发布 / 订阅模式能够实现模块之间的松散耦合,使得消息的发送者和接收者之间不需要直接依赖,提高了系统的灵活性和可扩展性。而 MVC 架构则是一种经典的设计模式,将数据、视图和控制逻辑分离,使得各个部分可以独立地进行开发、测试和维护,降低了系统的复杂度。在今后的项目中,我会根据具体的业务需求,合理地选择和应用这些模块通信方式,以提高系统的架构质量.
黑板模型的借鉴意义:黑板模型作为一种特殊的解耦形式,为处理复杂的事件和数据提供了一种新的思路。它类似于一个共享的信息空间,各个模块可以在其中自由地写入和读取信息,而不需要关心其他模块的具体实现和处理逻辑。这种方式可以有效地降低模块之间的耦合度,提高系统的灵活性和可扩展性。在一些涉及到多任务协作、数据共享和复杂业务流程的项目中,黑板模型可以作为一种很好的解决方案,帮助我们更好地组织和管理代码.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844154.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研打卡(32)

开局(32) 开始时间 2024-11-30 13:44:59 结束时间 2024-11-30 15:18:42刚才去洗牙,体验了一波新事物嗷,挺新奇的,但是发现有个好大好大的蛀牙啊啊啊啊啊数据结构判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以用_____(中国石油大学 2013年) A 求关键路径…

网站公司信息修改,如何在网站中轻松修改公司信息

公司信息是网站的重要组成部分,通过以下步骤可以轻松进行修改:登录后台:打开浏览器,输入网站的后台地址,使用管理员账号登录。进入公司信息管理:在后台左侧菜单栏中选择“内容” -> “公司信息”。 找到需要修改的信息,点击“编辑”。修改公司信息:在编辑页面中,修…

怎么修改公司的网站首页,如何在网站后台或代码中修改公司网站首页

修改公司网站首页可以提升网站的专业性和用户体验。以下是具体步骤:登录后台:如果网站有后台管理系统,使用管理员账号登录。 在后台左侧菜单栏中选择“内容” -> “页面”或“模板管理”。 找到需要修改的首页,点击“编辑”。修改内容:在编辑页面中,修改文本内容、图片…

鸿蒙Next元服务开发详解

之前写过关于元服务的文章,大家对元服务应该也有一定的了解,它是一种更加高效便捷的应用形式,免安装,有独立的入口,说的简单一点就像是把微信小程序放到系统层面,相比微信小程序更加快捷,因为连微信也不用打开了。 今天就分享一下怎么开发一个鸿蒙元服务。创建项目 元服…

浅谈鸿蒙跨平台开发框架ArkUI-X

之前写过使用uniapp的跨平台开发鸿蒙项目,今天分享一下开发体验更友好的跨平台开发框架ArkUI-X。 ArkUI-X看起来像是鸿蒙官方的框架,在DevEco中就可以安装和使用,而且会ArkUI就可以开发安卓和、iOS和鸿蒙三个平台的app,下面简单介绍一下它的用法。 打开DevEco的Preference菜…

20222425 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是…

String类的特点

1.String类的特点1.java程序中,只要是双引号字符串,就都是String类的对象 如图只有String这一个类有这种特殊的创建对象方法 我们知道,只有对象才可以通过 点什么来调用方法,而图中s.toString等方法都可以调用,所以s就是String的对象 . 2.字符串在创建之后,内容不可更改 …

Mac OS 15苹方字体不可用,怎么办?

缘由今天使用 mac word 写文档发现选 苹方字体 后变成乱码了...解决办法①打开 Spotlight 搜索:字体册①在 字体册 搜索:苹方,并点击下载对应的字体下载完变成黑色(可用)了:打开系统设置:首先,打开您的macOS系统设置。调整语言顺序:在系统设置中搜索“语言”,然后将“E…

redis基本操作JG

为什么学习redis,前几天有个需求,用到了redis库,之前学习过但仅限于大学的时候,这个时候差不多忘光了,需求测的时候也是现学的几个查询指令。印象最深的是开发设计的时候存储了10个不同key值但value(list字符串)相同的数据,当时问过为什么要存十个,解释为 “为了防止…

探索 TypeScript 编程的利器:ts-morph 入门与实践H6

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:贝儿背景 在开发 web IDE 中生成代码大纲的功能时, 发现自己对 TypeScript 的了解知之甚少,以至于针对该功能的实现没有明确的思…

IDEA本地运行Spark程序报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

报错信息 java.lang.RuntimeException: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblemsat org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:737)…