I would say that the benefits of individual development for each platform are:
- native look and feel
- platform knowledge acquired by your developers
-... i'm out of ideas
Seriously, the cost of developing and maintaining 3 separate copies of your application could be huge if you're not careful.
If it's just the GUI code you're worried about then by all means separate out the GUI portion into a per-platform development effort, but you'll regret not keeping the core "business logic" type code common.
And given that keeping your GUI from your logic separate is generally considered a good idea, this would force your developers to maintain that separation when the temptation to put 'just a little bit' of business logic into the presentation layer inevitably arises.
Yes, cross-platform UI libraries are always going to make your program look and/or act a little "weird" on at least one platform.
If you have good separation between the UI code and the internals, it isn't very hard to re-use the non-UI code, and create an optimized user interface for each platform. A lot of high-budget cross-platform applications are made just this way.
being able to get a totally native behavior in all your platforms which is a good thing for end users
The risks being that
You may end up coding three apps instead of one with a few differences (ie, it's easier to fall in the let's do X differently as well!)
You'll create slight incompatibilities between the different OS versions without noticing it.
The maintenance cost will suffer proportionally to the amount of different code you have
So, by taking the risks in consideration, you can develop nice native behaving apps, with the largest common core possible (resisting the temptation of risk 1), a great set of integrated tests for all the platforms (minimizing risk 2) and designing to reduce the amount of code needed to get the native behavior (taking care of risk 3)
It also depends just how different your platforms are, and whether all the functionality on one platform is available on another. I develop tools that have versions available for Win32 platforms, Windows CE and mobile, and various embedded platforms. Some aspects of the product simply aren't pertinent to platforms that don't have the matching hardware. For example, I'm currently working on [link text]a field based land survey product1 that works with a variety of measurement devices, such as GPS and Total stations, using a variety of communications media, such as bluetooth, RS232, and radio modems, on a wide range of platforms. The specific version I'm currently working on will be hosted onboard on a measurement device with a relatively small screen and keyboard, and very limited memory and storage. There is no point including the functionality relating to other devices, and it is highly beneficial to the user to keep the interface as simple and streamlined as possible.
Streamlined user interfaces, small executables, and a zero tolerence to bloatware are still of paramount importance in some domains. Plenty of common source for sure, but also plenty of target specific source and conditional compilation.
对于客户端程序(即不是 Web 服务器程序)来说,很难找到优秀的 Mac 和 Linux 开发人员,而找到优秀的 Windows 开发人员则不容易。
您拥有的独立于平台的代码越多,在所有三个平台上完成您的项目就越容易、越快。
维护三个代码库将是昂贵且有风险的。 使用跨平台工具的竞争对手每次都会在市场上击败您。
For client programs (i.e. not web server programs) it's pretty hard to find to find good Mac and Linux developers, and not really easy to find good Windows developers.
The more platform independent code you have, the easier and faster it will be to complete to your project on all three platforms.
It's going to be expensive and risky to maintain three codebases. Your competitor who uses cross platform tools is going to beat you to the market every time.
I can't deny that this is attractive, but it certainly raises the question of a middle ground. Obviously, you'll share some backend code, but how much can you share and what will you share in the UI side in both terms of design and code?
I think this is an individual case issue. Usually, it probably isn't worth it, but some specific applications on some specific platforms should be targeted to the particulars of that operating system.
发布评论
评论(6)
我想说每个平台单独开发的好处是:
- 原生外观和感觉
- 开发人员获得的平台知识
-...我没主意了 说
真的,如果您不小心的话,开发和维护应用程序的 3 个独立副本的成本可能会非常巨大。
如果您只是担心 GUI 代码,那么无论如何都要将 GUI 部分分离到每个平台的开发工作中,但您会后悔没有保持核心“业务逻辑”类型代码的通用性。
鉴于将 GUI 与逻辑分开通常被认为是一个好主意,因此当不可避免地出现将“一点点”业务逻辑放入表示层的诱惑时,这将迫使您的开发人员保持这种分离。
I would say that the benefits of individual development for each platform are:
- native look and feel
- platform knowledge acquired by your developers
-... i'm out of ideas
Seriously, the cost of developing and maintaining 3 separate copies of your application could be huge if you're not careful.
If it's just the GUI code you're worried about then by all means separate out the GUI portion into a per-platform development effort, but you'll regret not keeping the core "business logic" type code common.
And given that keeping your GUI from your logic separate is generally considered a good idea, this would force your developers to maintain that separation when the temptation to put 'just a little bit' of business logic into the presentation layer inevitably arises.
是的,跨平台 UI 库总是会让你的程序在至少一个平台上看起来和/或表现得有点“奇怪”。
如果 UI 代码和内部代码之间有很好的分离,那么重用非 UI 代码并为每个平台创建优化的用户界面并不困难。 许多高预算的跨平台应用程序就是通过这种方式制作的。
Yes, cross-platform UI libraries are always going to make your program look and/or act a little "weird" on at least one platform.
If you have good separation between the UI code and the internals, it isn't very hard to re-use the non-UI code, and create an optimized user interface for each platform. A lot of high-budget cross-platform applications are made just this way.
我认为好处是
风险是
因此,通过考虑风险,您可以开发良好的本机行为应用程序,具有尽可能最大的公共核心(抵制风险 1 的诱惑),一组伟大的对所有平台进行集成测试(最小化风险 2)并进行设计以减少获得本机行为所需的代码量(注意风险 3)
I see the benefits as
The risks being that
So, by taking the risks in consideration, you can develop nice native behaving apps, with the largest common core possible (resisting the temptation of risk 1), a great set of integrated tests for all the platforms (minimizing risk 2) and designing to reduce the amount of code needed to get the native behavior (taking care of risk 3)
它还取决于您的平台的差异程度,以及一个平台上的所有功能是否在另一个平台上可用。 我开发的工具具有适用于 Win32 平台、Windows CE 和移动设备以及各种嵌入式平台的版本。 该产品的某些方面根本不适合没有匹配硬件的平台。
例如,我目前正在开发[链接文本]基于实地的土地调查产品1 可在各种平台上使用各种通信媒体(例如蓝牙、RS232 和无线电调制解调器)与各种测量设备(例如 GPS 和全站仪)配合使用。 我目前正在开发的特定版本将托管在测量设备上,该设备具有相对较小的屏幕和键盘以及非常有限的内存和存储空间。 包含与其他设备相关的功能是没有意义的,并且保持界面尽可能简单和精简对用户非常有益。
简化的用户界面、小型可执行文件以及对臃肿软件的零容忍在某些领域仍然至关重要。 当然有大量的通用源代码,但也有大量的目标特定源代码和条件编译。
It also depends just how different your platforms are, and whether all the functionality on one platform is available on another. I develop tools that have versions available for Win32 platforms, Windows CE and mobile, and various embedded platforms. Some aspects of the product simply aren't pertinent to platforms that don't have the matching hardware.
For example, I'm currently working on [link text]a field based land survey product1 that works with a variety of measurement devices, such as GPS and Total stations, using a variety of communications media, such as bluetooth, RS232, and radio modems, on a wide range of platforms. The specific version I'm currently working on will be hosted onboard on a measurement device with a relatively small screen and keyboard, and very limited memory and storage. There is no point including the functionality relating to other devices, and it is highly beneficial to the user to keep the interface as simple and streamlined as possible.
Streamlined user interfaces, small executables, and a zero tolerence to bloatware are still of paramount importance in some domains. Plenty of common source for sure, but also plenty of target specific source and conditional compilation.
对于客户端程序(即不是 Web 服务器程序)来说,很难找到优秀的 Mac 和 Linux 开发人员,而找到优秀的 Windows 开发人员则不容易。
您拥有的独立于平台的代码越多,在所有三个平台上完成您的项目就越容易、越快。
维护三个代码库将是昂贵且有风险的。 使用跨平台工具的竞争对手每次都会在市场上击败您。
For client programs (i.e. not web server programs) it's pretty hard to find to find good Mac and Linux developers, and not really easy to find good Windows developers.
The more platform independent code you have, the easier and faster it will be to complete to your project on all three platforms.
It's going to be expensive and risky to maintain three codebases. Your competitor who uses cross platform tools is going to beat you to the market every time.
我不能否认这很有吸引力,但它确实提出了中间立场的问题。 显然,您将共享一些后端代码,但是在设计和代码方面您可以共享多少以及您将在 UI 方面共享什么?
我认为这是个别案例的问题。 通常,这可能不值得,但某些特定平台上的某些特定应用程序应该针对该操作系统的具体情况。
I can't deny that this is attractive, but it certainly raises the question of a middle ground. Obviously, you'll share some backend code, but how much can you share and what will you share in the UI side in both terms of design and code?
I think this is an individual case issue. Usually, it probably isn't worth it, but some specific applications on some specific platforms should be targeted to the particulars of that operating system.