领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Jonathan Allen 译者 朱永光 发布于 2007年12月1日
内在DSL(Internal DSL)和API的区别是什么?Martin Fowler在2004年2月这样描述内在DSL ,
Lisp和Smalltalk社区有使用DSL的深厚传统,但现在他们也倾向于走其他路线。他们现在不主张定义新语言,而是把通用语言变形成DSL。(Paul Graham在《Programming Bottom-Up》中也描述了这种方法。)内在DSL(也被称为嵌入DSL)使用编程语言本身就具备的概念作为材料来定义出DSL。这是一种在任何语言都可行的常用方式,我一直在考虑把定义函数当作是在为手中的问题提供一种DSL,以这样的心态来定义函数。而Lisp爱好者们和Smalltalk爱好者们在这方面走得更远。描述这种API书写风格的另一个术语是连贯接口。
2年半后,他说道,
对于内在DSL来说,API和DSL之间的界线很模糊。本质来说,它们没有区别,内部DSL只不过是给API换了个漂亮的名字(正如Bell实验室有句老话说道的:“函数库设计就是语言设计”)。尽管这样,我觉得当你使用一个书写成DSL风格的API时,还是有点不同的感觉的。类似连贯接口这样的东西能让API有着完全不同的使用体验。换到DSL的语境中去思考,会让你思考不同方式编写出的代码的可读性,发掘宿主语言的语法去创造一些自己特别的东西出来——rake是一个很好的这样的例子。
那么内在DSL到底看起来像什么?大抵的答案可以用一个连贯编程的例子来说明。在连贯编程中,所有的方法都返回同一个对象或一个新对象。这让方法调用能串在一起。
下面这个例子是我们从Neal Ford的QCon演讲《在静态语言和动态语言中构建DSL 》中节录的。
def c = 2.days.fromToday.at(4.pm)
直到最近,要对整数这样的类进行特殊处理都需要类似Ruby或Python这样的动态语言来支持,尤其因为它们提供了一种称为“开放类”的东西。开放类允许在运行的时候添加新方法到类上。
那么这些跟使用C#或VB的.NET的开发人员有什么关系呢?这么说吧,C# 3和VB 9都支持了名为扩展方法的东西。扩展方法允许用户静态地添加方法到已经存在的类中。你可以为一个整数创建一个“日子”方法来返回一个TimeSpan对象。
请注意C# 2.0和C# 3.0写法上的区别。
//C# 2.0
date d = Helper.At(Helper.FromToday(Helper.Days(2)), Helper.Pm(4));
//C# 3.0
date d = 2.Days().FromToday().At(4.Pm);
请注意,这两行代码实际上都编译成了相同的中间代码。所有繁重的活计都被编译器和Extension属性做完了。
最后是使用扩展方法的一个技巧。虽然官方只支持.NET 3.5,但Jared Parsons发现了一种在.NET 2.0中使用扩展方法 的办法。基本原理就是创建一个“ExtensionAttribute”类的仿造品,让新编译器以为是真正的。
查看英文原文:Extension Methods, DSLs, and Fluent Interface译者 朱永光 是IT自由人和环境保护者,微软最有价值专家(MVP)和MCSD。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复