У меня есть то, во что я верю, идея убийцы для приложения. По определению это будет настольное приложение, и оно связано с некоторыми довольно низкоуровневыми службами, предоставляемыми платформами, для которых я буду писать его (служба поиска Windows, сервер Mac OS X Spotlight).
Мое намерение - это Mac OS X и Windows. Абсолютное намерение состоит в том, чтобы не делиться кодом - в основном потому, что очень мало (если таковые имеются) его могли бы быть общими. Из-за этого я намереваюсь использовать совершенно разные фреймворки (Cocoa/Obj-C на Mac, С#/WPF/PInvoke в Windows), и, если хотите, вы почувствуете себя "родными" к своим платформам, первоклассным гражданам приложений.
Мой вопрос заключается в следующем: лучше ли пытаться создавать и их "одновременно", то есть стараться держать их в паритете характеристик даже через цикл разработки; или лучше получить одно "право", а затем следить за другим?
Плюсы к сохранению паритета кажутся такими:
- Легче поддерживать выравнивание алгоритмов, поскольку я реализую на одном языке, я просто переношу на другой
- Легче гарантировать, что при выпуске оба приложения будут немедленно доступны
Против сохранения паритета кажутся:
- Сложнее сделать; постоянное переключение языка может привести к тому, что моя голова взорвется (я уже занимаюсь этим на работе, когда я работаю на С# в течение 4 дней, а затем вынужден поддерживать один из наших старых решений VB.NET).
Плюсы одного, а затем другого:
- Нет постоянного переключения языков.
- Одна платформа может тестироваться, а другая -
Против одного, а затем другого:
- Возвращаясь к тому, что будет тогда "старым" кодом для переноса алгоритмов
- Потенциальная потеря интереса к "повторению" того, что я уже сделал.
По общему признанию, это очень амбициозно... И я всего лишь один парень, делающий это в "свободное время" (hah). Если бы вы были в одной лодке и знакомы с обоими наборами технологий, как бы вы к этому подошли?
Обновление
В ответ на некоторые вопросы ниже:
Да, общий API выполним, однако вызывать соглашения не будет - или, по крайней мере, нелегко. Я намереваюсь иметь одни и те же классы, но с кодом, специфичным для платформы. (Это кажется довольно важным, так как Windows Search Service и Spotlight работают по-другому.)
Я мог бы пойти с чем-то вроде Java, но я выбираю не по нескольким причинам: (1) Я не делал Java навсегда, и теперь я опасно неквалифицирован.:) (2) Частью этого является упражнение в обучении Objective-C, делая "по существу" одно и то же приложение в тех технологиях, с которыми я знаком; и (3) Хотя Swing может обеспечить основной взгляд на OS X, его пользовательский интерфейс Windows никогда не чувствует себя совершенно правильно, и я действительно хочу, чтобы оба приложения чувствовали себя принадлежащими к их соответствующим системам.
Время выхода на рынок не имеет большого значения; Я чувствую, что сама идея приложения будет достаточно безопасной. Более важным, чем TTM, является то, что приложение чувствует себя хорошо и обеспечивает функциональность...