65.9K
CodeProject 正在变化。 阅读更多。
Home

与 Daniel Vaughan 的程序员访谈

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (31投票s)

2011 年 9 月 28 日

CPOL

7分钟阅读

viewsIcon

65871

欢迎来到我们的Code Project系列访谈,我们将与开发者们交流他们的背景、项目、兴趣和一些小烦恼。本期我们找到了Code Project的成员Daniel Vaughan。

欢迎来到我们的Code Project系列访谈,我们将与开发者们交流他们的背景、项目、兴趣和一些小烦恼。本期我们访谈的是Daniel Vaughan,他是Code Project上多产的作者,其文章屡获殊荣。Daniel也是一位旅行家,而且,事实证明,他在Code Project上建立了一个改变人生的联系。请继续阅读,了解更多。

你是谁?

我叫Daniel Vaughan,是一名居住在瑞士日内瓦澳大利亚人,日内瓦属于该国的法语区。我为瑞士、美国和其他地方的客户提供咨询服务。

我是即将出版的《Windows Phone 7.5 Unleashed》一书的作者,该书将于2011年圣诞节前后上市。

您做什么?

最近我一直在为金融领域中的多维数据库开发一个工具。该工具允许用户准备多维查询;使用拖放设计器检索和存储子立方体,并使用自定义的WF流程设计器协调活动。

我还与另一位客户合作,为机场、警察局、消防队、救护中心和工业企业创建了一个指挥控制系统。特别是该软件的平板电脑和Windows Phone实现。

我大量参与了一个名为Calcium的开源项目。过去一年,我一直在大力扩展该框架,使其支持Windows Phone平台,我计划在书发布的同时发布它。

我还在LinkedIn上管理着一个名为Windows Phone Experts的群组(拥有超过一千名成员)。

当然,过去一年多我大部分时间都花在了撰写《Windows Phone 7.5 Unleashed》上。

今年,我和Katka正在创办一家新公司。我希望到第十年能把它卖掉,或者让它大部分实现自给自足,并希望能在海滩上度过更多时间。

您的开发环境是什么?

我的开发环境主要包括Visual Studio 2010ReSharper.NET Reflector。这没什么好奇怪的。

我的主要编程语言是C#。我大量使用自己的Calcium框架,该框架利用了Prism。对于Windows Phone开发,我使用即将发布的Calcium SDK的“轻量”版本,它不依赖于Prism。

我主要用笔记本电脑工作,尽管我目前这台相当强大。它是一台Dell M6600,配备16GB内存、固态主硬盘、750GB混合辅助硬盘和2.2 GHz的Intel i7处理器。拥有一台笔记本电脑对我所做的工作至关重要,它还让我可以跳上飞机,在马略卡岛布拉格或任何地方工作。

您对哪些新工具、语言或框架感兴趣?

对于使用微软技术的开发者来说,这是一个激动人心的时代。Windows 8带来了很多新东西。我目前正在探索WinRT。我期待着将Roslyn(编译器即服务)项目与WinRT结合起来,做一些有趣的事情。

您最讨厌的编码习惯是什么?

滥用C#中的“as”关键字是我的一大烦恼。经常看到代码中用“as”代替显式类型转换,如下所示:

string foo = (bah as Person).Name;

如果bah为null,则会抛出NullReferenceException。然而,如果bah不是Person,也会抛出NullReferenceException;这很糟糕,因为你无法判断是哪种情况。下面是更好的代码:

string foo = ((Person)bah).Name;

错误的起因不再被隐藏,而是抛出InvalidCastException。

我不喜欢看到这种单行if语句:

if (condition) return;

它使代码难以阅读,因为你的眼睛必须扫描到行尾才能确定代码的逻辑流程。这与设计良好表单的原理相同,其中标题应放在输入控件上方,而不是旁边。我记得读过一项研究,该研究追踪了受访者的眼球运动(这里是对此主题的另一种看法),人们在标题放在左侧响应字段旁边的表单中填写时间更长。就是这样。

我不喜欢将下划线作为前缀,例如“_someField”。我在2003年曾使用过几个月,但很快就改回来了。我发现它们很分散注意力,并且降低了代码的可读性。我还想挑战你,在我的英式布局的瑞士法语/德语键盘上找到下划线字符。

您是如何开始编程的?

在我大约9岁的时候,我还是个孩子,就被我们教室的Apple IIe迷住了。那是一台方方正正却又 somehow 美丽的机器,我们每天可以花几分钟时间用它来创建和打印线条图。我画了一把武士刀,因为武士很酷。

我还经常在我朋友家玩,他爸爸开了一家销售MicroBee电脑的公司。后来我成功说服我妈妈给我买了一台Commodore 64,为此我朋友一直没原谅我。

我能怎么办呢?它有64 kB内存,是MicroBee的两倍。

和许多人一样,我并不是一开始就成为一名开发者。或许我曾经是,但在我的职业生涯中肯定不是。我最初想开飞机,但在十几岁时的一次事故中摔断了脖子。虽然我当时年轻,恢复得也很快,但由于脖子活动受限,我无法通过航空课程的体检,因此无法参加航空课程。现在我很好,你几乎看不出来我的脑袋是接起来的。

事故发生后,我开始旅行,并在捷克共和国遇到了我未来的妻子,也是CodeProject的作者Katka Vaughan

后来我回到澳大利亚,在澳大利亚国立大学学习生物学,中途辍学,然后最终回到大学学习计算机科学,这更适合我。

我早期的软件开发生涯始于90年代后期,涉及创建Macromedia Flash/Director用户界面和ASP网站,期间我还在攻读学位。

大约2001年,我在澳大利亚国家图书馆找到了一份兼职Java程序员的工作。我记得做过一些与Struts相关的工作,并创建了一个由XMLANT驱动的Java应用程序生成器。我满脑子都是XSLT

完成学业后,我离开了图书馆,开始自由职业,并用.NET开发了我的第一个商业产品。那是非常早期的阶段。最终,我发现自己为各种政府部门做承包商。

2007年,我凭借一篇关于使用Silverlight进行网格计算的文章赢得了CodeProject Visual Studio 2008竞赛。这成为我职业生涯的一个转折点,丰厚的奖金使我和Katka得以前往斐济结婚。那是一场CodeProject式的婚礼。

在那些早期文章之后,我收到了来自世界各地的许多工作机会。最终,我接受了一个,这让我和Katka来到了瑞士。

开发者社区是如何影响您的编码的?

.NET在线社区的高度友爱仍然令我惊叹。我可能错了,但这似乎在开发者社区中更为普遍,而非许多其他行业。我也非常感谢在我的开源项目中给予我的帮助和鼓励。

您会对一个新兴的程序员提供什么建议?

我有两点建议,尽管听起来有些自命不凡,但这确实是我能给出的最好建议:

首先,阅读你感兴趣的、备受推崇的开源项目的代码。如果你不阅读代码,你将不会擅长编写代码。识别并熟悉项目中使用的软件设计模式。

其次,撰写文章。我看到很多开发者都在思考如何提升自己的职业生涯。撰写文章来提升你的职业生涯是世界上保守得最好的秘密!它也有助于在这里CodeProject发表文章。;)

© . All rights reserved.