江西

设计模式原则总结

from:http://blog.prosight.me/blogs/984/名称解释0、单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。一、”开放-封闭”原则(OCP)在软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则。即软件实体(类、模板、函数等等)应该可以扩展,但是不可修改。【通俗】:设计的时候,时刻考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。二、里氏代换原则(LSP)1.一个软件实体如果使用的是一个父类的话,那么一定适用于该子类,而且他觉察不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。【一句话】:**子类型必须能够替换掉他们的父类型。**三、依赖倒置原则(DIP)1.高层模块不应该依赖于底层模块。两个都应该依赖抽象。2.抽象不应该依赖于细节,细节依赖于抽象(【白话】:针对接口编程,不要针对实现编程。四、接口隔离原则(ISP)1.使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。2.过于臃肿的接口是对接口的污染。不应该强迫客户依赖于它们不用的方法。五、合成/聚合复用原则(CARP)尽量使用合成/聚合,尽量不要使用类继承。【聚合】:表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。【合成】:一种强的拥有关系,提现了严格的部分和整体的关系,部分和整体的生存周期一致。六、迪米特法则(LoD)最少知识原则强调类之间的松耦合。即:如果两个类不必彼此直接通信,那么着两个类就不应当发送直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

离站提示JS工具:Ouibounce

离站提示JS工具:Ouibounce,当离开网站时给出一个提醒,从jobbole看到的.tip:和bootstrap的model 结合时要在参数的callback中 手动 用$('#share').modal();触发,官网没说,这个要注意.demo如下:[repo owner=”carlsednaoui” name=”ouibounce”]

面向对象编程的弊端是什么?

from : http://zingson.com/72.html弊端是,没有人还记得面向对象原本要解决的问题是什么。1、面向对象原本要解决什么?(或者说有什么优良特性)似乎很简单,但实际又很不简单:面向对象三要素封装、继承、多态。(警告:事实上,从业界如此总结出这面向对象三要素的一刹那开始,就已经开始犯错了!)。封装:封装的意义,在于明确标识出会访问某个数据结构(用面向对象的术语来说就是 类成员变量)的所有接口。有了封装,就可以明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者;而外部调用者也可以知道自己不可以碰哪里。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。继承+多态:继承和多态必须一起说。一旦割裂,就说明理解上已经误入歧途了。先说继承:继承同时具有两种含义:其一是继承基类的方法,并做出自己的扩展——号称解决了代码重用问题;其二是声明某个子类兼容于某基类(或者说,接口上完全兼容于基类),外部调用者可无需关注其差别。再说多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。很显然,多态实际上是依附于继承的第二种含义的。让它与封装、继承这两个概念并列,是不符合逻辑的。不假思索的就把它们当作可并列概念使用的人,显然是从一开始就被误导了。实践中,继承的第一种含义(实现继承)意义并不很大,甚至常常是有害的。因为它使得子类与基类出现强耦合。继承的第二种含义非常重要。它又叫“接口继承”。接口继承实质上是要求“做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化。归一化使得外部使用者可以不加区分的处理所有接口兼容的对象集合——就好象linux的泛文件概念一样,所有东西都可以当文件处理,不必关心它是内存、磁盘、网络还是屏幕(当然,如果你需要,当然也可以区分出“字符设备”和“块设备”,然后做出针对性的设计:细致到什么程度,视需求而定)。归一化的实例:a、一切对象都可以序列化/toStringb、一切UI对象都是个window,都可以响应窗口事件。——必须注意,是一切(符合xx条件的)对象皆可以做什么,而不是“一切皆对象”。后者毫无意义。显然,归一化可以大大简化使用者的处理逻辑:这和带兵打仗是类似的,班长需要知道每个战士的姓名/性格/特长,否则就不知道该派谁去对付对面山坡上的狙击手;而连长呢,只需知道自己手下哪个班/排擅长什么就行了,然后安排他们各自去守一段战线;到了师长/军长那里,他更关注战场形势的转变及预期……没有这种层层简化、而是必须直接指挥到每个人的话,累死军长都没法指挥哪怕只是一场形势明朗的冲突——光一个个打完电话就能把他累成哑巴。软件设计同样。比如说,消息循环在派发消息时,只需知道所有UI对象都是个window,都可以响应窗口消息就足够了;它没必要知道每个UI对象究竟是什么——该对象自己知道收到消息该怎么做。合理划分功能层级、适时砍掉不必要的繁杂信息,一层层向上提供简洁却又完备的信息/接口,高层模块才不会被累死——KISS是最难也是最优的软件设计方法,没有之一。总结:面向对象的好处实际就这么两点。一是通过封装明确定义了何谓接口、何谓接口内部实现、何谓接口的外部调用者,使得大家各司其职,不得越界;二是通过继承+多态这种内置机制,在语言的层面支持归一化的设计,并使得内行可以从代码本身看到这个设计——但,注意仅仅只是支持归一化的设计。不懂如何做出这种设计的外行仍然不可能从瞎胡闹的设计中得到任何好处。显然,不用面向对象语言、不用class,一样可以做归一化的设计(如老掉牙的泛文件概念、游戏行业的一切皆精灵),一样可以封装(通过定义模块和接口),只是用面向对象语言可以直接用语言元素显式声明这些而已;而用了面向对象语言,满篇都是class,并不等于就有了归一化的设计。甚至,因为被这些花哨的东西迷惑,反而更加不知道什么才是设计。2、人们以为面向对象是什么、以及因此制造出的悲剧以及闹剧误解一、面向对象语言支持用语言元素直接声明封装性和接口兼容性,所以用面向对象语言写出来的东西一定更清晰、易懂。事实上,既然class意味着声明了封装、继承意味着声明了接口兼容,那么错误的类设计显然就是错误的声明、盲目定义的类就是无意义的喋喋不休。而错误的声明比没有声明更糟;通篇毫无意义的喋喋不休还不如错误的声明。除非你真正做出了漂亮的设计,然后用面向对象的语法把这个设计声明出来——仅仅声明真正有设计、真正需要人们注意的地方,而不是到处瞎叫唤——否则不可能得到任何好处。一切皆对象实质上是在鼓励堆砌毫无意义的喋喋不休。大部分人——注意,不是个别人——甚至被这种无意义的喋喋不休搞出了神经质,以至于非要在喋喋不休中找出意义:没错,我说的就是设计模式驱动编程,以及如此理解面向对象编程。误解二、面向对象三要素是封装、继承、多态,所以只要是面向对象语言写的程序,就一定“继承”了语言的这三个优良特性。事实上,如前所述,封装、继承、多态只是语言层面对良好设计的支持,并不能导向良好的设计。如果你的设计做不出真正的封装性、不懂得何谓归一化,那它用什么写出来都是垃圾。误解三、把软件写成面向对象的至少是无害的。要了解事实上是什么,需要先科普几个概念。什么是真正的封装?——回答我,封装是不是等于“把不想让别人看到、以后可能修改的东西用private隐藏起来”?显然不是。如果功能得不到满足、或者未曾预料到真正发生的需求变更,那么你怎么把一个成员变量/函数放到private里面的,将来就必须怎么把它挪出来。你越瞎搞,越去搞某些华而不实的“灵活性”——比如某种设计模式——真正的需求来临时,你要动的地方就越多。真正的封装是,经过深入的思考,做出良好的抽象,给出“完整且最小”的接口,并使得内部细节可以对外透明(注意:对外透明的意思是,外部调用者可以顺利的得到自己想要的任何功能,完全意识不到内部细节的存在;而不是外部调用者为了完成某个功能、却被碍手碍脚的private声明弄得火冒三丈;最终只能通过怪异、复杂甚至奇葩的机制,才能更改他必须关注的细节——而且这种访问往往被实现的如此复杂,以至于稍不注意就会酿成大祸)。一个设计,只有达到了这个高度,才能真正做到所谓的“封装性”,才能真正杜绝对内部细节的访问。否则,生硬放进private里面的东西,最后还得生硬的被拖出来——当然,这种东西经常会被美化成“访问函数”之类渣渣(不是说访问函数是渣渣,而是说因为设计不良、不得不以访问函数之类玩意儿在封装上到处挖洞洞这种行为是渣渣)。一个典型的例子,就是C++的new和过于灵活的内存使用方式之间的耦合。这个耦合就导致了new[]/delete[]、placement new/placement delete之类怪异的东西:这些东西必须成对使用,怎么分配就必须怎么释放,任何错误搭配都可能导致程序崩溃——这是为了兼容C、以及得到更高执行效率的无奈之举;但,它更是“抽象层次过于复杂,以至于无法做出真正透明的设计”的典型案例:只能说,c++设计者是真正的大师,如此复杂的东西在他手里,才仅仅付出了如此之小的代价。(更准确点说,是new/delete和c++的其它语言元素之间是非正交的;于是当同时使用这些语言元素时,就不可避免的出现了彼此扯淡的现象。即new/delete这个操作对其它语言元素非透明:在c++的设计里,是通过把new/delete分成两层,一是内存分配、二是在分配的内存上初始化,然后暴露这个分层细节,从而在最大程度上实现了封装——但比之其它真正能彼此透明的语言元素间的关系,new/delete显然过于复杂了)。这个案例,可以非常直观的说明“设计出真正对外透明的封装”究竟会有多难。接口继承真正的好处是什么?是用了继承就显得比较高大上吗?显然不是。接口继承没有任何好处。它只是声明某些对象在某些场景下,可以用归一化的方式处理而已。换句话说,如果不存在“需要不加区分的处理类似的一系列对象”的场合,那么继承不过是在装X罢了。封装可应付需求变更、归一化可简化(类的使用者的)设计:以上,就是面向对象最最基本的好处。——其它一切,都不过是在这两个基础上的衍生而已。换言之,如果得不到这两个基本好处,那么也就没有任何衍生好处——应付需求变更/简化设计并不是打打嘴炮就能做到的。了解了如上两点,那么,很显然:1、如果你没有做出好的抽象、甚至完全不知道需要做好的抽象就忙着去“封装”,那么你只是在“封”和“装”而已。这种“封”和“装”的行为只会制造累赘和虚假的承诺;这些累赘以及必然会变卦的承诺,必然会为未来的维护带来更多的麻烦,甚至拖垮整个项目。正是这种累赘和虚假的承诺的拖累,而不是所谓的为了应付“需求改变”所必需的“灵活性”,才是大多数面向对象项目代码量暴增的元凶。2、没有真正的抓到一类事物(在当前应用场景下)的根本,就去设计继承结构,是必不会有所得的。不仅如此,请注意我强调了在当前应用场景下。这是因为,分类是一个极其主观的东西,不存在普适的分类法。举例来说,我要研究种族歧视,那么必然以肤色分类;换到法医学,那就按死因分类;生物学呢,则搞门科目属种…… 想象下,需求是“时尚女装”,你却按“窒息死亡/溺水死亡/中毒死亡之体征”来了个分类……你说后面这软件还能写吗?类似的,我遇到过写游戏的却去纠结“武器装备该不该从游戏角色继承”的神人。你觉得呢?事实上,游戏界真正的抽象方法之一是:一切都是个有位置能感受时间流逝的精灵;而某个“感受到时间流逝显示不同图片的对象”,其实就是游戏主角;而“当收到碰撞事件时,改变主角下一轮显示的图片组的”,就是游戏逻辑。看看它和“武器装备该不该从游戏角色继承”能差多远。想想到得后来,以游戏角色为基类的方案会变成什么样子?为什么会这样?——你还敢说面向对象无害吗?——在真正明白何谓封装、何谓归一化之前,每一次写下class,就在错误的道路上又多走了一步。——设计真正需要关注的核心其实很简单,就是封装和归一化。一个项目开始的时候,“class”写的越早,就离这个核心越远。——过去鼓吹的各种面向对象方法论、甚至某些语言本身,恰恰正是在怂恿甚至逼迫开发者尽可能早、尽可能多的写class。误解四、只有面向对象语言写的程序才是面向对象的。事实上,unix系统提出泛文件概念时,面向对象语言根本就不存在;游戏界的精灵这个基础抽象,最初是用C甚至汇编写的;……。面向对象其实是汲取以上各种成功设计的经验才提出来的。所以,面向对象的设计,不必非要c++/java之类支持面向对象的语言才能实现;它们不过是在你做出了面向对象的设计之后,能让你写得更惬意一些罢了——但,如果一个项目无需或无法做出面向对象的设计,某些面向对象语言反而会让你很难受。用面向对象语言写程序,和一个程序的设计是面向对象的,两者是八杆子打不着的两码事。纯C写的linux kernel事实上比c++/java之类语言搞出来的大多数项目更加面向对象——只是绝大部分人都自以为自己到处瞎写class的面条代码才是面向对象的正统、而死脑筋的linus搞的泛文件抽象不过是过程式思维搞出来的老古董。——这个误解之深,甚至达到连wiki词条里面,都把OOP定义为“用支持面向对象的语言写程序”的程度。——恐怕这也是没有人说泛文件设计思想是个骗局、而面向对象却被业界大牛们严厉抨击的根本原因了:真正的封装、归一化精髓被抛弃,浮于表面的、喋喋不休的class/设计模式却成了”正统“!总结: 面向对象其实是对过去成功的设计经验的总结。但那些成功的设计,不是因为用了封装/归一化而成功,而是切合自己面对的问题,给出了恰到好处的设计。让一个初学者知道自己应该向封装/归一化这个方向前进,是好的;用一个面向对象的条条框框把他们框在里面、甚至使得他们以为写下class是完全无需思索的、真正应该追求的是设计模式,则是罪恶的。事实上,class写的越随意,才越需要设计模式;就着错误的实现写得越多、特性用得越多,它就越发的死板,以至于必须更加多得多的特性、模式、甚至语法hack,才能勉强完成需求。只有经过真正的深思熟虑,才有可能做到KISS。到处鼓噪的面向对象编程的最大弊端,是把软件设计工作偷换概念,变成了“就着class及相关教条瞎胡闹,不管有没有好处先插一杠子”,甚至使得人们忘记去关注“抽象是否真正简化了面对的问题”。

共享bootstrap4diandian主题

为了熟悉下bootstrap框架,如果做站就用bootstrap,在点点主题上面也啃了很久,总算是有个能看得过去的主题了.主题比较简洁亮白,也有朋友问我要主题风格,之前代码没做什么整理,刚整理了下代码,添加些注释,顺便加了一个图片演示加载的效果,这个效果很棒,我做主题,一直采用的.使用注意:修改google统计代码修改多说使用的代码修改文章内的个人说明修改微博导航链接 这些代码都是写死成我的链接的,请修改成你自己的吧!下载: 百度网盘 | github | bootstrap4diandian源码

bootstrap for diandian

前几天用bootstrap做了个点点的模板,也为了熟悉下bootstrap的使用. 现在bootstrap可以说是最流行的css框架,不是之一. 这次把模板做了代码的优化,比之前使用的代码更清晰的多了,以后改起来,也容易的多了. 还把点点的评论替换成了多说,另外在文章中增加了无觅功能,还有个人的信息.以后一点一点再增加其他的丰富内容了! 另外呢?在github把模板共享了,提供给各位随意使用了! github地址:https://github.com/dapengme/bootstrap4diandian

博客小动静,增加同步日志的功能

这个月一直没有更新过博客,唯一对博客做的事情,就是对域名做了续费,既然做了续费了,也不能浪费,空放在这里做摆设啊!整理了下自己挂在过年网站上的空间,把以后的日志都通过到那里去,毕竟那些网站的知名度高一些。百度空间 http://hi.baidu.com/joypen   空间的服务器好像不支持一个函数,没法做同步,这个有些遗憾了。网易博客 http://blog.163.com/user_zhaopeng/  网易很早就有了,这个名字刚换不久,容易记,网易博客的风格是这几个网站里面做的最好的一个。搜狐博客 http://imzhpe.blog.sohu.com/ 没看出有什么特色出来,博客提供的组件挺丰富的。新浪博客 http://blog.sina.com.cn/joypen 新浪博客曾经用名人火了一把,现在又用名人火了一把微博。QQ空间 http://523419490.qzone.qq.com/ 空间一直都是禁止任何访问的,原因是我有自己的博客,不想搞这个,想想还是开放出来吧,这个是朋友见用的最多的。同步5个空间,要用5个插件,可惜百度的不能用,只能同步四个了,插件的地址在这里,作者写的很详细,专门出了一个页面来描述的。http://wpto.tk/index.php其中有网易和QQ空间的都是通过邮件发布的方式来同步的,也就是这两个耗费了老哥的时间,由于我的网易邮箱和QQ邮箱都做SSL加密,插件的协议是为加密,我修改对齐做了加密,还修改了其中一些乱码、微小格式什么的,都不值一提的,重点还是协议的修改了。其中修改后的版本也提供下载。现在地址:网易博客同步 |QQ空间同步

麦库编辑器升级版

麦库编辑器升级版麦库内置编辑器采用的是开源的KindEditor,默认的是3.5的版本,前段时间麦库的web版的编辑器KindEditor升级到了4.0的版本,新的web编辑器增加了不少新的功能,比如google地图、一键排版、清理Html代码、行距修改、插入程序代码等等,都是KindEditor4新的特性,Pc版本的编辑器还是有一些功能欠缺的,我就是蛮喜欢一键排版和插入代码的功能的,也想新体验一下KindEditor4新版,就研究了下KindEditor的编辑器,也请教了下麦库的工作人员,终于把编辑器替换成KindEditor4的版本了。修改说明: 1. 替换编辑器KindEditor3.5版本为KindEditor4的版本;2. 加入KindEditor4的特性,比如google地图、一键排版、清理Html代码、行距修改、插入程序代码等等;3. 目前使用我还没有发现什么问题,在稳定的使用中; 使用说明 1. 采用附件内的文件直接把editor文件替换了,重启麦库,就可以使用。2. 采用的是KindEditor4默认风格,初始化KindEditor4的编辑器是最大窗口的,这样便于和麦库集成在一起的界面完整; 升级新版编辑器能做什么?最关键的是这点吧! 1. 一键排版,编辑好文章之后,一键排个版,整个文章的就好了;2. 清理Html代码, 从网上保存、复制一些内容,总是带有格式的,清理Html代码,就可以把那些格式给去掉了;3. 插入程序代码,写程序的码农,总会保存一些代码的,有代码的格式,当然容易使用了;4. google地图,很容易的把google地图保存到麦库了;5. 还有一些其他功能,我都不经常用,比如插入模板这个,就可以自定义一些模板,比如会议纪要、日志、晨间日记等等哈,都可以有的,方便自己的使用了。   下载地址1:http://www.everbox.com/f/TiGYjfob8rZubgF8ZuKeisxeDO下载地址2:http://note.sdo.com/u/1185661036#/n/6GY1I~jDdOtOwE00M000EK 选择里面的附件   

闲谈一下

  闲谈一下  本来是打算睡了,最近一段时间,都是12点以后睡觉的,和一哥们聊天,勾起了我想乱侃一下的虫子,不说不痛快啊!  和哥们谈到了权利和感情,是权利的诱惑,还是感情的不舍。权利这玩意,是个诱人的东西,是谁都追求,我也追求,追求也需要看看这个权利的价值了,追求那些无用的东西,就是在浪费生命,真不如去做些自己能做到的事情。  派系的竞争啥地方都有,”与人斗,其乐无穷“是我听到很经典的一句,能玩你们玩,能斗你们斗。虽然自己一直安慰自己,自己是不想玩,也不原斗,可也明白,曾经自己也是牺牲品。再次面对这样的局面,态度依旧,不想趟这趟浑水,做好事情,心安理得。愿意一起做事情,就把事情做好,其他啥的别去沾惹,省的结果对谁都不好。这个道理,对想做事情的人,哪里都一样。  自己的经历没什么跌宕起伏,也没什么大风大浪,平平淡淡的事情也经历了一些,承认自己的悟性比较差,不够灵活,属于笨人的一类。自己也迷茫的,浑浑噩噩的也过过一段时间,现在也能明白一些,没有什么条件不能答应的,也没有什么结果不能接受的。  看过的朋友,认识也别硬套,不认识也别挑毛病,这个是自己乱侃而已,不对针对任何人,随意而说而已!

无奈与怎么办

好几天没有更新了,一直在寻找一个合适的主题,主题简单有深度,适合做个人博客的主题。typebased是款免费的主题的,做的不错,不过,打开的速度有些慢了,原因应该是用国外主机的原因吧!这个没办法解决了,还有能加快打开速度,就需要对模板进行大改造了,这个放到以后有时间来改吧!最近因为家里的一些事情,加上个人问题,让我很无奈,比我之前的情况,更是无从办法,之前无论如何,我总能给自己找些站起来的力量,现在,每天最大的想法就是,睡觉,什么也不要去想,想的好多,越有压力。用自己的说法来说,没了目标,没了希望,留下的就是无奈了!

[转]不能集中注意力怎么办?

不能集中注意力怎么办?原文网址:http://www.gtdlife.cn/2010/1504/how-cant-focus-the-attention/拖延是管理时间最大的敌人之一,所有的计划都被拖延所打乱,那种烦躁的感觉真的不好那么拖延是怎样形成的呢?大多数情况下是因为不能集中注意力。不知道读者们是不是也和我一样,觉得自己和待办事项是两块同样磁极的磁铁,我越是向它靠近,想要去完成它,受到的阻力也就越大。什么原因让我们无法集中注意力?如何去解决它?身体有些疲劳如果自己的GTD系统有情境的概念,那么你可以看看哪一种情境下要完成的任务最多?不出意外,一定是“电脑旁”或者“办公室”,如果有时间,和父母们交流一下,他们年轻时工作之余都做些什么?结伴郊游?出门遛弯?在家做饭洗衣?我们现在工作之余做些什么?KTV?网络游戏?下馆子喝酒?你从什么时候起开始觉得阳光有些刺眼,什么时候起开始觉得晚上睡觉不踏实?这都是因为我们的身体已经处于疲劳状态或者亚健康状态,而这种状态,将直接影响你的工作效率,你身体疲劳的时候,你需要用你的意志力作为集中注意力的能量来源,但是这样带来的后果是你下次需要更多的意志力,这样的恶性循环总有一天会垮掉。所以,解决无法集中注意力的第一个方法就是:打败亚健康,让自己保持健康的心理状态和身体状态。让自己拥有充沛的精力,让自己拥有健康的生活习惯,这是一个想要管理好时间的朋友第一个应该做到的事情。思考陷入僵局打过篮球比赛的朋友们会有这样的经验(我以前是校篮球队,呵呵~):当球队分数领先的时候,会觉得比较轻松,越打越顺,也就是所谓的“顺风球好打”,但是球队分数落后的时候,就会觉得脚步沉重,呼吸急促,体力直线下降,这就是所谓的“逆风球难打”,而评论一个球员的好坏,主要就看他打“逆风球”的时候会有什么样的表现。我们在做事的时候也会经常遇到“逆风球”的情况,这时候如果我们不去转换思路,还是钻牛角尖的话,是很难去集中精力的,更别说是解决问题了。我有过这样的经验:当我在大脑中连续问自己三次同样的问题,比如说“这个问题怎么解决?”“这个问题到底怎么解决?”“这个问题怎么解决才好呢?”然后思想就开始抛锚“股市现在快收盘了吧?看看那只股票如何?”这是很神奇的事情,我不知道产生这样现象的原因是什么,我只知道,当我问自己同样的三个问题时,注意力就会分散。如何解决?这也是我很长时间以来总结出来的个人经验:站起来思考。我曾经和中科软的工程师一起合作过一个项目,那个软件需要比较复杂的逻辑,如果不能高度的集中注意力,是理不清需求方的业务逻辑的,那个姓吴的工程师负责最复杂的模块,他完成代码的速度虽然不是所有人里面最快的,但是他完成的代码却是所有人里面质量最高,最少修改的一个。于是我就对他进行了仔细的观察,我发现,中科软的那个工程师有一个很好的习惯,当他思考流程设计和代码编写中的难点时,总是喜欢站起来,走到窗边,望着远方,活动活动脖子和肩膀,持续一段时间之后才会又回到位置上敲代码。小小的一个习惯,却是一举两得的事情,既放松了身体,缓解了视疲劳,还通过改变身体状态,跳出了牛角尖,后来我也尝试了这种方法,真的很不错:当你改变身体的状态和周围的环境时,你的思维模式真的也会改变耶。失去了下一步行动经常有GTD好友问我:“为什么GTD一定要强调下一步行动的重要性呢?我们以前用任务列表的方式不是也挺不错吗?虽然不像下一步行动那么具有可执行性,但是我起码可以知道哪些事情要做,这难道还不够吗?”我的回答是“远远不够,你可以做这样的一个试验:A某写10件任务在列表上,B某把这10件任务的下一步行动全找出来写到下一步行动清单上,同样都是完成一件,划掉一件,一周之后,统计一下这两个列表的完成情况。”结果往往是B某下一步行动清单上的事情都搞定了,也就是搞定了10件任务,而A某任务清单上的却没有完全完成。这是什么原因?下一步行动清单的魔力何在?原因很简单:下一步行动的意义在于它能为你提供充足的行动力所以,我们失去了下一步行动,就容易注意力分散。早晨到了办公室,拿起清单,上面写着“完成裁员计划!”,然后就开始东想西想,打开网页看会新闻,然后突然想起,“哦,我应该完成裁员计划,我该裁掉谁呢?”,然后关掉网页去思考裁员计划,没一会又开始翻看业务报表,10分钟后又突然想起“shit,我应该完成裁员计划!我该裁掉谁好呢?”,这就是典型的注意力分散和拖延。那么我们考虑下另一种情况:早晨到了办公室,拿起清单,上面写着“10点问市场部李经理要半年内的销售业绩报表”“和人力资源部老王沟通三个月内的职员状态”“和李总约下午4点沟通裁员计划事宜”“下午2点和各个部门负责人开会讨论近期工作,对员工状态进行摸底”虽然任务清单只有条记录,而下一步行动清单有四条,但是哪一种更有行动力?更不容易分散注意力呢?最终完成裁员计划的会是前者还是后者呢?所以,当你无法集中注意力的时候,或许是因为你失去了下一步行动,那么我建议你,将手头的事情进行分解,直到找到下一步,可以立即执行的行动吧!未完待续…………