continue reading hover preload topbar hover preload widget hover preload

观点:iPhone为什么比Android好

Categories: 未分类  |   No Comments

观点:iPhone为什么比Android好

ugmbbc发布于 2011-08-29 14:20:01|2189 次阅读 字体:大 小 打印预览

感谢我是JW我要收购HTC的投递
新闻来源:果迷网
曾经在不同场合与很多安卓青探讨过一些或浅或深的知识层面问题,如今想来具备真正独立思考能力与当量知识储备的,也只有一人而己;换言之,绝大部分时候只是对牛弹琴。那么我将从以下七点来说明iPhone 4比Android手机们好在哪里:工业设计,操作系统,屏幕显示,开发环境,生态环境,硬件配置,杂项。

一、工业设计

林徽因当年动身学建筑的原因,按她自己来说是:”建筑是唯一一门将工程与艺术结合至完美的学科。“词句上可能略有偏差。这句话放到现在来看,应该把”唯一“去掉,因为设计学科几乎都有这方面特质。

工业设计本身的效用并不是如绝大部分人所想的,只具备”好看“这一特性。这门学科的水很深,从材料到交互,从人性到科技,却还带着无数的限制(比如材料产能不够或者价格过高,比如要为产品部分特性放弃某些绝妙的思想),可以说拖着汽车跑步也绝对不为过。
苹果在iPhone 4之上的工业设计,精妙绝伦,按乔布斯的说法是”它就和一款老莱卡相机一样美丽“。但它不仅仅于此,它环绕着机身的不锈钢圈,不仅是天线(虽然引发了问 题),也是固定机身的梁,同时也减少了内部占用空间,iPhone 3.5寸手机有1420电池,而i9000 4英寸手机只有1500而且稍厚。它两边的玻璃,不仅与IPS屏幕的光学有着最美丽的匹配,也起着防刮的作用(注意苹果从未说过它防摔)。我觉得一个有正 常审美的人,在看到iPhone 4之后都必须承认它是人类史上最美丽的工业设计之一。它的设计恰到好处,每一个设计都不拖泥带水,与手机功能息息相关。这就是工业设计的作用。它不仅仅是 美观,它还必须是功能。

当然它还有一个特性,那就是营销,也就是工业设计上很臭名昭著的指导原则”有计划的废止制度“。有计划的废止制度,是指”每一两年对产品进行小改变,三到 四年对产品进行一次大改变“;它是一直到现在都适用的指导原则。它最臭名之处在于,诱引人们放弃手头上依旧可用的产品去追逐最新的产品,造成大量的资源浪 费。但是很明显,它骨子里散发的营销气质是苹果非常看重的。从第一代iPod到iPhone的产品进化,苹果把这项原则用到了极致。

二、操作系统

自苹果收购了乔布斯的NeXT之后,花了六年把它打磨成了Mac OS X;又在2005年左右花了两年半时间,基于它制造了iOS。从各种意义上来说,iOS是一个传统技术的操作系统。它有一个基于微内核Mach的 Darwin内核,有一个叫做Cocoa Touch的运行时,用的是Objective-C这个C语言的超集。而Android在Linux内核之上,集成了一个Java虚拟机Dalvik,整 个应用层跑在虚拟机之上,而开发语言用的是Java。

事实上双方的选择都是很有道理的。苹果有Mac OS X十年基础,当然会选择自己最精通的技术,把iOS打造成一个传统系统,也可以无缝链接Mac OS X的开发者资源。而谷歌没有任何操作系统经验,为了要争取最大的开发者资源,他们选择了世界上最大的Java社区。虽然起点相同,但走出的第一步方向就已 经截然相反。

究其根底,只在于Java只有自动内存回收,而Objective-C自动与手动内存回收均可(注意iOS只有手动内存回收)。这小小的区别导致,谷歌只 能做一个Java虚拟机,而苹果可以继续他们在Mac OS X上的经验。而这个行为导致了两者在系统流畅性上的最大区别。Java由于只有自动内存回收,系统会在任意时间停掉所有进程开始回收内存,这个过程是人类 可以感受到的数百毫秒。而iOS由于可以手动管理内存,可以在用户操作的间歇由程序员进行回收,用户不会在频繁使用过程中感受到停顿。在日常使用中这个停 顿其实是可以忍的,但是在游戏过程中这个停顿是不可以忍的,比如想像一下一只愤怒的小鸟在空中停顿了零点几秒再继续飞行。

谷歌事实上意识到了这个问题,于是它在Android 2.3版本中大修了这个问题并将之作为一个特性大书特书。且抛开2.3的普及性不谈,单说这个大修的行为,也并没有修好这个问题。于是谷歌抛出了第二个在 开发上的修补:引入C/C++ NDK。可以说到了这一步, Android整个内核往上的应用层才有了与iOS抗衡的实力,可惜时间已经过去了近四年,iOS积累了十五年,Android刚刚起步。

而在内核之下呢?基于微内核Mach的Darwin 对比 当今服务器主流Linux又如何?当年Linux创始人曾经与某位牛人吵过一场著名的架,正是关于微内核与内核对比,Linus一直到现在都认为微内核只 是纸上谈兵而在现实中解决不了实际问题。在这场吵架之后的岁月,坚持内核的主流系统只剩下Linux一家,而微内核系统已经延展到了基于SVR4的IBM AIX/HP-UX,GNU/Hurd,Mac OS X,Blackberry QNX,Windows(是的,你没有看错)。Time will tell,这句话从来都没有错。Android三方ROM所困扰的驱动问题,正是Linux内核的最大局限,植根于骨子的病是治不好的。

三、屏幕显示

在2010年WWDC上,乔布斯在介绍那块视网膜屏幕的时候说了一句”We think it(IPS)’s quite a blt better than OLED“,他的理由是”提供了更精准的颜色,以及更大的可视角度“。事实上在流明上也远超。

历数当前的主流Android厂商,HTC和摩托罗拉用的只有TFT/SLCD这些非常便宜的屏幕(当然他们用了所谓qHD高分辨率来吸引眼球),三星拥 有自家的Super AMOLED(以及Super AMOLED Plus),LG作为苹果屏幕提供商也有几款高端机型使用了IPS,索尼则是自家的Bravia。以上所有Android屏幕,屏幕质量 (IPS/Super AMOLED Plus)勉强可以并肩的分辨率(800*480 vs 960*640)远远不如,分辨率勉强可以并肩则屏幕质量远远不如。

正如乔布斯在WWDC上所说的:”我们建立了这样一个标准,在未来几年内我不认为有竞争对手可以减少哪怕一步差距“。时间飘过一年,还没有人让他说错。

四、开发环境

在第二点操作系统里,已经略有提及两者开发工具差距。下面打算谈谈App Store对比Android Market。

App Store大概已经超过50万应用了,Android Market大约30万,当然这是建立在谷歌根本无审核而苹果严格审核下的,如果去掉一部分Android里面的色情、壁纸和铃音等垃圾应用相信 Android Market会继续缩水。当然在这么大的数目下,数量已经不是竞争关键,应用质量才是真正的关键。

应用质量如何提升?很俗,钱。开发者有钱,才会有好应用。开源项目很多都是公司或社区付钱给开发者的,而不是绝大部分人想当然都是免费劳动。那么钱从哪里 来?当然是消费者,消费者直接购买应用,或点击之上的广告,或游戏内购买道具/服务。一个消费者肯为应用花多少钱,才是能否赚大钱的关键。

很明显的,iOS用户所花的钱远超Android用户,这事其实有很多原因,我也不想一一点明,不然会被人说优越感之类。当然我也不是信口雌黄,调查到处 都是。这样的差距,事实上已经表现在开发者对两家平台的态度上。iOS已经成为开发者心目当中的首选平台,因为它之上的用户更愿意购买应用,开发者更愿意 用实力来赢取金钱而不是广告。而Android很多相应的应用,要么免费加广告的形式(比如愤怒的小鸟),要么干脆没有(比如到现在都没有的 Instagram)。有人说日常工具实际上需求量并不大,我承认,但谁能保证某一天iOS首发甚至独占的工具就不会进入你的日常工具列表?这样的例子已 经出现很多了,比如红极一时的Instagram,比如实用派的EchoEcho等等。

再转向娱乐应用。保持一个平台长久新鲜感的应用,正是娱乐。在iOS上的娱乐应用,无论是数量还是质量都远胜Android。究其原因,一是用户更愿意花 钱从而开发者更有激情,二是开发更加便利不需要考虑数百机型。事实上这个世界上大部分正经游戏都是用C++开发的,而Objective-C与C++天生 一家的特性吸引了太多游戏开发者(你可以直接用C++给iOS开发游戏),而Android的Java…

无论是开发者的态度,软件的质量以及开发的便利性,iOS都完胜Android。

五、生态环境

所谓生态环境,其实很简单,就是谁能提供更多东西供消费者把玩。iTunes作为全世界可能是第一大的信用卡绑定数字商店(因为亚马逊没有公布过数字),其上的音乐、书籍、电影、电视剧、播客甚至大学教学视频数量都远胜所有竞争对手。
作为竞争对手的惠普、谷歌,根本就没有这样全面的数字商店;而微软、诺基亚,虽然数量较为齐全,却从未获得过多数用户支持(或许是装机量太小,或许是低端用户居多)。

Palm前高管曾经感叹过,智能手机时代得四者得天下:一是生态环境,二是软硬件结合,三是开发者,四是云计算。苹果之所以一直坚持使用iTunes来管 理所有iDevice,生态环境正是其中一个原因。为什么Palm要死皮赖脸在iTunes去掉DRM后用iTunes来同步Palm Pre甚至不惜与苹果打官司?为什么微软在Windows Phone 7和Zune之上步iTunes后尘只允许用Zune软件来同步?

生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!生态环境!Think different。

六、硬件配置

主要是那块SoC芯片配置。在手持设备时代,与PC时代最大的不同就是,PC时代的芯片是由双巨头独占的,他们负责从设计到制造,你只需要购买;而手持设 备时代,或者说后PC时代,只有ARM一家寡头,它只负责设计。你把图纸买回去,进行深加工,然后自行制造或联系代工厂。

这儿就有无限的可能性。毕竟从头设计一个架构是非常非常非常麻烦的事,但在已经成熟的架构上再进行加工是相对容易的事。苹果与大部分Android厂商 (不包括三星)不同之处在于,苹果和三星自行设计,而其它厂商从三方芯片设计厂商购买成品。这些三方芯片设计厂商包括TI,NV,三星等等。而苹果与三星 的不同在于,苹果自己做软件。

是的,苹果是唯一一个既做硬件又做软件的手持设备公司。只有苹果可以在硬件中插入对软件的优化,又可以在软件中用上特制的模块。事情得从苹果一次入股以及两次收购说起。

首先是苹果入股Imagination。Imagination可能大家并不太熟悉,它是一家芯片厂商,出产低功耗显卡。如果说ARM是后PC时代的 Intel/AMD,那么Imagination则是NV/ATI。它出产的PowerVR显卡几乎配置在所有SoC芯片上,iPhone四种机型都使用 了PowerVR显卡。苹果又同时收购了两家小芯片厂商,P.A Semi以及Intrinsity,两家均以低功耗芯片著称。

在第一代iPad之上,苹果启用自家芯片,称为A4。基于ARM,集成PowerVR,看上去和当时的主流手机芯片并没有什么不同。但只要你轻轻往里面看 一看,你就会发现,什么叫做细节决定成败。前面已经说过,iPhone 4内部工业设计高度集成,电池容量相比4英寸手机也不输,其中A4芯片也是一大功臣。它基于45nm(当时代工最高技艺),使用了3D层叠技术,集成了内 存控制芯片,大大减少了占用面积,比上代相比足足少了80%。外观只是一方面,内涵更重要。A4最大的内涵是,它极其省电。待机耗电大约只有竞争对手的 30%,使用耗电更是只有25%-75%。

省电的两大秘密是,收购自P.A Semi的独立唤醒技术,以及Imagination为A4量身定制的VXD375芯片。前者很好理解,也就是不用的东西让它睡着,用着的时候再叫醒。当 然轻描淡定的一句话丝毫冲淡不了此架构的复杂度,基于”如果你不能用一句话解释它,你就根本理解得不够透彻“我也不愿再做更多说明。而后者,则是A4区别 于其它芯片最大的地方。

一般而言,显卡是用来控制渲染而CPU是用来处理运算的。但是显卡功耗太大,根本不可能一直满负荷运转,大部分情况下芯片们只是以一半甚至更低效率运行。 而苹果A4,在只有桌面或视频等2D应用时运用VXD375,而在3D游戏时动用PowerVR显卡。在去年Imagination公司的产品列表上,有 两系列视频芯片,一系列负责解码冠名VXD,另一系列负责编码冠名VXE。但是两者型号都是为0结尾,只有苹果A4的VXD是以5结尾。事实上,它也根本 不对外出售,可以说是Imagination为苹果A4量身定制的一块专攻2D芯片。它的好处,不仅省电,而且流畅。正是前面所说的,硬件可以为软件所定 制,软件可以动用硬件特制模块的好处。

在今年亮相的A5之上,相信也有类似的设计,但是我这里还没有足够资料说明这一点。当然,A5更加没有对手;如果说与A4大体设计相似的芯片还是比较多的话,与A5这样双核ARM双核PowerVR的芯片类似的,几乎绝迹。

七、杂项 用户体验

永远见仁见智,如果再提到用户界面隐喻相信又是新一轮争论。但是有两点很明显,iOS系统流畅度与触控精准度远超所有竞争对手,有视频测试为证。

摄像头:摄影是光的艺术。一味追求像素点但拍出来的照片却因为光线问题满是噪点,这是iPhone大部分对手的通病。关于iPhone所用的镜头优越性在2010 WWDC有完整论述,可以去找来看。

在他看来,苹果不只是一家科技公司,也不是一家人文公司,而是一家注重科技与人文结合的公司。他认为,人们在这样的时代讨论着速度、内存、硬盘而不去关注 人真正需要的东西,不去注重自己的产品能够带给人们什么,是完全错误的。科技与人文结合,植根于苹果的用户体验、苹果的工业设计,植根于苹果的每一根骨 头,植根于苹果追求完美的DNA。

在我的人生里面,见识过无数牛鬼蛇神妖魔鬼怪标榜自己是完美主义。但在他们的人生当中,我却从未发现他们拥有过自信但不固执的心态来不断修正着自己的价值 观,而是一次次中庸的妥协;你从未追求过,从未争取过,从未付出过,又怎么会轻而易举的得到呢?人类史上,曾经有过一次又一次又一次又一次乃至无数次完美 理念的失败,原因也许正如陈升在《拿起来放下》里面所唱的:”这个世界变成这样,没有人没有人是无辜的。“

人生是脚印,不是口水。但愿你能真正走在完美主义的道路上,或者如果不愿走,也请不要诋毁追求完美的人。

云计算时代下电子政务的机遇与挑战

Categories: 未分类  |   No Comments

云计算时代下电子政务的机遇与挑战 来源:ZDNet http://www.ccw.com.cn 2011-08-22 04:24:05
IDC日前发布的一份报告指出,未来电子政务建设将面临四方面的转变:从以项目为主转向以总体规划建设为主;利用ICT技术实现与政务工作的深度融合;信息资源采集转为全局存储分析;将应用系统与信息安全从分离转为合为一体的体系。可见,其整体趋势是更加注重“全局性”。这很容易让人联想到一个词:“云计算”。
得益于云计算对全局的把控能力及其灵活部署的特点,未来在电子政务领域政府将能以更少的软硬件投入,更针对性的服务,和更加规范通一的模式工作。正如微软全球政府及公共部门总经理马修·米斯休斯基所言,云计算可以最大限度地实现既有IT投资的价值,有助于提升政府公共服务能力和信息化水平,并将对医疗服务、教育培训水平、社区公共服务的提高和改善起到极大的推动作用。
政府部门目前对这一前景表示出了极大的兴趣。去年12月,美国政府宣布了“云优先”(CloudFirst)政策,规定所有新建的政府信息系统,必须优先考虑云平台。分析认为云计算能为美国政府带来三大优势:为庞大的政府赤字减负;提升公共服务的质量;实现规模效益。
在中国,虽然云计算发展速度要相对慢一些,但已经有不少政府部门率先开始了云计算的尝试。比如:去年10月,工信部和国家发改委联合发布了《关于做好云计算服务创新发展试点示范工程工作的通知》,确定了北京、上海、深圳、杭州、无锡等五个城市先行开展云计算服务的试点工作。今年,北京发布“祥云工程”行动计划,明确表示将通过建设中国云计算中心服务于电子政务。上海发布“云海计划”,亦表达出利用云计算提高政府信息化水平和管理效率的强烈愿望。此外,南京、成都等地的“政务云”相关工作也取得了初步进展。
微软技术中心及数据中心事业部解决方案专家黄志芳在一次演讲中指出,政府参与云计算可有三个方面的做为:其一是传统电子政务应用向云平台的迁移,实现各部门之间的共建共享,提高政府服务质量和服务能力;其二,政府牵头组织在教育、医疗等公众领域做一些云计算尝试;其三,在一些新的开发区构建云平台,并将云服务作为招商引资的重要服务能力提供给区内客户。
可以说,云计算是电子政务变革的大好机遇,借由“政务云”的部署,公众将享受到科技带来的优质服务。
同时,我们也应看到,刚刚兴起的云计算在发现道路上还存在着一些挑战,包括云服务的安全问题,标准问题,以及在云应用方面的深入探索等。具体到电子政务领域,还有其个性化的一些特点。
首先是安全性问题。这是产业界对云计算最大的担心,也是制约云计算快速推广的最大阻力。对于政府机构来说,对安全性的要求比企业更严格,而一旦发生问题其破坏力也将更大。企业方选择云服务商更多的是考虑供应商的诚信问题,而对政府机构来说,一些工作甚至牵扯到国家安全,不得不慎之又慎。
其次是云基础设施的部署和改造。鉴于云计算与传统的IT部署方式有很大区别,在对云平台的部署上有很多问题需要考虑。比如数据中心平台的建设,是在原有平台的基础上改造,还是建立全新的数据中心,各级政府云平台怎么统一规划,如何选择一条更安全、更便捷、更低成本的路线,以及平台建成后的管理、利用,都存在诸多挑战。基于政府部门是一国之最庞大“机构”,其云平台的建设必定牵涉甚广,因此对部署方案的要求也就更加复杂。
第三,企业部署云计算除了考虑服务和易用性,成本也是其考量的一重要指标。而对政府部门来说,考察云计算供应商则存在“轻成本,重服务”的特点。在安全性、易用性、稳定性、快速响应、技术支持能力等方面的要求使得政府对云服务供应商的挑选非常严格。这也就表示,只有少数综合能力过硬的供应商可在挑选范围之内。
第四,全新的云计算服务模式对政府部门的IT运维人员提出了新的挑战。云计算把IT人员从基础的工作中解脱出来,更关注与业务接近的内容。同时它对IT人员的业务理解能力也提出了更高要求。此外,云计算的特性要求IT运维人员既能从长远角度考虑IT资源的整体规划,又需要考虑如何将更多的应用迁移到云平台上,并保证它们的可用性、安全性和可扩展性。传统的电子政务IT运维很多项目都是外包出去的,而应用云计算平台之后,运维工作如何分配,政府内部的IT运维人员与云服务提供商如何协调工作,也是需要重新考虑的问题。
任何一项新技术在发展的道路上都会面临诸多挑战,我们很欣慰的看到,在云计算领域,总的来说还是优势大于劣势,而目前所存在的诸多问题,不过是前进道路上的一些小荆棘,我们相信,云计算必将给IT界带来巨大的变革,而公众将是其中最大的受益者。

亚马逊面向美政府机构推出GovCloud云计算服务

Categories: 未分类  |   No Comments

亚马逊面向美政府机构推出GovCloud云计算服务

ugmbbc发布于 2011-08-18 08:42:57|427 次阅读 字体:大 小 打印预览

亚马逊网络服务(以下简称“AWS”)周三发布了一款名为GovCloud的自定义平台,允许美国政府部门和承包商进行网上协作,并安全地存储数据。
为了拿下美国政府的订单,AWS必须要遵守多项规定,包括美国的《国际武器贸易条例》(ITAR),该条例对一些敏感数据的处理方式做出了规定。

这些规定禁止特定的政府机构将与国防相关的数据存储在非美国公民可以访问的地方。按照这一规定,GovCloud将这些数据存储在只有美国人能够实质性接触的地方。

  已经有超过100家政府机构开始使用AWS,包括美国航空航天局(NASA) 复苏法案透明化与责任委员会(Recovery Act Transparency and Accountability Board)。GovCloud用户最初将可以访问以下6项服务,随后还将逐步使用更多服务,包括EC2、简单存储服务、EBS、虚拟私有云、身份和访问管理以及CloudWatch。GovCloud似乎比其他AWS服务的价格更高,但都将按照实际使用量支付费用。

  亚马逊于2006年开始提供网络服务,该公司尚未立刻对此置评。

文/新浪科技

每个程序员都必须遵守的编程原则

Categories: 未分类  |   No Comments

每个程序员都必须遵守的编程原则

ugmbbc发布于 2011-08-18 10:58:15|1969 次阅读 字体:大 小 打印预览

感谢韩司童设计的投递
新闻来源:PHP100
好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系。下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强、缺陷更少的程序。

我不要自我重复 — 这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码。我们很多的编程结构之所以存在,就是为了帮助我们消除重复(例如,循环语句, 函数,类,等等)。一旦程序里开始有重复现象的出现(例如很长的表达式、一大堆的语句,但都是为了表达相同的概念),你就需要对代码进行一次新的提炼,抽 象。

  http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

  提炼原则 — 跟“不要自我重复原则”相关,这一原则是说“程序中任何一段具有功能性的代码在源代码文件中应该唯一的存在。”

  http://en.wikipedia.org/wiki/Abstraction_principle_(programming)

  保持简单 — 简单化(避免复杂)永远都应该是你的头等目标。简单的程序让你写起来容易,产生的bug更少,更容易维护修改。

  http://en.wikipedia.org/wiki/KISS_principle

  不要开发你目前用不到的功能 — 除非你真正需要用到它,否则不要轻易加上那些乱七八糟用不到的功能。

  http://en.wikipedia.org/wiki/YAGNI

  用最简单的方法让程序跑起来 — 在开发时有个非常好的问题你需要问问自己,“怎样才能最简单的让程序跑起来?”这能帮助我们在设计时让程序保持简单。

  http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html

  不要让我动脑子 — 这实际上是Steve Krug 关于web界面操作的一本书的书名,但也适用于编程。主旨是,程序代码应该让人们花最小的努力就能读懂和理解。如果一段程序对于阅读者来说需要花费太多的努力才能理解,那它很可能需要进一步简化。

  http://www.sensible.com/dmmt.html

  开放/封闭原则 — 程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。

  http://en.wikipedia.org/wiki/Open_Closed_Principle

  为维护者写程序 — 任何值得你编写的程序在将来都是值得你去维护的,也许由你维护,也许由他人。在将来,当你不得不维护这些程序时,你对这些代码的记忆会基本上跟一个陌生人 一样,所以,你最好还是当成一直在给别人写程序。一个有助于你记住这个原则的办法是“写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾 向,并且知道你住在哪里的精神变态者”。

  http://c2.com/cgi/wiki?CodeForTheMaintainer

  最少意外原则 — 最少意外原则通常是使用在用户界面设计上,但这个原则同样适用于编写程序。程序代码应尽可能的不要让阅读者感到意外。也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。

  http://en.wikipedia.org/wiki/Principle_of_least_astonishment

  单一职责原则 — 一个代码组件(例如类或函数)应该只执行单一的预设的任务。

  http://en.wikipedia.org/wiki/Single_responsibility_principle

  最小化耦合关系 — 一个代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。“低耦合是一个计算机系统结构合理、设计优秀的标志,把它与高聚合特征联合起来,会对可读性和可维护性等重要目标的实现具有重要的意义。”

  http://en.wikipedia.org/wiki/Coupling_(computer_programming)

  最大化内聚性 — 具有相似功能的代码应该放在同一个代码组件里。

  http://en.wikipedia.org/wiki/Cohesion_(computer_science)

  隐藏实现细节 — 隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。

  http://en.wikipedia.org/wiki/Information_Hiding

  笛米特法则(Law of Demeter) — 程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)

  http://en.wikipedia.org/wiki/Law_of_Demeter

  避免过早优化 — 只有当你的程序没有其它问题,只是比你预期的要慢时,你才能去考虑优化工作。只有当其它工作都做完后,你才能考虑优化问题,而且你只应该依据经验做法来优 化。“对于小幅度的性能改进都不该考虑,要优化就应该是97%的性能提升:过早优化是一切罪恶的根源”—Donald Knuth。

  http://en.wikipedia.org/wiki/Program_optimization

  代码复用 — 这不是非常核心的原则,但它跟其它原则一样非常有价值。代码复用能提高程序的可靠性,节省你的开发时间。

  http://en.wikipedia.org/wiki/Code_reuse

  职责分离 — 不同领域的功能应该由完全不同的代码模块来管理,尽量减少这样的模块之间的重叠。http://en.wikipedia.org/wiki/Separation_of_concerns

  拥抱变化 — 这是Kent Beck的一本书的副标题,它也是极限编程和敏捷开发方法的基本信条之一。很多的其它原则都基于此观念:面对变化,欢迎变化。事实上,一些经典的软件工程 原则,例如最小化耦合,就是为了让程序更容易面对变化。不论你是否采用了极限编程方法,这个原则对你的程序开发都有重要意义。http://www.amazon.com/gp/product/0321278658