软件代码设计零碎杂想
辉歌
这个作者很懒,什么都没留下…
展开
-
软件代码设计零碎杂想-1
team内有同事对设计模式的兴趣,勾起了我对软件代码设计的一些遐想,感觉有些话要说,要记录,所以就有了这系列文章。 接触到软件程序开发的人,肯定对程序=算法+数据不陌生。我记得这句话,但不记得说这话的人,当初,我更不理解这句话。现在,我好像有点明白了。 先从MVC模式说起。这个模式当然很复杂,涉及到的角色互相牵连。但是,这个模式,就是程序=算法+数据的一个体现。为什么这么说? 视图是表现数据的角色。如何表现数据,如何处理数据?涉及到算法。视图只负责算法,它不关心数据如何变化,是否变化,它只读取数据,它老老实原创 2010-07-23 11:33:00 · 534 阅读 · 0 评论 -
软件代码设计零碎杂想-2
想到一个极端的例子,主要是想说如何提取变化的东西和设计的取舍。 先看一个题目:考试分数为百分制,请将给定的分数进行分类,分类规则是 [0,60) 不及格 [60,70) 合格 [70,80) 良好 [80,90) 优秀 [90,100] 杰出 嗯,题目简单,做法也很简单,如下,简便起见,假设分数为整形: char* get_result(int x) { if ( x result(); } 有的人说,有的时候,用if只是简单判断下参数是否正确而已,可以像上面进行抽原创 2010-07-23 19:49:00 · 730 阅读 · 1 评论 -
软件代码设计零碎杂想-3
基于现在的计算机架构设计,也基于这个世界的时空规律,现阶段,就我所知,对于一个线程的执行,在cpu中,是一个指令一个指令执行的,也就是说,cpu是按照顺序来读取机器指令,在某时刻,只有一条指令被执行。我还没有发现过在同一个时刻,同一个线程里的多条指令被多个地方同时执行,也没有发现cpu在执行指令的时候,不按照指令顺序,东一条西一条的去乱七八糟的执行。为什么扯这些闲淡?我只想引出高级语言中的3类流程控制结构,无论哪一种流程控制结构,最终在cpu上,都是乖乖的一条指令一条指令的执行,并没有什么面向对象,面向过程原创 2010-07-30 12:08:00 · 516 阅读 · 0 评论 -
软件代码设计零碎杂想-4
多年以前,当我还对面向对象的软件设计思想热火朝天的时候,我手里捧着一本带着软件复用字样的书,刚巧被公司搞UI设计的同事看见了,他当时已经考取了PMP,问我,“软件复用,你们能开发出这样的被复用的代码来吗?” 我当时思考了半天,回答是,我现在还没有能力把现在做的这个项目里的代码,复用到另一个项目里去,当然,函数库,算法库,这库那库除外。 以面向对象的思想,用面向接口编程,至少有3个参与方,接口类,具体类,使用接口的客户,一般来说,只要暴露给客户接口类接可以了,再用一个创建工厂来创建接口类的实例,客户拿着这个实原创 2010-08-04 18:10:00 · 636 阅读 · 0 评论 -
软件代码设计零碎杂想-5
本节讨论下数据流转方式。 一般情况下,所谓对象,都有状态信息的,这些状态,其实就是对象的数据。如果一个对象完全不与其他对象发生关系,基本上是很少见的,一般的函数都需要参数。今天这里不讨论关于状态如何变化的问题。 那么两个对象之间如何发送关系,对象A需要对象B的数据,有哪些方法可以完成?这些都是在进行设计的时候,需要了解的。先看例子: class BTDownloader { double rate,speed,downloaded; .... }; 一个BT下载者,内部保存了下载速率,下原创 2010-08-04 20:43:00 · 623 阅读 · 0 评论 -
软件代码设计零碎杂想-6
上节简单讨论了下数据的流转方式,从最基本的方面进行讨论,然而,这最基础的知识点,往往被视而不见,不加细致的分析,反而去够摸比较飘的东西。关于数据及数据流转方式,还有很多方面要去考察,以后再慢慢谈。我写的每篇博客,漏洞很多,问题也很多,可惜看的人很少,没人关注,也没有人指出错误或者不对的地方来。 今天谈谈对象的依赖关系。同样从最基础的知识点谈起。先谈谈两个对象间的关系。任何一个对象,不是被其他对象所依赖,就是依赖其他对象。有一个实际情况要注意,对象的实例的使用方式,都是在一个函数里,都是在某函数中调用对象的方原创 2010-08-12 13:24:00 · 663 阅读 · 0 评论