作家
登录

千万不要和一种编程语言厮守终生

作者: 来源: 2018-03-12 15:02:26 阅读 我要评论


我们法度榜样员在着手一个项目时,须要做的症终决定之一就是选择一种说话,或一组说话,用于实施该体系。这一决定不仅会影响体系的实现,也会影响设计。例如,我们应当应用面向对象的说话照样过程说话?选择什么竽暌癸言对项目以及作为项目一部分的法度榜样的生命周期有着深远的影响,很多次,我们基于一些异常善变的身分,没有思虑太多就去选说话:这说话是我惯常用来实现这类体系的;这说话我懂得得最透辟;这是我最爱好的说话,我很享受于用这种说话编程;等等。

既然这个决定会导致深刻而长远的结不雅,那么我们是不是在做这个决定时应当加倍务实?很多时刻,我们会盲目地偏颇于我们选择的说话。并且,有时刻我们之所以不爱好选择这种说话的原因可能恰是为什愦我们要选择那种说话的原因。

如不雅我们可以或许摊开襟怀胸襟,坦诚地对待本身持有的成见,那么我们就可以减橇一皓类似在装修时硬要将方钉钉进圆形孔的苦楚。固然我们没有什么桥绫桥来为项目选择完美说话,但照样可以遵守一些原则,赞助我们做出一个更好,更合适的说话选择。

没有完美的说话

这可能看上去都很好都很棒,是以我们很难确切指出在某个背景下,某种你看不顺眼的说话可能反而更有赞助。那么,我们该怎么知道哪些你不爱好的说话是有赞助的呢?这就引出了我们的第二条原则:

这一点对任何人,甚至是新手而言,都是在料想之中的,并且我们很多人都愿意承认,“当然,这种说话并不是完美的说话,”但与此同时,我们很多人照样会说,“这说话是最好的编程说话”。说一种说话是项目标最好说话的关键是项目标背景,也就是说,最好的说话只存在于必定典范围内。这就是我们的第一条原则:

没有完美的说话:每一种说话都有它的长处和缺点。

例如,很多平日应用运行时说话,如Java或Python的开辟人员,声称C或C ++令人透不过气来,会因为存眷例如内存治理这类低层次的细节,或关怀编译时类型检查的严格粒度,而扼杀分置于开辟人员的职责。这是事实,只要我们正在开辟的项目不存眷看似琐碎的义务,如内存治理或产生在单一轮回中的copy-assignment的数量。

相反,如不雅我们工作在一个项目,或项目标一部分,那么对于代码应当若何高效以及法度榜样的关键性安然的成见需求是天然而然的,这些看似繁琐的细节可能恰是我们正在寻找的粒度程度。在这种新的背景下,Java或Python的运行时性质似乎过于漠不关怀或过于心不在焉。相反,我们欲望当内存分派和释放的时刻,可以或许严格控制有若干move-assignment和copy-assignment被履行,并在编译时捕获尽可能多的缺点,而不是让缺点渗入运行时(表示为运行时异常)。

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!

固然在理论上“没有完美的说话”这一点听起来是显而易见的,然则我们作为开辟人员的行动平日会背离这个概念:我们说我们知道我们最爱好的说话是不完美的,但我们照样持续对我们开辟的项目应用这种说话,不管它是否合适。此外,当其他的开辟人员质疑我们选择的说话时,我们会果断保卫我们的选择,而不肯意大年夜他或她的辩驳中看见事实的┞锋相。请记住:每一种说话都有它的长处和缺点。懂得你控制的说话的长处和缺点,然后根据实际情况做出选择。

你不爱好一种说话的原因可能就是你应当应用它的原因

这似乎违背直觉,但有的时刻,我们之所以不爱好一门说话可能恰是应用某种说话的原因。照样膳绫擎的例子,在我作为一个C ++开辟人员的经验中,很多时刻因为有那么多不合的概念要跟踪(内存治理和对象寿命时光,C ++编程三原则等),乃至于完成项目标一个简单功能都邑变得繁琐不堪。在用C ++开辟几周之后,应用Python,Java或另一种“更高等”的说话,的确就像上天的恩赐:但真的是如许的吗?

有时刻,可能我们不爱好一门说话的原因恰是我们要应用该说话的原因。如不雅我正在开辟一个驱动法度榜样或一些关键性安然,及时的体系,膳绫擎表述的繁琐不堪的原因可能恰是这个说话的最大年夜优势。例如,C ++供给了一种机制用于表达当对象被复制时被履行的逻辑,这在效力和严谨性井井有条的时刻是异常宝贵的。

例如,在膳绫擎那个C ++的例子中,我之所以不爱好长时光地用C ++编程,是因为这说话请求思惟严谨,不然很轻易犯错,就像是被困于丛林中(过多地存眷树木,而不是树林这个整体)。这种严谨会妨碍开辟人员去质疑,如,“我要在客栈上或堆上创建对象吗,或者部分在客栈上,另一部分在堆上?”或“要让这个类可扩大,应当经由过程模板参数照样经由过程持续?”等决定。在其他说话中,开辟人员只需分别创建一个对象以及应用面向对象的持续就可以完成这些义务,然落后入到下一?功能,因为说话(或者,更精确地说,编译器或说冥器)存眷这些细节。

然则,如不雅我对本身诚实的话,我会承认,我之所以不爱好C ++的┞封些功能,是因为它将表达这些细节的义务归咎于我。在其他说话中,我不仅不须要负责这些细节,并且我也没有义务表达这些细节:它们被抽象远分开辟人员。在一个这些细节是必弗成少的高低文中,我不爱好C ++的原因恰是我应当应用这种说话的原因。

这是否意味着,我们应当愁眉锁眼地应用这些会让我们对这说话末路怒的功能?也没有须要。或许你可以换个角度:不要将这些功能算作缺点,也许我们应当拥抱它们,将它们算作完成义务的必须品。我们不该该说“这真是一个悲剧,”而应当说,“谢天谢地,我居然能用这种说话做到这一点。”请记住:在某些背景下,这些功能将是上天的恩赐,而在其他情况下,它们 才是包袱。至于为什么不爱好某一门说话的功能,请诚实地告诉本身。

对本身要诚实:知道本身为什么不爱好一门说话,不要教条化本身的憎恶。

越熟悉其他说话,越好


  推荐阅读

  新零售逆袭,大数据应用是制胜法宝

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!线下零售大年夜数据应用刚起步扶植强大年夜的数据中台,实现线上线下数字化打通,重构“人、货场”,是新零售的重要内涵。>>>详细阅读


本文标题:千万不要和一种编程语言厮守终生

地址:http://www.17bianji.com/lsqh/40612.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)