推荐一本书:《UML面向对象建模基础》 
  以前对UML呀,感觉用不上,不知道都干啥的,也就是知道有个用例图、类图、顺序图,而且画的东西也顶多是表达一下需求,表达一下设计,让大家达成共识。最近做项目才知道UML其实挺有用的,从需求到分析,从分析到设计,从设计到编码,UML都有用武之地,而且我感觉正确运用UML可以提高项目的成功率。
  后来从《程序员》杂志上看了徐锋的《实战OO》系列文章,这才对面相对象和OO有了更深入的了解,讲解的循序渐进,按部就班,看了就懂,就能用的上。后来作者又基于这系列文章写了一本书,就是我给大家推荐的这本书《UML面相对象建模基础》,我借来看了好几天了,把UML概述、类图、对象图、包图、用例图、构建图都了,讲的确实不错,挺适合UML初学者,或者做了好几年程序却感觉对OO了解不深入,不能灵活运用的人。整本书架构安排合理,先介绍了UML的概述(都是有用的,空洞理论解释概念很少),然后逐步介绍了UML的几大图(UML2.0的,比UML1.0多了几种图,都介绍了),然后几节还讲解了需求建模、设计建模和数据库建模,最后还讲解了一下ROSE的用法已经模型管理。
  每节的开头,还用图形的方式把本章的知识点画了出来,很形象,容易记忆。具体展开叙述的时候也配有好多符合实际的例子,让你想画什么图的时候一想那例子就知道怎么画了。书里还给大家介绍了一些使用UML的原则,都是作者经验的积累,这图不是画的多画的细就是好。画什么样的图,读什么样的图都是有技巧的,作者都给了个指南,按部就班,照着做,少走弯路。每节后面还有练习题,你看完一章,试着做做练习题,巩固一下,帮助记忆。确实安排的特别合理。
  UML确实是基础的东西,早学早受益。你要学设计模式,学架构设计,学重构,连UML图都看不懂,画不了,是很难学的。得先有OO的思想,才能有OO的设计,有了OO的设计,才有写出OO的程序,当然了也不是这程序越OO了越好。总之,我感觉这本书对我帮助挺大,好东西推荐给大家,希望大家看了这本书后能真正的把UML用起来,用好,提高自己的编码质量,提高项目的成功率,我想这也是作者的目的吧。
   书不厚,200多页,价钱也不贵,20多块。关键是对咱有帮助,不能天天傻写代码了,该停下来打打基础了。 
原文
http://www.cnblogs.com/onlytiancai/archive/2006/10/13/528205.html

解决方案 »

  1.   

    不是我写的,但是是本好书,给大家推荐一下,现在好多书都看不懂,浪费纸张,这本书看的比较舒服,我只是想让大家少走点儿弯路,快点提高自己。
    另外鄙视一下《ASP.NET 2.0技术内幕》,翻译的太差了,不知道大家有没有看过。
    http://www.cnblogs.com/onlytiancai/archive/2007/02/06/641558.html
    框架设计 第二版也翻译的不行,我都买了,没办法,硬着头皮看ing
      

  2.   

    《ASP.NET 2.0技术内幕》翻译的太差了
    先不要说我冤枉译者哦,咱们一块先看看书中的原文。
    p19:在CLR中,应用领域(AppDomain)为运行托管代码(managed code)提供了隔离、卸载和安全边界。
    这里把AppDomain翻译成应用领域,可见译者根本就没有看过任何一本.net的入门图书,谁这么翻译呀,耍什么个性呀,MSDN里也叫应用程序域呀,可见译者根本没有查过.NET的MSDN。
    p21:在ASP.NET提供程序模型背后有一个著名的设计模式--战略(strategy)模式。
    别人都叫策略模式,人家叫战略模式。你要不会翻译,你用金山词霸翻译一下呀,金山词霸翻译出来也是“策略, 军略”不是战略呀。看过好多本设计模式的书都叫策略,就你翻译成战略,让人看了根本不知道说哪个模式。
    p65:用户代码的若干事件标志着响应的生成,并总称为页面生命期(pag life cycle)。
    前半句话我是看不懂到底是什么意思,Page的PreInit、Init等这些事件怎么就标志着响应的生成了呀,响应是啥?也许这句话就是说在页面响应过程中的各个阶段会引发各种页面事件,可是它那句话说的真令人费解。
    p68:工作进程的一个副本始终在运行,并托管所有活动的web应用程序。惟一例外的情况是一个带有多个CPU的WEB服务器。在这种情况下,可以配置ASP.NET运行库,以便多个工作进程运行,使每个CPU分配到一个工作进程。例如,如果有多个CPU,并且需要运行线程安全的代码,但又不足以假设它在一个多处理器环境下也能顺利运行,则需要这么做?
    这么做?怎么做呀?配置运行库?怎么配置呀?就算是配置运行库,你前面说的配置运行库是为了“多个工作进程运行,使每个CPU分配到一个工作进程”,这和“多个CPU,并且需要运行线程安全的代码,但又不足以假设它在一个多处理器环境下也能顺利运行”有啥关系呀。
    p70:总之,在IIS6.0进程模型下,ASP.NET运行得更快,因为在inetinfo.exe(IIS可执行的)和工作进程之间不需要任何进程间通讯。
    inetinfo.exe和w3wp.exe都俩进程了,怎么还不需要进程间通讯呀。难道w3wp.exe不从http.sys那里获取请求?不通讯,怎么获取呀。也许这里我对进程间通讯的概念还有进程副本的概念理解不清楚,反正那段看上去特晕。
    p73:HttpApplication对象用来处理网页请求,每次处理一个请求;多个对象用于服务于同时发出的多个请求?
    大家念念最后一句话拗口不拗口,通顺不通顺。其实它就是说Http请求来了,HttpApplicationFactory对象从对象池里取出一个HttpApplication对象的实例来处理请求,一个请求用一个实例,多个请求来了,就会取出多个实例来处理请求(我猜的哦)。被他这么一说,根本就不知道啥意思。
    p92:注意,这个过程会跨页投递、脚本回叫和回发(PostBack)进行修改。
    首先少了个“被”字,这不是咱挑刺儿吧,其次啥叫脚本回叫呀,我晕,博客园随便叫个人出来也不会把Script CallBack翻译成回叫吧。我怀疑译者有没有WEB开发的常识。
    p93:跟踪视图状态使这样一个操作,它最终使控件能够真正地把所有以编程方式添加到ViewState集合中的数值持久地存储在存储介质中。
    像这样的长句子到处都是,你不得不费半天力气分析出主语谓语宾语,有时候一个特长的句子分析一下还会有歧义,急的你蹦儿蹦儿直蹦,看这样的句子简直就是一种折磨。前半句引出后半句,但后半句我感觉根本没有回应前半句,到底使什么样的一个操作呀,后半句说的是跟踪视图状态的目的,而不是阐述跟踪视图状态是怎么样的一个操作。你把前半句翻译成“跟踪视图状态用来完成这样一个目的”不就清楚了吗?干嘛写的那么逻辑混乱呀,你写清楚了,我还能挑你刺儿呀。
    p94:另一方面,提交页面的窗体时,其中的动态控件用定期发送的合法而有效的信息填充。
    这句话语法倒是没问题,可我就是看不懂,理解不了。后半句简化后,控件用信息填充,控件怎么还能填充呀。“定期发送”的主语呢?谁定期发送呀?“合法而有效的信息”是啥呀?一句话有这么多问号,谁还有脾气能看下去呀。
    p95:然后,大多数控件做相同的事情:引发一个服务器事件,并为页面作者提供一种方法提交并执行处理这种情况的代码。
    页面作者,大家知道它说的是谁吗?就算英文里写的是页面作者,你就不能直接翻译成页面创建者吗?听着页面作者这个词好别扭,程序员又不是诗人。提供一个方法就行了吧,还提供一种方法,方法还分种吗?即便分种也是静态和费静态,抽象和非抽象,和事件也扯不上关系呀。
    p96:处理回发事件以后,叶面准备为浏览器生成输出。
    叶面,你还挂面呢,无语了我,QQ群里聊天,打字打错了吧,你出本书也写错,就算字多,写错一个没关系,这样的错字,你说应该吗?
    p96:注意,这是页面保证创建所有的子控件。
    汉语有这么说的吗?“这是”是个连接词(也许不是哦)表示的是解释前面的描述,你写成“这样做是为了保证页面上所有的子控件都能成功创建”都能看得懂,干嘛不写。
    p97:注意,当页面或控件正在被卸载,但还没有被释放时,卸载通知到达。
    最后半句三个无关的词语摞在一起,不会是用金山翻译的吧。
    p97:完成对UnLoad事件处理程序的递规调用之后立即这个事件发生。
    好像少了个“引发”吧。算了,不列举了,我就看了那么几页,费了我多少脑细胞啊。本来这本书信息含量挺大的,感觉看看对ASP.NET的运行机理会理解的更透彻一些,这可好,费死劲也没看懂几页。我都怀疑这译者有没有用过Asp.net,对web开发的常识到底有多少了解。看作者是中国人工智能学会的成员,也许对ASP.NET不够专业吧。翻译成这个样子,怎么让人读呀,只能遗憾了,我又不懂英文。--------------------
    大家也推荐一下自己看过的好书,我再推荐推荐《代码大全》《ajax实战》《应用框架的设计与实现-.net平台》《重构》《设计模式精解》,翻译的都不错,看着挺舒服的,想往下看起码。