我有一个我认为是杀手级别的应用程序创意。根据定义,这将是一个桌面应用程序,并且它与一些相当低级别的服务相关联,这些服务由我编写的平台提供(Windows搜索服务、Mac OS X Spotlight服务器)。
我的目的是制作Mac OS X和Windows版本。绝对的目的实际上是不共享代码——主要是因为很少(如果有的话)能够共用。因此,我打算使用完全不同的框架(Mac上的Cocoa/Obj-C,Windows上的C#/WPF/PInvoke),并使两者在其平台上感觉“本地化”,如果您愿意,就是一流的应用程序公民。
我的问题是:是更好尝试同时构建它们,即通过开发周期尝试保持它们的特性平衡;还是先搞定一个,然后再跟进另一个?
保持平等的优点似乎是:
- 更容易保持算法的一致性,因为我在一种语言中实现,只需要将其移植到另一种语言中
- 更容易确保在发布时,两个应用程序立即可用
保持平等的缺点似乎是:
- 较难做到;不断的语言切换可能会让我头昏眼花(每当我工作4天的C#,然后突然不得不维护我们的旧VB.NET解决方案时,我已经经历了这种情况)
先一个,再另一个的优点似乎是:
- 没有不断的语言切换
- 一个平台可以处于测试状态,而另一个正在被构建中
先一个,再另一个的缺点似乎是:
- 回到那时将成为“旧”的代码来移植算法
- 可能会失去对“重新做”我已经完成的内容的兴趣
诚然,这非常有野心...而且只有我一个人,在“空闲”时间(哈)。如果您身处同样的境地,并熟悉两个技术套件,您会如何处理这个问题?
更新
回答下面的一些问题:
是的,一个通用的API是可行的,但是调用约定可能不会很容易。我打算定义相同的类,但使用特定于平台的代码。(这似乎非常关键,因为Windows搜索服务和Spotlight工作方式有很大不同。)
我可以选择像Java这样的东西,但出于几个原因,我选择不这样做:(1)我已经很久没有使用Java了,现在已经危险地没有资格了 :)(2)其中一部分是通过使用我熟悉的技术,学习Objective-C的练习;以及 (3)虽然Swing可以在OS X上提供大部分本机外观,但其Windows UI从来没有感觉完全正确,而我真正希望两个应用程序感觉像属于它们各自的系统。
市场时间不是一个很重要的考虑因素;我认为应用本身的想法将是相当安全的。比TTM更重要的是让应用程序感觉正确并提供功能...