??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品二三区,亚洲欧洲日韩精品在线,国产91久久婷婷一区二区http://www.aygfsteel.com/felixtsu/zh-cnWed, 18 Jun 2025 07:21:25 GMTWed, 18 Jun 2025 07:21:25 GMT60- OOD闲聊http://www.aygfsteel.com/felixtsu/archive/2011/12/09/366003.htmlFelix.TSUFelix.TSUFri, 09 Dec 2011 15:23:00 GMThttp://www.aygfsteel.com/felixtsu/archive/2011/12/09/366003.htmlhttp://www.aygfsteel.com/felixtsu/comments/366003.htmlhttp://www.aygfsteel.com/felixtsu/archive/2011/12/09/366003.html#Feedback0http://www.aygfsteel.com/felixtsu/comments/commentRss/366003.htmlhttp://www.aygfsteel.com/felixtsu/services/trackbacks/366003.html
在OODq个domain里面Q类比数学公理,我认为Robert.C.Martin?a title="Robert.C.Martin的OOD Principles">OOD Principles已经说的非常清楚Q当中最为核心的一条,是SRP。所有其他的~程原则如同在五大Principles中的OCP、DIP更多的是ZSRP的一些推论,更不必说DRY原则{等一pd五花八门Q变化多端的buzz word。我认ؓ所有的E序设计工作Q其实最l的目标都是Z辑ֈ隔离xQ将特定的需求交l专门的lgd成。这里的lg在不同的上下文中含义不同Q小臛_单个pȝ模块内部Q组件指的可能就是完成特定功能的Class/FunctionQ大至SOA(另外一个buzz word)中,lg指的可能是某个业务域服务系l。当明确了SRP是终极目标之后,OCP说的Q只不过?#8220;部分特定条g下的情况已经被本lg解决完毕q,如需要处理其他特D逻辑Q请通过扩展的方式在特定的地方完?#8221;QDIP则说“本实现所依赖的组件的具体实现选择q程应该׃门的选择{略lg完成Q本cȝ主要x是利用这些依赖完成本cL标称需要解决的问题”Q至于那个DRY原则Q则更显易懂了Q本来就已经有特定的lg把特定的x解决掉了Q还有必要重新解决一ơ么Q?br />
那么所谓的装、多态、承,甚至是GoF的各U模式,到底是什么呢Q同LQ类比数学中的概念,它们是一些基于数学公理的推论Q虽然我们可以通过公理一步一步的所有的定理推论都推理出来,但极数Z在实际运用计的时候这么做Q因为太慢了。同LQ这些类似Best practice的东西的价g仅仅在于Q解x一特定前提下的某一特定问题Q这P你就明白Z么我深恶痛绝模式驱动~程Q模式是Z解决特定问题而生的Q但q帮人的做法是ؓ了运用某U模式,而去创造该模式所W合的问题,q让我想起那个关于数学家?a >W话。然而我l历的团队中Q这L情况屡屡发生Q成?a >q度工程的头号原因?br />
之前l常有h问,如何ȝ设计能力Q我׃他们看一下那几个principlesQ每天读Q读通读透,让它们成Z的条件反。在做设计和review设计的时候,不停的问自己Q我一共有多少个问题?正在考虑的这个组件要解决什么问题?在它所处的_度来看Q它是否只有单一职责Q等到每个问题的{案都是Yes的时候,我认个设计至不差。我之前看到q很多这L设计Q大多数情况下,它们不会有一些fancy的设计模式名U在里头Q但却渗透着一股nl百战的老练Q比?a >JQuery的core?br />
同样的,有一U显而易见的bad smellQ当你的代码库中充斥着大量的设计模式名Uͼ而实C码却看v来极其幼E(我认得读过Implementation Patterns或?a >Clean codeQ,那么癑ֈ癄Q你的团队中p有着一个急于惌明自己却又适得其反的成员,该是时候找他谈谈他的定位和成长计划了?img src ="http://www.aygfsteel.com/felixtsu/aggbug/366003.html" width = "1" height = "1" />
]]> - q早的细分扼杀了你的可?/title>http://www.aygfsteel.com/felixtsu/archive/2011/12/07/365738.htmlFelix.TSUFelix.TSUWed, 07 Dec 2011 03:57:00 GMThttp://www.aygfsteel.com/felixtsu/archive/2011/12/07/365738.htmlhttp://www.aygfsteel.com/felixtsu/comments/365738.htmlhttp://www.aygfsteel.com/felixtsu/archive/2011/12/07/365738.html#Feedback0http://www.aygfsteel.com/felixtsu/comments/commentRss/365738.htmlhttp://www.aygfsteel.com/felixtsu/services/trackbacks/365738.html
当然毕业生里面也有厉害的Q比如topcoder component development里面大量在校生,但如果仅仅是q希望而去开展校园招聘,那么必然是浪Ҏ间精力的事情。实际上Q如何用好应届生Q是一个教育问题,而不是管理问题?br />
作ؓ一个应届生的第一个目标,首先是成长Z个合格的coder?br />所谓合格的coderQ是要能清醒的知道,自己写下的每一行代码,到底会产生什么样的作用。这个方法的语义是什么?他的用户是谁Q参数是从何而来的?中间l历了那些处理?可能会有多少个输入的来源Q这些不同的来源之间是否有业务上的差异?如果有,我该如何处理Q方法的q回值将会被如何使用Q我的经验是Q只有把q些问题都问完了Q有l论了,才会有安全感?br />可是Q能够问L问题Q就要求他心中必L一个全局的视图。这正是大部分hget lost的地方:q早的关注细?/strong>。早早的Q这些h因样那L原因Q选定了某个细分小工种Q然后对工种以外的知识技能弃之不。于是我们见q太多这L人,wؓ一个标U的J2EEE序员,毫不愧的承认自׃知道如何获取Select控g的倹{数据库中表和烦引是如何存储的。或者你可以说这是因为我一直在公司工作,资源紧缺Q职责划分不清造成的。那么,退一万步_一个合格的coderQ至要知道目前工作的项目是如何集成、部|Ӏ运行的。之前我的团队中QL只有数几个成功的完成集成部|Ԍ而这些h恰恰又正是能在系l分析、设计阶D|己想法的人。对于至今不懂的如何集成部v的hQ我想问Q一堆不能运行的代码Q到底能Z的用户递交什么h|
除了有全局观,W二个要素就是追求。是的,如果没有q求与那份狂热,你是永远无法成ؓJamie Zawinskiq样的hQ他在Netscape时写?a >日记Q。有了这份狂热,_求精Q或者精益说?a >Continuous Improvement已l成Z你的本能Q在做何事情的时候,你都在思考,什么东襉K过哪种方式Q可以变得更好。于是,在不知不觉中Q每分钟你都在做各种refactor or even re-design的方案,思考权衡各U利弊,慢慢的你和那U工作八时内闲着无聊上上|的普通程序员拉开距离了?br />
各位q大的应届生Q你们最大的优势在于Q充满着无限可能。越早的开始你?a >一万小?/a>Q就早到达l点?img src ="http://www.aygfsteel.com/felixtsu/aggbug/365738.html" width = "1" height = "1" />
]]>
վ֩ģ壺
Դ|
|
|
ɽ|
찲|
ָ|
ɽʡ|
Ƥ|
ˮ|
|
|
|
|
|
|
ˮ|
˻|
|
|
|
̨|
|
|
Ϊ|
|
|
|
ﴨ|
|
ƽ|
ɽ|
ˮ|
|
ʲ|
ͨ|
ʯ̨|
|
|
ƽ|
|
۷|