Лучшие практики для портативного [закрытого] C#

Работает 100%.

import java.text.DecimalFormat;

public class Formatting {

    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;

        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");

        System.out.println("Value: " + df.format(value));
    }

}
20
задан chills42 3 November 2008 в 13:30
поделиться

9 ответов

Я на самом деле использовал winforms, и это было прекрасно. Это был УЖАСНЫЙ ТОРЕЦ, но это работало.

, Очевидно, не используйте P/Invoke или любой материал win32 как реестр. Также знайте о любом третьем лице DLL. Например, мы используем третье лицо SQLite dll, который на самом деле содержит собственный код в нем, который мы должны выгрузить, если мы хотим работать на OSX/linux.

14
ответ дан 29 November 2019 в 22:50
поделиться

Я ненавижу термин "Лучшая практика", потому что кажется, что некоторые практики могут быть лучшими в любом контексте, который является опасной вещью, но я скажу то, что я рассматриваю "Хорошей практикой" для многоплатформенного кода (и для большей части другого типа разработки):

Использование непрерывный механизм интеграции и сборка для всех целевых платформ все время .

слишком сложные Звуки? Ну, если действительно необходимо поддерживать несколько платформ, лучше чтобы сделать это. Неважно, насколько осторожный Вы со своим кодом и использованием библиотеки, если Вы протестируете слишком поздно, то Вы проведете looong часы, переделывая большие части приложения.

15
ответ дан 29 November 2019 в 22:50
поделиться

Не упустите что-либо, чтобы сделать с именем файла и управлением путем и использовать портативные методы.NET в Система. IO.Path т.е.

вместо:

string myfile = somepath + "\\file.txt";

сделайте:

string myfile = Path.Combine(somepath, "file.txt");

, Если бы необходимо указать разделитель пути затем, Вы использовали бы Путь. Разделитель и т.д.

11
ответ дан 29 November 2019 в 22:50
поделиться

Не используйте Windows. Формы для графический интерфейсов пользователя, но Моно, вероятно, уже упомянули это. Gtk# намного более последователен и надежен для кросс-платформенных графический интерфейсов пользователя.

6
ответ дан 29 November 2019 в 22:50
поделиться

Не используйте "\r\n" для новой строки. Используйте Среда. NewLine

Помнит:

  • *NIX использует просто символ новой строки (" \n")
  • , Windows использует использование "\r\n"
  • MacIntosh "\r" (я не действительно уверен в этом - не стесняются исправлять меня).

L.E.: Кажется, что некоторый более новый MacOSes больше не использует "\r" разделитель строки.

10
ответ дан 29 November 2019 в 22:50
поделиться

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

Моно Миграция Анализатор (MoMA) инструмент довольно хорош для анализа exsisting приложения.NET и предупреждения Вас проблем мобильности, но лучший выбор для нового кода состоит в том, чтобы использовать последнюю стабильную версию Моно для Вашей технической разработки.

, Поскольку Orion сказал, что необходимо быть осторожными при использовании третьей стороны DLLs, хотя мой соавтор записал инструмент NativeProbe для анализа DLLs для P/Invoke dependenecies, если Вы действительно хотите быстро проверить стороннее программное обеспечение.

, Если Вы полны решимости разработать на MS.NET затем, необходимо попытаться удостовериться, чтобы Вы также создали и модульный тест на Моно, и необходимо также не упустить много Windows определенные пространства имен, такие как Microsoft. Win32 и Система. Пространства имен управления.

3
ответ дан 29 November 2019 в 22:50
поделиться

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

1
ответ дан 29 November 2019 в 22:50
поделиться

Существуют некоторые другие простые вещи. Как не принимают символов пути. Или новые строки .

я - один из людей, который регулярно компилирует NUnit на Моно на Linux или OSX.

кроме того, не предполагайте, что компиляторы работают точно то же. Мы недавно нашли проблему, где компилятор C# MS, кажется, включает вещи, которые Моно не делает, требуя дополнительных ссылок в нашем сценарии сборки.

, Кроме которого, это было довольно просто. Я помню первый раз, когда мы добрались GUI, работающий Моно / Linux - было довольно захватывающе (даже если это было довольно ужасно)

1
ответ дан 29 November 2019 в 22:50
поделиться

Один недостающий объект: Удостоверьтесь, что имена файлов чувствительны к регистру. Файл. Откройте ("MyFile.txt"); движение не должно работать над Unix, если Ваш файл называют myfile.txt.

1
ответ дан 29 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: