上一页 1 ··· 3 4 5 6 7 8 9 下一页
  2012年5月30日
摘要: 写面向对象设计原则的文章很多,但在我看来面向对象的一些原则是虽然是对的,但不够精练。大多面向原则其实可以用三个支撑点推导出来:确保正交,控制层次,信息隐藏。这一篇里谈一下确保正交性。抽象是设计工作的起点,而抽象的结果可以是一个具体的概念,也可以是一段逻辑。正交性则与抽象的结果有关联。为了理解正交性,我们先来看一下这个词的几何解释:当两根直线互相垂直的时候,我们认为这两根直线是正交的,否则的话这两根直线就是不正交的。这似乎和软件没什么关联。但如果我们假设相交的不是两根直线,而是两根圆柱的话,那么我们就可以看出来正交和非正交的差别所在。在正交的情况下,两根圆柱的最大接触面积始终会等于圆柱截面的面积 阅读全文
posted @ 2012-05-30 00:29 理想流 阅读(2674) 评论(1) 推荐(1) 编辑
  2012年4月25日
摘要: 注:十年是凑个整,讨个口彩,实际算来却是10多年了。这篇是口水文章,感兴趣的瞄瞄,不喜欢的莫踩。另,这里也不包含开源的各种发展。《不差钱》里的鸭蛋说,长江后浪推前浪,坚决要把他爹拍在沙滩上。我无意间一回想,软件开发上还真有点这个味道,十几年间,已是三代程序员。第一代程序员大致上是基于DOS来做开发,常用的开发环境叫TurboC。这个时候还没那么多API和类库,也没那么多层次,你要想干什么很容易直接操作到硬件。如果你不喜欢开发环境提供的库函数,大可以自己操作显卡显示点什么。现在回想起来,那一代程序员应该是国际水准,大家玩的东西是一样的能鼓捣出WPS,UCDOS,KV300的人绝对是超一流选手,世 阅读全文
posted @ 2012-04-25 00:32 理想流 阅读(3257) 评论(16) 推荐(9) 编辑
  2012年4月23日
摘要: 很多人以为提高编码质量,需要很多激动人心的创新,需要明显的飞跃,这也许对,但我个人感觉项目中提高编码质量是个水磨功夫,要一步步积累,方法论大多时候帮助不大。这次先从命名说起。当我们看到一份设计图或一份代码时,大多数人会【望文生义】。但使人【望文生义】却正是语言文字的根本使命。因此,如果一个函数被命名为Add(),但内部实际做的是减法,那么这份设计或者这份代码,一定是很难理解的。于是一个非常现实的问题就摆在了我们的面前:我们究竟应该如何为类,为方法等等命名?以命名而论,有两个较大的陷阱:一个是名实不符,一个是词义混淆。名实不符的常见情形又有两类。比如:以偏概全。假设说一个方法被命名为Output 阅读全文
posted @ 2012-04-23 00:17 理想流 阅读(2927) 评论(5) 推荐(5) 编辑
  2012年4月18日
摘要: 假使说我们认同软件的构造是一个复杂的过程,那么管理这种复杂度必然需要一些技巧。而为了找出这些技巧,则需要先瞄一眼这种复杂度的基本构成。软件的构造过程牵涉了两个最为基本的要素:一是软件,一是构造软件的人。假设说存在着一个标准的人,这个人智力水平恒定,创新能力恒定,技能水平恒定。那么软件的复杂度只决定于其自身,比如软件所需要面对的业务规则,所需要的计算水平等。应对这类复杂度的有效手段是优化方法,好比说快速排序的效率大多时候就是比冒泡排序好。当我们开始考虑人的可变因素时,复杂度的来源则发生了变化。人是有着许多与生俱来的特质的,比如说:人是会犯错的,人同一时间可以处理的事情是有限度的。因为这些特性,人 阅读全文
posted @ 2012-04-18 00:03 理想流 阅读(2198) 评论(1) 推荐(4) 编辑
  2012年4月16日
摘要: 很多人谈学习和发展的时候,往往忽略人的先天自然条件,在这里我们从这个视角切入,来探讨一下程序员一生的可能轨迹。如果把程序员的人生分为三个阶段,那么他们是:毕业~30岁:这个时间段里,大多数人无牵无挂,家里面父亲母亲不用太操心,也没娃,可能会犯愁找不到老婆或老公,但基本上自由时间较为充沛,身体比较健康。算是上升时期。30~45岁:这个时间段大多数人处在上有老,下有小。父亲母亲可能需要较多照顾,倒霉的话自己还有点小毛病。时间不是很充沛了,算是能发光发热的黄金时期。45岁~退休:这个时间段值得牵挂的事会变少,反倒又能回归到自身。脑力体力逐步开始衰减,算是守成时期。如果运气不好,也有英年早逝的可能。限 阅读全文
posted @ 2012-04-16 00:01 理想流 阅读(6372) 评论(33) 推荐(11) 编辑
  2012年4月11日
摘要: 程序员这个群体有一个典型的特征:那就是【技术能力】大多时候和【以自我为中心的程度】成正比。具体表现形式可能是目中无人,也可能是特立独行,诸如此类。但实质上,以当前的情势而论,大多时候一旦你选择打工,而非创业,大致上也就失去了目中无人或特立独行的资格。毕业生首先需要的是适应环境,而非是指望环境来适应你。这里的环境就包含了身边可能有点落伍的技术,可能有点繁杂的“人”“事”,可能有点愚蠢的规章制度,可能付出了却被苛责,可能努力了暂时却看不到回报。任何一个公司,不论牛或不牛终究有一份自己的传承,在不违背法律的时候,无所谓好或不好,只是一种不容漠视的存在。天下大势,浩浩汤汤,顺之者盛,逆之则亡。公司势小 阅读全文
posted @ 2012-04-11 00:19 理想流 阅读(4648) 评论(25) 推荐(16) 编辑
  2012年4月9日
摘要: 对于软件而言,层次是让人又爱又恨的东西。很多问题是通过增加层次解决的,但另外一部分问题也是因为层次而导入的。我们来分别看几个例子。例1:很多时候我们并不希望最终的应用绑定于某个指定平台,比如:Windows。为了达成这种跨平台的目的,就需要在OS和应用之间加入一个中间层,这个中间层负责屏蔽不同OS的差异。实际上,Java虚拟机等走的都是这样一条路线。例2:当使用XML文件保存配置信息的时候,我们并不希望XML的结构在整个程序中随处可见。比如说:现在我们在Configuration/OutputFolder节点下保存了缺省保存目录,但将来很可能节点变成了Configuration/OutputF 阅读全文
posted @ 2012-04-09 00:03 理想流 阅读(2104) 评论(1) 推荐(2) 编辑
  2012年3月28日
摘要: 一点说明:作为程序员,通常心里是讨厌软件工厂的,但很多时候问题自身皆有其内在理性,并不以个人的偏好而改变其发展的轨迹。所以程序员一旦谈及和自身喜好相关的问题时,尤其要摒绝个人好恶,否则就会离问题的真相越来越远,而只有一腔情绪。就我个人观察软件工厂大致处在这样一种地位:经营管理者迫于成本的压力,总是潜在的期望其可能实现;而程序员群体自身则总是对其嗤之以鼻。为什么在经营层面软件工厂有如此大的诱惑力?这不难理解,如果软件可以用工厂的模式来运作,那么程序员的可替换性将被无限强化,这样软件开发的成本就可以大幅度降低。看看近二十年来中国制造的影响,就可以理解这种廉价劳动力所蕴含的巨大杀伤力。经营层面话题可 阅读全文
posted @ 2012-03-28 00:08 理想流 阅读(2050) 评论(18) 推荐(1) 编辑
  2012年3月21日
摘要: 在1992年,JackW.Reeves发表了一篇名为:CodeasDesign的文章,这篇文章可以在《敏捷软件开发原则、模式与实践》一书的附录中找到。这篇文章的核心观点是:编码也是设计,而软件开发中与建筑行业中的施工所对等的工作,已经被编译器代理了。这是几近20年前的文章,但时至今日,类似的争论仍未休止。好像是在《软件架构设计》里,在讨论架构设计时,作者就点了一句:这总不能说是设计就是编码了吧。解释这一问题并不复杂,但需要用到一点辩证法。我们可以讲:设计即是编码,也不是编码。在别的文章里我们曾经提及,软件是一种固化的思维。从这一角度看,软件构建的核心步骤只有两个:一是明确固化什么,二是对思维进 阅读全文
posted @ 2012-03-21 00:16 理想流 阅读(1826) 评论(2) 推荐(2) 编辑
  2012年3月19日
摘要: --愿与勇于正视现实的人共勉在开始任何其他文字之前,首先有必要正视一个根本现实:国内外软件开发的水平是有差距的。这一结论的最直接证据是每一轮新技术的发起者基本上都是国外的人或公司:从方法论(CMMI,敏捷等)到各种框架(近来很热的Hadoop等)再到新的编程语言都是如此。总的来看这类差距似乎可以概括为“原创的缺失”,大多时候,我们只是处在一种“跟随者”的角色上。RUP出来后我们跟谁RUP,敏捷出来我们跟谁敏捷,云计算出来后我们跟随云计算,大致如此。年纪小的时候,会单纯的以为造成这种局面的主要原因是个人技术能力不足或努力不够。但现在想来,这反倒是次要原因。单以单兵能力来看,国内外的程序员群体未必 阅读全文
posted @ 2012-03-19 00:06 理想流 阅读(4735) 评论(28) 推荐(3) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页