0.前序

0.前序

 

y2k综合征:

这个是什么意思,依照我对书的理解是这样的,也就是不要过早优化,因为我们的程序90%的代码占程序运行时间不到10%,我们通常依照自己的部分认识,认为这部分代码需要优化,认为这段代码会出现问题,所以导致后面修改,代码就出现了不稳定,其实这些都是没有必要的。我的做法通常是养成良好的编程习惯,然后在程序即将结束的时候再进行优化.

 

上下文和组合:

上下文,这个词在我编程了好久之后才知道是什么意思,我觉得可以这么理解,他是对复杂的环境的一种很概况的代表,比如说这个上下文他的背后是很复杂的设计模式,而上下文的提出也很好的简化了这个表面,从而我们可以使用组合,其中一个代表就是android里面的context.这是一个很有趣的东西

 

关于已检测异常:

这是一个很重要的点,有点颠覆了我的想法,文中是说我们现在使用异常捕获的习惯就像是把注意力放在了如何捕获异常,而不是使这个程序根本就没有异常,这是一个很重要的讨论,在我之前的项目中,无论是http还是pull我使用的都是写一个大的异常,然后捕获打印出来,然后就不理了,长此以往我习惯了这一点,不加思考的加异常捕获,习惯了这一点,而问题的核心是在代码中,我们需要解决这些异常,而不是去逃避这些(因为这些始终会浮现出来的),这些还会让你代码的可读性变差,所以该写就写,而且要想办法怎么解决这些异常.

 

 

 

 

模式概念:

设计模式帮助你从别人的成功经验而不是自己的失败经验中学到更多的东西。这句话我觉得太经典了,有些人失败了常说当是经验积累,但是有很多东西并不是一定要失败了才会懂的,这么说,一生都在失败也学不完这东西,so,总结自己和别人的经验,人生,失败几次就已经够你受的了,题外话

设计模式对我来说,是一种思路,另一种思维的颠覆,对人生的思考,太棒了,而他的目的就我而言也就在于低耦合高内聚,这是什么意思呢,比如说建一个房子,我可以把一堵堵的墙搬过来,然后骑起来,而设计模式提供给我们的思路是,打地基,使用水泥,一块块的砖头,当房子需要改建,只需换瓷砖就好了,更多的是,你这一套房子可以不做大的变化变成豪宅,变成别墅,酒店,钟点房,相同的东西没有必要重复,我也觉得这一点很对,经常两个很多部分相同的代码,但是却要重新写一遍,只是变量的名字变了一个而已,能否将这些不变的东西抽象出来呢,这就是设计模式的目的了..

 

 

 

相似的范畴:

惯用法:就是在代码中实现某种功能。

特定设计:解决某一特定问题提出的方法

标准设计:解决某类问题提出的方法,这个就类似我们平时写的工具类

设计模式:为了解决一大类问题而提出的问题,也就是在标准设计之上再抽象

 

设计原则:

这些原则是检测自己程序一个很好的测试吧

 

.尽量不要让人感到奇怪:意思就是你的设计为了追求特别而去特别

 

.使一般问题简单化,罕见问题行得通:这是一个很重要的思想,看起来简单,这是我一直坚持的东西,就比如 android,许多人喜欢自定义自己的view,一个视图就一个view,或者实现某种功能,但是我的理解是将现在拥有 的东西完全利用上就ok了,其实android的sdk已经能让你飞起来的了,不要重复制造轮子,使用最简单的方法解决 问题

 

.一致性:这是什么意思呢,保持风格一致性,这为你的代码重用性带来很多的帮助的,在一个案例中就是android开 发中ui设计是用来n多个不同的颜色,相同的界面却许多不同的颜色,这不但导致程序混乱,而且界面也很乱

 

.得墨忒耳法则:这个名字太奇怪了,得墨忒耳是希腊管理土地的神,这个法则是说不要和陌生人说话,也就是一个对 象最好只引用自己的属性(额,这个原则相信不可能办到吧)

 

.减法原则:当你不能从设计中去掉任何一个东西的时候,这个设计就完成了

 

.先简单后通用:要知道很多系统需要的通用性不高的,如果一味追求通用,那么就会衍生出一大堆的无用配置项,这 是没有必要的,所以先简单,后通用,而且简单的,往往是通用的,我恰好看到剃刀原则,我才意识到我犯了这个错 误之前一个方法,我追求一个类的通用性,为他配置了许多方法什么的,。但是才发现,许多方法根本用不上,。而 这个类也显得特别的臃肿.其实干脆就写几个类(实现同一个接口或者基类就好了).

 

.自反性:这一个词我在离散数学中接触过,好难表达,一个类对应一个抽象,这个原则也叫做同构,同构在化学中好 像是指两个相同的分子,只是组合不一样,然后导致了不一样的性质,我觉得这个原则想表达的意思可能是一个类有 一个自己对应的一个抽象.

 

.独立性:独立表达一个单独的想法,这个原则的意思其实就是我们用的最多的分离,封装,多态,通过这个把每一个部 分独立起来,实现高内聚,低耦合.

 

.一次且只能出现一次:这个在我现在的代码中,我慢慢用上了,当我写这个方法的时候,我第一步做的是不是马上开 始写,还是思考有没有其他东西会用到这个方法,或者有没有用到类似的方法,与我把他们都封装起来,通过简单的 参数配置就可以实现了一个方法满足一类相似的问题(注:其实这是很难把握的一个度,因为你如何确定这些是相类似 的方法,如果都统一起来,那么这个方法会变得效率低下,臃肿,所以我的原则就是能简单配置在一起的就配置在一 起,否则就不要勉强).

 

 

 

模式分类:

.创建型:包括创建对象,分离对象,这里一个很重要的point是,如何让你的代码脱离类型,不依赖类型编程,这个 就牵涉到之前学习的think in java 中的内部类等等知识,而且当加入新的类型,代码不需要改变,我们抽象一下这 句话的意思是,我有一个工厂,生产很多产品,然后接到订单,要生产玩具,但是我们的工厂器具不需要变,然后马 上就可以开始生产玩具.

 

.结构型:设计出满足某些工程特定约束的对象,我的理解是,他们的关系不变,这是重点,我和a君是朋友,当a君变 了性,我们还是朋友,我还是可以使用它的某样接口,这里我的一些想法就是保持接口稳定性,然后再进行内部优化.

 

行为型:指一个程序里处理一系列特定类型操作的对象。或者说他们封装了一系列的行为,例如迭代器,吧迭代这个 行为封装起来了。这一个是需要认真学习的,我毕竟接触的还不够.

 

 

当我读到这里,我深深的感受到什么是编程,感受到好久之前上的一节选修课软件工程,老师说:编程是不断的反映真实世界的思想。现在我能深深的感受到,无论是android,java还是c++,这些都是工具,而算法设计模式这些由哲学数学演变而来的伟大思想才是指导我们创造出美好的程序的根本,你对这个世界的理解,对生活的理解,所以我经常会说编程实质是完成一件艺术品,而编程者就是一名艺术家,不断的通过程序表达自己的思想..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值