Sunday, January 1, 2017

设计模式:开山篇

你是否整日埋头编码?却忘了跳出来,思考一下如何更高效地编码?那么,是时候了,快给自己充个电,补补设计模式方面的知识吧!

设计模式是什么?

设计模式告诉我们如何组织类和对象以解决某种问题模式不是代码,而是设计问题的通用解决方案。也就是说,设计模式的关注点是如何解决一个问题,而不是具体的步骤,或者详细的实现。这意味着,我们要针对接口编程而非针对实现编程。这到底是啥意思呢?举个例子:

你刚接到了一个任务:你要完成一个问卷管理系统。等等,先别急着编码,先来想想,这个系统需要什么功能。最基本的,一个问卷管理系统需要对问卷进行添加、修改、删除、查询、展示、保存结果。所以,我们可以先定义好上述六个接口。至于每个接口的实现,就不在本文的讨论范围之内了。

接下来,我们来了解几个设计原则。

设计原则

  • 原则一
    找出应用中可能需要变化的代码,将它们独立出来,不要让它们和那些不需要变化的代码混在一起。当你把易变的代码抽出来,保持传入值,返回值不变,不论你对它中间的实现怎么修改,都不会影响到它外部其他代码的稳定性。这样的好处是,可以大大降低代码的耦合性;同时,如果出了bug,可以帮你更快地锁定它。

  • 原则二
    针对接口编程,而非针对实现编程。可以尝试去养成这样一个习惯,在真正编码之前,先抽出时间把问题理清楚,把接口定义好。这并非会浪费你的时间,反而会让你更轻松,更快地完成任务。

  • 原则三
    多用组合,少用继承。这样可以使整个系统更有弹性。同时,通过动态组合对象,当有新的功能出现时,可以添加新代码来实现它,而无需修改现有的代码。这样,可以减少引入bug的几率。

  • 原则四
    为了交互对象之间的松耦合设计而努力。“松耦合”是指对象之间的依赖性很低,即一方改变,另一方所受影响和小或几乎不受影响。

  • 原则五
    类应该对扩展开放,对修改关闭。如果每修改或新增一个功能,你都要在原来的代码上“大动干戈”,极有可能会引发一系列的bug。相反,如果你新开垦了一片土地,无论你想在上面干什么,都可以保证原来的代码不会受到影响。

明天,我们会切入正题,聊一聊几种设计模式。比如观察者模式,工厂方法模式等。

本文原创 https://duckhere.blogspot.com/ ,转载请注明出处。

乌合之众:群体的心理特征

当你一个人时,你有自己的个性和想法;当你是群体中的一员时,你又会展现出什么样的心理特征和行为特征呢?《乌合之众》,一本研究群体心理学的书籍,或许能给我们一些启发。

Monday, December 26, 2016

echars的那些坑

echars学习小记中,我们了解了如何快速有效地入门echars。今天,我们就来聊一下echars中的那些个“坑”,以及如何跳出这些“坑”。

Saturday, December 24, 2016

基础算法原理

最近,补了一下数据结构和算法的基础知识。参考书籍-《算法》by Sedgewick 。现整理如下:

echars 学习小记

近几天由于要做报表,接触了echars,踩了一些坑。我把自己的心得整理一下,分享给大家。

对于刚接触echars的新手来说,可能会觉得它很难。No,其实,它很简单。学习它的时候千万别恋着“度娘”了,要不然会白白浪费你很多的时间。不找度娘,那该找谁呢?

如何克服害羞

通过上一篇 你害羞吗?,我们已经了解了害羞是什么为什么会害羞谁在害羞等。既然害羞带给我们几多痛楚,几多窘迫,那么,我们又该如何克服害羞呢?

你害羞吗?

据调查,中国人中有一半以上的人是害羞的?那么你呢?你害羞吗?

我自己的回答是肯定的。而且我也清楚,害羞曾经并正在带给我一些烦恼。那么,害羞是什么?它是好是坏?如何克服害羞带来的心理困扰?带着这些疑惑,我去读了津巴多的《害羞心理学》。在此分享给大家,尤其是那些和我一样”害羞“的小伙伴们,福利来啦!当然,有兴趣的小伙伴也可以自己去读一下原作,这是一本通俗的心理学专业书籍。