`
glutinit
  • 浏览: 47502 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

代码大全读后杂记-01

 
阅读更多
代码大全真是一本书!但作者牛就就在写着么厚的书,却让你不觉得内容空虚(不像很多国内的混书水不拉吉),至少我看到第六章依旧觉得兴趣盎然,很多东西虽然似曾相识,但被作者巧妙的组织在一起让人有醍醐灌顶的感觉,妙哉;
因为本人奔三在即,记忆衰减严重,所以不再过目不忘(自然从来没有过该本事...),就借ItEye(顺便鄙视一下Oracle的霸道)之宝地写一点读后感吧,作为自己记忆的存储空间。
废话不多说,选章不如撞章,就从第六章某节开始杂记起吧~

6.4 创建类的原因:

写代码写了好几年了,加上研究生时七拼八凑的那些代码,接触面向对象,类这样的概念也不少了,但让我正经八百的给你说创建类的原因到底是啥子,俺还真讲不太清楚,就直接拷贝粘帖作者的原话吧,哈哈

1. 为现实世界的对象建模
   此乃废话,但是不得不提的废话,否则就不用提类这个概念啦

2. 为抽象的对象建模
   就是抽象出世界本没有的概念,我想有一定数学基础的人都很好理解,比如Point,Shape这样抽象的概念,在必要的时候,可以抽象成一个类加以使用

3. 降低复杂度
   就像我们看一个人的时候,先关注的是这个人的外在,表象等,并不是直接就看清了这个人的五脏六腑,所以说知人知面不知心,人心隔肚皮等等...扯远了,就是说写类是为了让人不用过多的关注太多的细节,毕竟人的头脑是有限的

4. 隔离复杂度
   这里的复杂,有可能是复杂的算法,复杂的数据结构,复杂的通讯协议等等,如果没有类的包装,这些玩意儿这一坨,那一堆的,让程序员的后期维护和修改成了噩梦,所以需要把这些复杂的家伙都一股脑的整到一起(当然,是你的代码结构设计的够巧妙才行),这样,在后期修改管理上面,就不用在复杂上再来复杂了,我想,降低耦合,增加内聚差不多一个意思吧

5. 隐藏实现细节
  这个和3,4的内容有些类似

6. 限制变动的影响范围
如果你在写代码的时候,有一部分是经常或有可能变动的,那么最好把它们隔离出来,让这一部分的变动不至于影响到全身

7.隐藏全局数据
这点我也做的不好,为了方便,我经常把全局数据暴露的清清楚楚,作者认为,应该把这些数据也隐藏在类的接口背后,可以使用访问器(access rountine)来代替,这样子如果全局变量的数据结构变动了,也不用修改其他的程序..嗯,以后得注意

8.让参数传递更流畅
这个其实更像重构的概念,当你发现你的代码中间有某个参数在多个模块之间传来传去,那么就有必要停下来思考一下,是否需要把这些子程序放置到一个类里面了

9.建立中心控制点
将针对某种任务的控制代码都放置到一个类里会比较好,其实这也是很自然的,比如,建立数据库连接,断开这样的代码还是放在一起吧,否则,万一数据库变更了,你就得到处去找你在哪里写了conn代码啦

10.让代码更加易于重用
对于一个项目组来说,日积月累的可重用代码是无可多的的财富。我们在写一个新的项目的时候,也要注意这一点,看看自己的某些代码是否可以抽象的更好,让以后的类似项目不用做重复的工作了,我这点做的不是很好,有些同事做的不错,学习学习

11.为程序族做计划
好吧,我也是第一次看到程序族这个概念...Family of Programs,大概是作者原创的?意思其实就是说,在写某一个模块时候,也要从整个项目的角度出发,比如某些需求用户会变更的比较频繁,或者你自己对于某些代码未来会做修改,那么最好把这些东西放在一个类里,当然,这个和之前的某些概念有些重复,自己把握~

11.实现某种特定的重构
很多新类都是在重构的时候出现的,很多老类也会在重构的时候被消灭

完毕,灭哈哈
分享到:
评论

相关推荐

    工作杂记-YUV的dump和read

    工作杂记-YUV的dump和read

    Vue开发资源:vue相关的开发杂记-前端开发

    本资源包中的"Vue-dev-note-master1"可能包含了关于Vue开发的笔记、教程、示例代码等资料,对于想要深入理解和学习Vue.js的开发者来说,是一份宝贵的资源。 1. **Vue核心概念**: - **虚拟DOM**:Vue通过虚拟DOM...

    网络问题:收集平时遇到的问题

    作者:hazer,时间:2019-6-28杂记-47-杂记-46-杂记-45-杂记-44-杂记-35- 内置简介:github readme自动生成工具作者:hazer,时间:2019-6-27杂记-33-杂记-32-杂记-31-杂记-30-杂记-29- 杂记-28- 杂记-27-杂记-26-...

    mynane#web-problem#杂记-18.获取运行环境1

    // 获取userAgent// 是否是ie// 是否是IE9// 是否是edge浏览器// 是否是android浏览器// 是否是ios// 是否是谷歌浏览器

    mynane#web-problem#杂记-45.Golang 在 Mac、Linux、Windows 下如何交叉编译1

    Mac 下编译 Linux 和 Windows 64位可执行程序Linux 下编译 Mac 和 Windows 64位可执行程序Windows 下编译 Mac

    fortran90读书杂记

    它在FORTRAN 77的基础上引入了许多增强功能,提高了代码的可读性、可维护性和可重用性。以下是一些关键知识点的总结: 1. 数据类型: - INTEGER(KIND=1,2,4) 分别占用1、2和4个字节,缺省为4字节。单精度浮点数的...

    计算机杂记

    - **.exe 文件**:经过编译和链接后生成的可执行文件,可以在相应的操作系统上运行。 #### 五、预编译头文件(.pch 文件) - **定义**:预编译头文件是指将频繁使用的头文件预先编译成一个文件,以提高编译速度。 -...

    编程学习杂记-序

    序: 编程10年了,感觉有些空虚。不敢称大牛,只能说是一个老鸟。有时候查资料也感觉比较麻烦。想想如果自己能写一些东西,然后查找起来应该会很快,这样对自己也是一个帮助,也希望能帮助到其他人。...

    oracle杂记.doc

    oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。

    Linux 内存杂记(01)1

    在内存释放后,glibc可能不会立即归还给内核,而是等待一定数量的内存积累后再进行批量操作。 Linux内核使用Buddy算法来高效地管理页框,即物理内存的基本单位。Buddy系统将内存块分为2的幂次大小,通过数组和链表...

    oracle 9i杂记

    《Oracle 9i杂记——探索PLSQL的世界》 Oracle 9i,作为Oracle数据库的一个重要版本,引入了许多新特性和改进,其中PL/SQL(Procedural Language/Structured Query Language)是其核心组成部分,是一种结合了SQL和...

    第14章 Pythonic与Python杂记.mp4

    第14章 Pythonic与Python杂记.mp4

    JBoss配置杂记

    ### JBoss配置杂记知识点详解 #### 一、配置JBoss以80端口服务 在JBoss配置中,若想让JBoss监听在标准的HTTP端口80上,而不是默认的8080,需要对配置文件进行相应的修改。具体步骤如下: 1. **定位配置文件**:...

    李特伍德 一个数学家的杂记.pdf

    李特伍德的《一个数学家的杂记》是一本收录了作者关于数学、教育以及个人观点文章的集合。这本杂记以数学为主题,涉及的内容包括几何、概率论、数论以及历史上的数学发现等。李特伍德在书中讨论了数学知识与日常生活...

    单片机C语言学习杂记

    ### 单片机C语言学习杂记 #### 一、单片机与C语言简介 在电子技术领域,单片机是一种集成了微处理器、存储器以及多种输入输出接口的微型计算机系统。51单片机是基于MCS-51架构的一种广泛使用的单片机型。由于其...

    51单片机C语言学习杂记.doc

    在众多的编程语言中,C语言因其代码效率高、可读性强和良好的可移植性,成为了与51单片机结合的最佳伴侣。 《51单片机C语言学习杂记》是一份针对初学者的学习材料。作者作为初学者,希望通过分享学习过程中的点点...

    51单片机C语言学习杂记

    《51单片机C语言学习杂记》 在单片机的世界里,51系列因其结构简单、应用广泛而成为初学者的首选。学习51单片机,需要掌握编程语言,通常有两种选择——汇编语言和C语言。汇编语言虽然能够生成高效的机器代码,但...

    Android平台搭建杂记

    Android平台搭建对于初入...通过NDK,我们可以编写C/C++代码,生成.so库,与Java代码进行交互,实现更高效或更底层的功能。这个过程虽然复杂,但对于理解Android系统的多层架构,以及掌握原生开发能力是非常有益的。

    PD杂记体育ii已同居ikyht

    【数据库设计基础与PowerDesigner应用】 数据库设计是IT领域中至关重要的部分,它涉及概念设计、逻辑设计和物理设计等多个阶段。在概念设计阶段,我们主要关注实体、属性和联系集,这些都是构建数据库模型的基础...

    installshield安装制作杂记

    installshield安装制作杂记 installshield x

Global site tag (gtag.js) - Google Analytics