首页 > 其他分享 >【读书笔记】——《代码大全》

【读书笔记】——《代码大全》

时间:2023-06-11 14:36:49浏览次数:43  
标签:关系 调用 读书笔记 代码 模块 耦合 子程序 大全

Design in Construction

我们要学会使类与类之间、子程序与子程序之间保持松散耦合,就是使一个类或者子程序能够很容易地被另一者调用。在结对编程的对接过程中,作为ui组我们就需要调用core组写的计算核心,这就是两个保持松散耦合的模块。我们只需要知道传入参数的设置就可以实现调用。当然,传的参数越少越好。另一方面,如果两个类都依赖于对方对同一个全局变量的使用情况,那么它们之间的耦合关系就变得紧密了。我想,这也是全局变量能不用则不用的原因之一。简而言之,耦合关系要清晰明了,要做到在使用一个模块的时候尽量少地需要去关注其他模块的工作方式。

 

用一种设计方案来解决问题会为你带来一些新的洞察力,从而帮助你使用另一种更好的设计来解决问题。这有点像高中的时候写作文,通常你想到的第一个立意不是最好的,但它会为你打开思路,使你迸发出更多思想的火花。读到这里,才真正开始明白设计的启发式方法中的“启发”二字。不要停留于你所想到的第一套解决方案,而是去寻求合作,探求简洁性,在需要的时候建立试验性原型,迭代,再迭代。通常最大的失误不是设计做得不好,而是设计做得不够。多永远比不足要好。

 

Working Classes

“类”并不是单纯地把稍微有一点关系的数据和子程序堆在一块儿,相反,它其中的数据和程序具有很强的内聚性,使你在编写其他部分代码的时候,可以安全地忽视它。而我们在数据结构课程中所接触到的抽象数据类型ADT构成了“类”的基础。要使“类”的内部具有强内聚性,与作者提到的“一致的抽象”有很大的关系,在我的理解中,就如同在一个ADT中,我们不能既有对线性表的操作,又有对树的操作。类也是如此,在类的内部,数据与子程序之间要有很强的关联,使这个类的职能更加专一。

 

关于封装的概念,在上周的读书笔记中也提到过一点。一个良好的封装需要注意很多点,这里简单谈一谈对其中理解略深的两点。一是不要公开暴露成员数据,就是说不要让调用方可以自由地修改一个类里面的数据。另一点,不要对类的使用者作出任何假设。在定义接口时,不要给调用方设太多的限制和约束,从而方便自己。比如在结对编程中,core应该全面地判断输入的非法性,考虑各种情况,而不是限制用户的输入。

 

对继承虽然了解一些,但理解得并不够深入,看了讲述继承的原则的这一节,给我的总体认识是使用继承的前提要求非常高,如果使用得不好,往往与初衷背道而驰。所以包含关系比继承关系更为可取。我觉得积累更多的技术以后再来看这本书的收获一定会更多。

标签:关系,调用,读书笔记,代码,模块,耦合,子程序,大全
From: https://www.cnblogs.com/LIXIHENG/p/17472908.html

相关文章

  • 《代码大全》读书笔记二
    《代码大全2》第六、七章      作者在第六章中从抽象数据类型(AbstractDataType)出发阐释类(class)的概念,给出创建类的原因以及创建高质量的常涉及的设计问题。抽象数据类型(ADT)是指一些数据以及对这些数据所进行的操作的集合,ADT是一个比类更基础的概念,类由ADT出发得到扩展,或......
  • 人月神话读书笔记二
    作者介绍:20世纪最后一年也就是1999年的图灵奖,授予了年已69岁的资深计算机科学家布鲁克斯(FrederickPhillipsBrooks,Jr.)。布鲁克斯这个名字在中国知之者不多,但在美国却是大名鼎鼎。因为他在60年代初只有29岁时就主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360......
  • 【读书笔记】人月神话
     作为一本计算机编程项目管理类的书刊,此书书名就毫不留情地指出“用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话”。这里向读者传达了这个重要的概念,在估计和进度安排中使用的工作量单位:人月。但实际上,人数和时间的互换是近乎不可能的,因为编程项目的任务不能分解给......
  • Lucene--开放源代码的全文检索引擎工具包
    Lucene是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的......
  • 《梦断代码》读后感之一
    今天发表《梦断代码》的第一篇读后感。这几天读了《梦断代码》的前四章,有很多不懂的也是必然的,读了很多遍还有好多地方不是很懂。发一下读的内容。   作者迷恋于一个叫做Sumer的游戏,其可以让玩家打补丁,任何人都能窥探其内部运行机制。花点时间学习简单的Basic语言,改游戏就......
  • 《梦断代码》读后感之二
    当今世界,软件已经成为当今世界不可或缺的一部分。而《梦断代码》一书记录的是作者罗森伯格对OSAF主持的Chandler项目进行田野调查,通过Chandler开发过程来揭示软件开发过程中一些根本性的大问题。   第四章作者将其命名为乐高王国。卡普尔很注重前台的效果,着重于如何体现Age......
  • 【三维装箱】基于自适应遗传算法的三维集装箱装载问题研究附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • SonarQube扫描C#代码
    目录用SonarQube实现什么功能?SonarLintforVisualStudio是什么?使用SonarQube扫描检测C#/.NET代码并上传到服务器一、配置MSBuild二、下载安装SonarScannerforMSBuild三、使用SonarQube分析C#代码并上传服务器Sonar系列相关参考SonarQube官网SonarQube是一款静态代码质量......
  • 用jQuery实现轮播图——超简单(代码解释)
    一、直接上代码<!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title></title> <style> .wrapper{ width:600px; height:350px; border:1pxsolidred; position:relative; } ......
  • Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测|附代码数据
    全文链接:http://tecdat.cn/?p=27279最近我们被客户要求撰写关于深度学习循环神经网络RNN的研究报告,包括一些图形和统计输出。此示例说明如何使用长短期记忆(LSTM)网络预测时间序列LSTM神经网络架构和原理及其在Python中的预测应用LSTM网络是一种循环神经网络(RNN),它通过循......