分别为不同的平台开发,有人推荐吗?
我知道很容易推荐几个跨平台库。
但是,为产品单独处理每个平台是否有好处?
是的,在所有平台上都会使用一些基础库,但是在每个平台上,UI和其他一些东西都会有所不同。
我没有限制该产品在每个平台上都必须100%相同的条件。
Mac,Linux和Windows是目标平台。
重型win32 API,MFC已用于Windows版本。
我没有完全使用跨平台库的原因是因为我觉得最终产品在尝试针对所有平台进行通用化时会受到一些影响。
解决方案
我不能否认这是有吸引力的,但它无疑提出了一个中间立场的问题。显然,我们将共享一些后端代码,但是就设计和代码而言,我们可以共享多少,并且在UI方面可以共享什么?
我认为这是一个个案问题。通常,这可能不值得,但是某些特定平台上的某些特定应用程序应该针对该操作系统的特定内容。
是的,跨平台的UI库总是会在至少一个平台上使程序外观和/或者有点"怪异"。
如果我们在UI代码和内部代码之间有很好的分离,那么重用非UI代码并为每个平台创建优化的用户界面并不是很困难。正是这种方式制作了许多高预算的跨平台应用程序。
严重的是,如果不小心,开发和维护应用程序的3个单独副本的成本可能会非常高。
如果我们只是担心的GUI代码,则一定要将GUI部分分成每个平台的开发工作,但我们会后悔没有保持核心的"业务逻辑"类型代码通用。
并且考虑到通常将GUI与逻辑分离是一个好主意,当不可避免地出现将"少量"业务逻辑放入表示层的诱惑时,这将迫使开发人员保持这种分离。
我认为好处是
- 能够在我们所有平台上获得完全本机的行为,这对于最终用户而言是一件好事
风险在于
- 我们可能最终会编码三个应用程序,而不是编码一个具有一些差异的应用程序(即,更容易陷入不同的X模式!)
- 我们会在不同的OS版本之间造成轻微的不兼容,而不会注意到它。
- 维护成本将与我们拥有的不同代码的数量成比例地受到影响
因此,通过考虑风险,我们可以开发具有良好通用性能(抵抗风险1的诱惑),针对所有平台的大量集成测试(将风险2降至最低)的美观的本机行为应用程序,并设计减少获得本地行为所需的代码量(注意风险3)
它还取决于平台有多不同,以及一个平台上的所有功能是否在另一平台上可用。我开发的工具具有适用于Win32平台,Windows CE和移动版以及各种嵌入式平台的版本。该产品的某些方面根本与没有匹配硬件的平台无关。
例如,我目前正在[link text]一种基于现场的土地测量产品1,该产品可使用各种通信设备(例如蓝牙,RS232和无线电)与各种测量设备(例如GPS和全站仪)配合使用调制解调器,可在各种平台上使用。我当前正在使用的特定版本将被托管在带有相对较小的屏幕和键盘且内存和存储空间非常有限的测量设备上。没有一点包括与其他设备有关的功能,并且对于用户而言,使界面保持尽可能简单和精简是非常有益的。
在某些领域,简化的用户界面,小的可执行文件以及对膨胀软件的零容忍度仍然至关重要。可以肯定有很多通用源,但是也有很多针对特定目标的源和条件编译。
对于客户端程序(即非Web服务器程序),很难找到优秀的Mac和Linux开发人员,而且很难找到优秀的Windows开发人员。
我们拥有的与平台无关的代码越多,在这三个平台上完成项目的难度和速度都将越高。
维护三个代码库既昂贵又冒险。使用跨平台工具的竞争对手每次都会将我们打入市场。