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

与 Daniel Godson 的程序员访谈

starIconstarIconstarIconstarIconstarIcon

5.00/5 (10投票s)

2013 年 5 月 22 日

CPOL

7分钟阅读

viewsIcon

33747

欢迎来到我们持续进行的 Code Project 开发者访谈系列,在这里我们与开发者们探讨他们的背景、项目、兴趣以及令人头疼的问题。在本期中,我们采访了 Daniel Godson(又名 .dan.g.,又名 AbstractSpoon),他可能是 CodeProject 上最受欢迎的文章《ToDoList》的作者。

欢迎来到我们持续进行的 Code Project 开发者访谈系列,在这里我们与开发者们探讨他们的背景、项目、兴趣以及令人头疼的问题。在本期中,我们采访了 Daniel Godson(又名 .dan.g.,又名 AbstractSpoon),他可能是 CodeProject 上最受欢迎的文章《ToDoList》的作者。

你是谁?

我叫 Daniel Godson(又名 .dan.g.,又名 AbstractSpoon)。我居住和工作在澳大利亚悉尼,于 1997 年从英国移民而来。我过去 8-9 年的雇主是 Maptek Pty Ltd,这是一家领先的全球软件公司,为全球采矿业开发 3D 可视化和规划软件。

在我离开英国之前,我是一名合格的结构工程师,在伦敦生活和工作。

您做什么?

我喜欢编写能简化我生活的工具。我几乎所有已经发布和参与过的项目,最初都是我为自己编写的工具,后来才看到了它们对他人可能存在的价值。

当我第一次自学 C++ 时,我编写了一系列 Windows 共享软件来填补我眼中存在的空白。其中两个是:

WorldTime,提供对世界上 200 多个国家/地区本地时间的访问;TimeOn,它跟踪在拨号上网连接上花费的时间/金钱;DeskMenu,它提供从任务栏通知区域访问桌面内容的菜单。

我每天都使用 DeskMenu,但不幸的是,WorldTime 和 TimeOn 由于现代互联网的普及已经过时,我不再使用它们了。

在我搬到悉尼后的第一份真正意义上的开发工作,我编写了:

VSSReporter,为 VSS 提供更高级的报告功能;ProjectZip,它接受一个 VC6 工作区(dsw)并将所有关联文件压缩成一个单一的 zip 文件;MiniSpy,一个精简版的 Spy++,用于显示鼠标指针下方任何窗口的属性。

我仍然每周使用 MiniSpy 和 ProjectZip。

最后是 ToDoList,我花了 10 年时间一直在稳步开发它,并且看不到停止的迹象。对于喜欢衡量指标的人来说,它包含 300,000 多行代码。

除了偶尔要应对一些具有挑战性的用户之外,这 10 年来一直是我乐在其中的源泉。我曾多次因为早期设定的设计限制而不得不调整架构,我真心认为 10 年后,它已经成为一个写得更好、更容易理解(并不是说它就 _容易_ 理解)的软件。

我一直有意识地使用其暴露的扩展点来开发我自己的扩展,以期构建一个耦合度更低、更容易调试的架构。

您的开发环境是什么?

工作方面

我在 Windows 7 上开发,运行一台 4 核超线程、3.5 GHz 的机器,配备 32 GB 内存和 750 GB 存储空间,以及双 24 英寸屏幕,分辨率均为 1920x1080。

我们主要使用 VS2010 进行 C/C++ 开发,偶尔会回退到 VS2005 来处理我们软件的旧版本。软件的某些部分使用 Perl,但我会尽力避免接触那些部分!

在家方面

与此形成鲜明对比的是,我主要在 Windows XP 上开发(也三重启动了 Vista 和 Windows 8),运行一台单核 2.3 GHz 的机器,配备 2 GB 内存和 300 GB 存储空间,一个 19 英寸的屏幕(1600x900 分辨率)和一个 17 英寸的屏幕(1280x1024 分辨率)。

我主要使用 C/C++ 在 VC6 中进行开发,并大量依赖 MFC 和 Win32。为了兼容性,我尽量确保我的代码也能在 VS2008 上编译。

我有一个文件夹,里面包含了 60 多个我多年来积累的 Windows 开发工具。

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

说实话,对于新事物,我有点固执己见。我知道我喜欢什么,我也喜欢我已知的。话虽如此,我确实明白不落伍对我的就业能力是有利的。

所以,我近期的目标是学习如何将 C# 与 C/C++ 进行接口。我知道 Nish 写了许多关于 C++/CLI 的文章,它是在 C++ 和 C# 之间的粘合剂,但我一直对如何处理我特定需求的某些更棘手的封送处理感到困惑,那就是为 C++ 应用程序编写 C# 插件。

幸运的是,我有一位非常聪明的同事同意在这方面帮助我,有趣的是,他是我同事中唯一一个在办公室以外也以爱好身份编写软件的人。

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

  • 我喜欢空白,无论是垂直的还是水平的。
  • 我总是将大括号放在单独一行,以简化代码块的扫描。
  • 我在家使用标准的 Microsoft 命名约定,在工作中使用驼峰式命名法。
  • 我试图将不相关的条件编写成单独的条件语句,以避免混淆。
  • 我试图始终使用有意义的变量名,无论是类成员还是局部变量。
  • 我试图避免深度缩进的逻辑,而是倾向于使用多个函数退出点。
  • 最后,为了试图引发一场争论,我更喜欢有意义的返回码而不是异常处理。

您是如何开始编程的?

我第一次接触计算机是在 1983 年的大学,当时使用的是大型机上的 Fortran。这是一次非常痛苦的经历,因为编写、编译和编码的过程非常不连贯:我直到第二天才能知道自己犯了编码错误,那时我才能拿到下一个时间段。

然而,与此同时,我在大学也接触了 BBC Micro 上的 Basic,并几乎立刻就爱上了它。该语言的简洁性,以及解释型语言开发过程中美妙的迭代性质,带来了极大的乐趣。很快,我就说服我的父母为我购买了自己的 BBC Micro,然后就开始了深夜编程。

我一直使用 Basic,后来在 Archimedes 上,然后在 IBM PC 上,直到 Windows 95 发布时,我意识到如果我想在编程领域拥有一份职业,我就必须学会 Windows 编程。然后我自学了 C/C++ 编程,剩下的就成了历史。

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

我从整个开发者社区,特别是 CP,那里得到了很多帮助。尽管我每天在新闻中看到的东西,但我知道大多数人都是善良、勤奋和慷慨的,因为这正是我每天在我访问的许多网站上看到的样子。

我遇到的唯一缺点是沟通中偶尔出现的生硬和/或防备的态度,当某人的想法受到质疑时。我知道这一点,因为我曾经就是那样的人。但令人惊奇的是,10 年来不断发布带有 bug 的软件,会如何逐渐磨去人的自负!

您认为自己在 10 年后会是什么样子?

在工作方面,我希望我还能继续编程(那时我 58 岁),因为我热爱编程,并且最擅长此道。我很幸运有一个优秀的雇主和出色的同事,如果我能保持我能力范围内的最佳表现,我认为自己不会想改变。

在家方面,我希望 ToDoList 仍然会积极地开发,主要以扩展的形式。

如果你给一个崭露头角的程序员一条建议?

哇,从何说起!

  • 始终尝试写出最好的代码。
  • 尝试不断重新评估你的代码,寻找改进的方法,特别是通过将其重构为更可重用和可测试的代码块。
  • 尽量避免复制粘贴:长期后果是极其糟糕的!
  • 尽量编写解耦的代码。
  • 您希望我们采访谁?
  • 在过去 10 年我开发 ToDoList 的过程中,许多人出现过,然后在它的论坛上停留。这些人花费了无数的时间测试 alpha 和 beta 版本,编写测试用例,提出改进建议,没有他们,ToDoList 就永远无法发展成我们现在看到的成熟且(相对)无 bug 的软件。
© . All rights reserved.