02 2009 档案

第二桶 基于对象的编程 第一碗 老C初谈统一建模 小P开练建模语言(之一)
     摘要: “是啊,无论怎么样,统一和标准是我们的需求,只有用统一的标准的符号我们才可以更好的交流。一个反面的例子是我们上数字电路里面的与门、非门、与非门和或门等等的逻辑符号,国家标准与业界流行的国际标准就不一样,导致学生在毕业的时候可能看不懂行业内的电路图——就事实而论,我们大部分的电路模块产品和芯片的说明手册还是欧美的居多——这样即加重了企业负担,可能需要再花一部分精力来培训新人,也增加了学生的负担——为了在毕业的时候增加些许竞争力,不得不学习两套符号系统。总之我觉得这个事情还是比较脑残的,让我想到窄轨铁路……”老C借机发泄了一下从毕业就开始累积的郁闷。。。。。。
“UML是建模工具,不是编程工具。模型需要对实际的事物进行合理的剪裁和取舍,注意模型的清晰性比信息的完备性更重要,如果不论青红皂白的将所有信息一股脑全部放在模型上,那样图形看起来会很恐怖的。”老C接着解释,“所以不要要求模型完全反应细节信息,只要在大方向上对就可以了。同时你还要了解模型所要描述的问题规模,如果是一个大型的交易系统,按照我绘出的sequence diagram的详细程度,那是根本不可能的。在描述这样的系统时,  阅读全文

posted @ 2009-02-26 15:34 Anderson 阅读(1851) | 评论 (5)  编辑

第一桶 从C到C++ 第十一碗 老C初论对象模型 小P学习基于对象(之二)
     摘要: “你体会的挺深刻的啊,”老C点点头,“你说的没有错,如果照这种方式写代码的确有些繁杂,因为这个工作不应当直接在编码过程中进行,而应当在设计过程中进行。要解决这个问题,需要引入新的工具——UML……等会再给你解释什么是UML……”制止住小P的发问,老C接着说,“确实,将 index放在list内部会造成种种不便,但是也有解决之道,比较经典的做法是将index从list中拿出来单独成为一个模块或class,这就是 iterator设计模式,我们以后再慢慢说……”他停顿了一下,“至于怎么良好的设计list,也有一些经验可以总结,同时也有一些业内的惯用法,这个我们接下来会更早讨论这个问题。”
“噢?那么我应当先学习什么呢?”小P问。
“嗯,先接触一下UML,”老C想想说道,“然后我给你讲讲一些关于线性表的惯用法或者习语。最后我们再来讨论如何将index与它的操作从list中拿出来。”  阅读全文

posted @ 2009-02-20 20:02 Anderson 阅读(1572) | 评论 (4)  编辑

第一桶 从C到C++ 第十碗 老C初论对象模型 小P学习基于对象(之一)
     摘要: “哦?这样有什么好处呢?”小P问道。
“最大的好处是在语言层面对基于对象的编程方法给予了更多的支持,这样在开发的时候开发人员的智力负担会小很多……”老C停了一下,加重了语气,“我们做事情的目的是简化问题,任何新工具和新方法被发明的目的都是为了使问题看起来更简单一些,而不是使问题看起来更复杂。”老C想了想,“如果你了解了某种语言特性所针对的需求,你就可以更准确的使用这种语言特性而不会出现误解,同时也会说,啊,这样多好,不得不如此。”  阅读全文

posted @ 2009-02-19 17:21 Anderson 阅读(1498) | 评论 (1)  编辑

第一桶 从C到C++ 第九碗 陈老C演迭代开发 潘小P学渐进编程(之四)
     摘要: 老 C接过彩笔,在白板中间从上到下画了一道线,左边写上思想,右边写上方法。“你先写写思想上的东西吧,”他喝了一口水,“思想是最重要的,我们需要通过学习语言来学习思想——只要学会了编程的思想,那么你再学习其他任何语言都会很快——要深入语言去学习,而不是只是使用语言。首先我们的第一个经验是,以数据为中心思考问题,而不是以活动为中心思考问题。”
“嗯,好像没有什么问题,如果我们以数据为中心思考问题,那么总会抽象出一些变化较少的,相对稳定的数据,将对数据的操作与数据捆绑到一个代码单元中,这样就可以有限度的复用已经开发的代码……”小P若有所思。
“呵呵,这只是一个好处,还有一些其他的好处,需要你在以后的编程中体会。”老C笑笑。这样白板的左边出现了第一个和第二个经验的总结。  阅读全文

posted @ 2009-02-18 23:49 Anderson 阅读(1756) | 评论 (6)  编辑

第一桶 从C到C++ 第八碗 陈老C演迭代开发 潘小P学渐进编程(之三)
     摘要: “编译……运行……ok,我们的V1.01版本也好了。”老C又将所有文件拷贝到AppleGame_V1.01目录下。
“等等,”小P问道,“我看不出有什么实质性的变化啊,无非就是用一些static函数替换了原来的内容,换汤不换药啊。”
“呵呵,你看不出区别是因为你熟悉,如果你第一次看代码,你会觉得是在代码中看到QueMoveToNextChild(&(game->childrenQueue_))感觉好些,还是看到一堆鬼画符似的结构体点点点的感觉好?”老C解释道,“意图,这里强调意图,因为使用了函数你一眼就可以看出程序执行的意图,而如果是一堆代码的话,你还要反应半天;如果明白了意图,再去看代码,感觉会好很多——而且你可以根据代码意图提出更好的实现方法;同时这样也减少了代码中注释的工作量——一般在维护代码的时候人们很少去修改注释的;最后,如果你的具体实现需要被维护,这样也给维护代码的人提供了线索,无需他在源代码程序中找来找去……如果不小心还有可能将你的代码进行错误的修改……”他找到水杯,喝了一大口,“总之不要害怕小而短的函数,有时它们对阅读代码的人来说是很  阅读全文

posted @ 2009-02-04 22:10 Anderson 阅读(2021) | 评论 (9)  编辑

第一桶 从C到C++ 第七碗 陈老C演迭代开发 潘小P学渐进编程(之二)
     摘要: “很遗憾,一般概念都伴随一些晦涩的术语,而一般人则视术语如猛虎,认为术语只属于学术,在一般的实际开发中没有什么用处——然而我们组织逻辑的最基本单位就是词汇,如果我们在思考、交流的时候连基本的词汇也无法理解,那么就根本谈不上什么思考和交流了——毕竟大多数人类还是靠语言进行思考的,除了少数天才使用图形和符号进行思考;同时术语也简化了我们交流的复杂度,比如我说PID,只要你理解了什么是PID这个概念,那么我就不用画出框图并解释这个带有比例、积分和微分环节的反馈系统,这样在行业内工作的人们可以方便的使用术语进行交流……罗嗦了这么多,只是希望你不要对这些晦涩的术语带有排斥的心理,而是要慢慢习惯它们,接受它们……虽然有些术语名字起得的确有些脑残……”老C喋喋不休的说道。  阅读全文

posted @ 2009-02-04 16:42 Anderson 阅读(1957) | 评论 (3)  编辑

<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

导航

统计

常用链接

留言簿(6)

随笔档案(21)

文章档案(1)

搜索

最新评论

阅读排行榜

评论排行榜