还是关于设计模式

我的那个那个php程序,在实现了留言板,用户登陆,注册这些基本功能和并且对UI小做了一下设计后,就没有增加什么功能了.原因是敲代码的感觉很不舒服,添加功能也不知道去哪里加.
我在设计这个程序的一开始,就打算把所有东西纳入对象中去考虑.凭着我对类分工的浅显理解.我把显示层的东西放在Page类里,把需要与数据库的交互的操作通过Page类传给相关的类,然后返回给Page类再进行显示.但是对一些实现在类与类之间的分配总是让我犹豫很久.比如对一个字段的过滤究竟是应该放在Page类里,还是具体的操作类里,或者索性把它抽象出一个类?
一番了解后,我觉得这种犹豫可能是因为我对面向对象的一些原则理解的不够透彻,实在一点的说就是我的脑子里没有相关的设计模式.所以在这段时间阅读了很多和设计模式有关的材料.最开始买了经典的GOF的设计模式,确实这本书不是十分的易懂.后来看了网上一些评论后买了大话设计模式,一本国人写得head first式的书,觉得读起来比较容易明白-虽然有些例子实在让人起鸡皮疙瘩.再加上配合李建忠的C#设计模式纵横谈,有些时候有种醍醐灌顶的感觉.现在回过头再看GOF的书,原来莫名其妙的很多地方都会有新的理解 .
再看之前的代码,就明显感觉到粗糙.按面向对象的原则重构后,思路就会变得清晰.之后再增加逻辑,我想就比较容易了.
另外就学习设计模式的路径来说,对现有代码的重构我觉得也是一种很好的方式,至少就成就感方面来说比直接按照书上敲代码高的多.而且因为的出现才去寻找相关的模式会很有针对性.

Connie Talbot


这张专辑很好听.
最近喜欢小loli…不过这个真的很小…
童星总是让人想说很多.

Posted in Music. No Comments »

设计模式

好几次总是在作品设计到一定程度时候就进行不下去,像我做得那个php的小玩意儿.就总是苦恼在逻辑越来越复杂而引起的要瞻前顾后的窘境中.这几天在翻设计模式的书,真的感觉这就是目前的瓶颈.
觉得oop本身就是一种抽象,然后在语言技巧增加的同时需要对抽象本身进行抽象,这确实是蛮搞的,不过就像GOF那本书里表达的那样,这是在之前的抽象和之后的复杂度中间的选择.
都说GOF那本书写得很难读,自己读起来确实是这样.感觉一方面是因为本身的oop设计经验不足,其次就是这本书压根就是按成为经典的套路写的,从整本书到每张都是从抽象到具体,作为参考确实不错,但是要从通读的话确实很吃力.不过在看过一些实例以后感觉会轻松很多,我在Verycd上找到了这个,虽然是Java的模式,但道理相同.

php程序改进中

在昨天的完成登陆系统的基础上加上了注册功能,另外整套程序的架构又大改了一番,往mvc的模式上靠,依然没有使用任何框架-现在的目的并不是做出一个什么东西.其实完成基本的架构完成以后再增加功能感觉就比较简单.这也是模式的重要性.讲到编程的效率一般指两方面.一个是coding时的效率,一个是程序运行时的效率.所谓模式这东西大约就是在尽量少牺牲运行时的效率的同时大力增加coding时的效率-团队合作时更能发挥作用.
除此之外,我对一些全局性的东西该用什么存储比较头疼,网上看到了这篇文章比较有启发.虽然自己还是在用define.抽象性和效率总是一对矛盾.看来得加一个测试运行时间的东西,好在各种模式中做出取舍.
原来准备着手解决安全问题来着,可是目前广度我更加关心,在对一个完整的应用程序的各个方面有一个比较全面的了解后,考虑这些东西比较适当.
明天应该开始加上一些具体的功能了.

关于ui类的疑问

把所有的显示集成在一个类总归是不对的.
这样做的结果就是形成一个超级庞大的类,生成登陆页面甚至需要解析一个注册页面的代码,显然这样是不合理的.开始我想到了两个方案.一个是为某一类界面建立继承类,在用到的时候再读取文件-这样做显然有把oop进行到底的意思,另一个就是除了基本上共通的部分,把每个部分的UI放在需要用到它的类中处理.后来决定用第一种方法.
似乎有意无意的不让一个类过于庞大,但是,现在还不清楚这个庞大的限度是多少?或者说总是希望让代码设计能抽象一点,更oop一点.但是有时候会提醒自己,想要的只是其带来的好处,而不是,其本身.否则既是其的异化.

Posted in php. No Comments »

再次开始研究php

这几天,在回忆一些php,javascript之类的东西.昨天下午从 这次做的东西从一开始就在可能的范围的都采用oop的思想,包括UI,包括用户登陆注销.都交给某个类来完成,不知道这样是不是狭隘的理解了oop.但是比较纯粹的东西总会散发出某种美感,而这也是我现在在追求的.
程序的运作流程是核心是core.php这个文件,用户的请求通过$_GET传导到这个文件中的分支结构,然后传导到各个类来处理.
总的来说,某种程度上有借鉴一年前阅读过的Project Babel的思想.现在应该更多是形成一些自己的东西的时候,太多的参考感觉并无大意.

Posted in php. No Comments »

搬家

纯粹化我的主页
2008-06-10 20:22:05
把豆瓣日记事情当作的blog似乎是个不错的选择,恰当的浏览权限控制,简洁的界面.
至于我用wordpress搭的主页,就写一些更技术化(不光指IT技术,总之就是一般谓之外在的)的东西吧.
其实我也不爱折腾,我的blog也只搬过1次家,这次应该只算分家吧.
怎么定义这么做的原因?纯粹化?只是觉得把一些东西混在一起会觉得怪.

Posted in Life. No Comments »

Technical

很多年前,我在msn spaces的空间的名字是”纯技术视点”,取这个名字,除了当时开始对c++痴迷外,还有一个隐喻就是,我试图技术性的观察周遭的一切.这样做的好处就是,我可以从我自己的世界脱离,把处理生活中的一切交给预先设定好的逻辑.我可以几乎不被外在的任何事物引起引起情感上的变化.而当这套逻辑带来我不希望的结果,我需要做的仅仅是改变这套逻辑,使之更完美,然后回到我的小木屋,关上门了事(甚至在内心中营造出关门时”咣当”的声音).很长一段时间,我对成熟的认知,就是手中这套逻辑的完美程度.
不知道从什么时候开始我开始拿手中一切来检验它自身,而当这项检验难以进行下去的时候,我就对那样东西产生怀疑.于是我用上面的逻辑检验我采取这套逻辑的得失的时候,我遇到了困难.在我面前的问题依旧是何为我所欲,价值观,道德等等东西.她们瞬间从我精心构建的逻辑中滑落.
而这些东西如果不是神赐予,终究只能悬在空中.价值观不能证明其自身的存在的合理性的.
或许我可以如此修改我的逻辑,即逻辑不能自证.
那我又何苦建构哪门子逻辑.

Posted in Life. No Comments »

投影

从头开发一个for business的网站和for geek的网站很多时候的着眼点是不一样的.
一个for business内容一般遵从传统的营销原理.确实从广义上来说,这个产业更有活力,但是当用户增长到一定程度,这一切会消失.
一个for business的网站,其作为盈利手段那部分,必须predictable,至少在一定程度上.因为你可以承受失败,但是你需要考虑你的资金流.
一个for business的网站一定情况下牺牲操作一些效率,而不能让你的用户间有任何断层.
一个for business的网站初期对开放性一般抱着保守的态度,因为那时的资源是有限的,但后期这些又是需要的,因为那时这些问题已经解决了,需要考虑的是用户黏着度.
…….
但是我们不缺少for geek的网站,因为生活本来就是两面的.

关于2+2及其他

之所以这么久没有blog,除了因为twitter的出现,就是很长一段时间在准备宁波大学法学的2+2考试,前几天结果下来了,我将在下个学期转到宁波大学读书.
在最终的结果下来之前我其实就把它作为某种事实接受下来.我想成为geek,我想实现我的完美逃离计划,都需要换一个城市开始.现在很想做的是看完买来很久的关于c++,关于php,关于javascript的书.我准备2+2考试,这算是很重要的一个动因,但是这个学期还有英语四级需要通过,那只能再一次对教育制度妥协,我还是会用心的准备的.
对很多有趣的东西,很期待.

纯技术的看宁波大学法学2+2考试,民法学考试中的司法考试味道很浓,从考纲到考卷中很多直接取自司考的题目,总之按照复习司考的方式复习就可以了.综合的考纲很多也和司考一样,但是考察方式有点类似考研,另外还会有些政治和时事的题目,以后准备考宁大法学2+2的人权当参考.

Posted in Life. No Comments »