Я знаю, что порекомендовать несколько кроссплатформенных библиотек несложно.
Однако есть ли преимущества в индивидуальном подходе к каждой платформе для вашего продукта?
Да, некоторые базовые библиотеки будут использоваться на всех платформах, но пользовательский интерфейс и некоторые другие вещи будут отличаться на каждой платформе.
У меня нет ограничений, что продукт должен быть на 100% одинаковым на каждой платформе.
Целевыми платформами являются Mac, Linux и Windows.
Heavy win32 API, MFC уже используется для версии Windows.
Причина, по которой я не полностью поддерживаю кроссплатформенные библиотеки, заключается в том, что я чувствую, что конечный продукт немного пострадает при попытке обобщить его для всех платформ.





Я не могу отрицать, что это привлекательно, но это, безусловно, поднимает вопрос о золотой середине. Очевидно, вы поделитесь каким-то бэкэнд-кодом, но чем вы можете поделиться и чем вы поделитесь в пользовательском интерфейсе как с точки зрения дизайна, так и с точки зрения кода?
Думаю, это индивидуальный случай. Обычно это, вероятно, того не стоит, но некоторые конкретные приложения на некоторых конкретных платформах должны быть ориентированы на особенности этой операционной системы.
Да, кроссплатформенные библиотеки пользовательского интерфейса всегда заставят вашу программу выглядеть и / или вести себя немного «странно» по крайней мере на одной платформе.
Если у вас есть хорошее разделение между кодом пользовательского интерфейса и внутренними компонентами, нетрудно повторно использовать код, не связанный с пользовательским интерфейсом, и создать оптимизированный пользовательский интерфейс для каждой платформы. Именно так создаются многие высокобюджетные кроссплатформенные приложения.
Я бы сказал, что преимущества индивидуальной разработки для каждой платформы:
- родной внешний вид
- знание платформы, полученное вашими разработчиками
-... у меня закончились идеи
Серьезно, если вы не будете осторожны, стоимость разработки и сопровождения 3-х отдельных копий вашего приложения может быть огромной.
Если вас беспокоит только код графического интерфейса пользователя, то обязательно выделите часть графического интерфейса пользователя на отдельные платформы разработки, но вы пожалеете, что не сохранили общий код типа «бизнес-логики».
И учитывая, что отделение графического интерфейса пользователя от логики обычно считается хорошей идеей, это заставит ваших разработчиков поддерживать это разделение, когда неизбежно возникает соблазн поместить «немного» бизнес-логики на уровень представления.
Я вижу преимущества как
Риски в том, что
Таким образом, принимая во внимание риски, вы можете разрабатывать хорошие приложения с собственным поведением, с максимально возможным общим ядром (сопротивляясь соблазну риска 1), отличным набором интегрированных тестов для всех платформ (минимизируя риск 2) и проектируя так, чтобы уменьшить количество кода, необходимого для получения нативного поведения (принимая во внимание риск 3)
Это также зависит от того, насколько разные ваши платформы, и доступны ли все функции одной платформы на другой. Я разрабатываю инструменты, версии которых доступны для платформ Win32, Windows CE и мобильных устройств, а также для различных встроенных платформ. Некоторые аспекты продукта просто не имеют отношения к платформам, у которых нет подходящего оборудования. Например, в настоящее время я работаю над [текст ссылки] полевым продуктом для землеустройства 1, который работает с различными измерительными устройствами, такими как GPS и тахеометры, с использованием различных средств связи, таких как Bluetooth, RS232 и радио. модемы на широком спектре платформ. Конкретная версия, над которой я сейчас работаю, будет размещена на борту измерительного устройства с относительно небольшим экраном и клавиатурой, а также очень ограниченными памятью и хранилищем. Нет смысла включать функции, относящиеся к другим устройствам, и для пользователя очень выгодно, чтобы интерфейс был как можно более простым и оптимизированным.
Оптимизированные пользовательские интерфейсы, небольшие исполняемые файлы и нулевой отказ от вредоносного ПО по-прежнему имеют первостепенное значение в некоторых областях. Несомненно, множество общих источников, но также и множество целевых источников и условной компиляции.
Для клиентских программ (то есть не веб-серверных программ) довольно сложно найти хороших разработчиков для Mac и Linux, и не очень легко найти хороших разработчиков для Windows.
Чем больше у вас будет независимого от платформы кода, тем проще и быстрее будет завершение вашего проекта на всех трех платформах.
Поддерживать три кодовых базы будет дорого и рискованно. Ваш конкурент, использующий кроссплатформенные инструменты, каждый раз будет обгонять вас на рынке.
+1 Хорошее объяснение случаев, о которых я бы не подумал.