Кто-нибудь рекомендует разрабатывать для разных платформ индивидуально?

Я знаю, что порекомендовать несколько кроссплатформенных библиотек несложно.

Однако есть ли преимущества в индивидуальном подходе к каждой платформе для вашего продукта?

Да, некоторые базовые библиотеки будут использоваться на всех платформах, но пользовательский интерфейс и некоторые другие вещи будут отличаться на каждой платформе.

У меня нет ограничений, что продукт должен быть на 100% одинаковым на каждой платформе.

Целевыми платформами являются Mac, Linux и Windows.

Heavy win32 API, MFC уже используется для версии Windows.

Причина, по которой я не полностью поддерживаю кроссплатформенные библиотеки, заключается в том, что я чувствую, что конечный продукт немного пострадает при попытке обобщить его для всех платформ.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
331
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я не могу отрицать, что это привлекательно, но это, безусловно, поднимает вопрос о золотой середине. Очевидно, вы поделитесь каким-то бэкэнд-кодом, но чем вы можете поделиться и чем вы поделитесь в пользовательском интерфейсе как с точки зрения дизайна, так и с точки зрения кода?

Думаю, это индивидуальный случай. Обычно это, вероятно, того не стоит, но некоторые конкретные приложения на некоторых конкретных платформах должны быть ориентированы на особенности этой операционной системы.

Да, кроссплатформенные библиотеки пользовательского интерфейса всегда заставят вашу программу выглядеть и / или вести себя немного «странно» по крайней мере на одной платформе.

Если у вас есть хорошее разделение между кодом пользовательского интерфейса и внутренними компонентами, нетрудно повторно использовать код, не связанный с пользовательским интерфейсом, и создать оптимизированный пользовательский интерфейс для каждой платформы. Именно так создаются многие высокобюджетные кроссплатформенные приложения.

Ответ принят как подходящий

Я бы сказал, что преимущества индивидуальной разработки для каждой платформы:

- родной внешний вид

- знание платформы, полученное вашими разработчиками

-... у меня закончились идеи

Серьезно, если вы не будете осторожны, стоимость разработки и сопровождения 3-х отдельных копий вашего приложения может быть огромной.

Если вас беспокоит только код графического интерфейса пользователя, то обязательно выделите часть графического интерфейса пользователя на отдельные платформы разработки, но вы пожалеете, что не сохранили общий код типа «бизнес-логики».

И учитывая, что отделение графического интерфейса пользователя от логики обычно считается хорошей идеей, это заставит ваших разработчиков поддерживать это разделение, когда неизбежно возникает соблазн поместить «немного» бизнес-логики на уровень представления.

Я вижу преимущества как

  • возможность получить полностью естественное поведение на всех ваших платформах, что хорошо для конечных пользователей

Риски в том, что

  • В итоге вы можете написать три приложения вместо одного с некоторыми отличиями (например, проще попасть в группу, давайте сделаем X по-другому!)
  • Вы создадите небольшую несовместимость между различными версиями ОС, не заметив этого.
  • Стоимость обслуживания пострадает пропорционально количеству другого кода, который у вас есть.

Таким образом, принимая во внимание риски, вы можете разрабатывать хорошие приложения с собственным поведением, с максимально возможным общим ядром (сопротивляясь соблазну риска 1), отличным набором интегрированных тестов для всех платформ (минимизируя риск 2) и проектируя так, чтобы уменьшить количество кода, необходимого для получения нативного поведения (принимая во внимание риск 3)

Это также зависит от того, насколько разные ваши платформы, и доступны ли все функции одной платформы на другой. Я разрабатываю инструменты, версии которых доступны для платформ Win32, Windows CE и мобильных устройств, а также для различных встроенных платформ. Некоторые аспекты продукта просто не имеют отношения к платформам, у которых нет подходящего оборудования. Например, в настоящее время я работаю над [текст ссылки] полевым продуктом для землеустройства 1, который работает с различными измерительными устройствами, такими как GPS и тахеометры, с использованием различных средств связи, таких как Bluetooth, RS232 и радио. модемы на широком спектре платформ. Конкретная версия, над которой я сейчас работаю, будет размещена на борту измерительного устройства с относительно небольшим экраном и клавиатурой, а также очень ограниченными памятью и хранилищем. Нет смысла включать функции, относящиеся к другим устройствам, и для пользователя очень выгодно, чтобы интерфейс был как можно более простым и оптимизированным.

Оптимизированные пользовательские интерфейсы, небольшие исполняемые файлы и нулевой отказ от вредоносного ПО по-прежнему имеют первостепенное значение в некоторых областях. Несомненно, множество общих источников, но также и множество целевых источников и условной компиляции.

+1 Хорошее объяснение случаев, о которых я бы не подумал.

Mike Dunlavey 01.03.2010 23:40

Для клиентских программ (то есть не веб-серверных программ) довольно сложно найти хороших разработчиков для Mac и Linux, и не очень легко найти хороших разработчиков для Windows.

Чем больше у вас будет независимого от платформы кода, тем проще и быстрее будет завершение вашего проекта на всех трех платформах.

Поддерживать три кодовых базы будет дорого и рискованно. Ваш конкурент, использующий кроссплатформенные инструменты, каждый раз будет обгонять вас на рынке.

Другие вопросы по теме