Большинство полезных разработчиков классов утилиты.NET склонно переосмысливать, а не снова использовать [закрытый]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

56
задан Kara 10 December 2013 в 07:33
поделиться

25 ответов

Люди склонны использовать следующее, которое ужасно и связано перестать работать:

string path = basePath + "\\" + fileName;

Лучше и более безопасный путь:

string path = Path.Combine(basePath, fileName);

Также я видел, что люди пишут пользовательский метод считать все байты из файла. Этот приезжает довольно удобный:

byte[] fileData = File.ReadAllBytes(path); // use path from Path.Combine

Как TheXenocide, на который указывают, то же запрашивает File.ReadAllText() и File.ReadAllLines()

47
ответ дан Community 26 November 2019 в 16:55
поделиться

myString. Равняется (anotherString)

и опции включая определенные для культуры.

я держал пари, что по крайней мере 50% разработчиков пишут что-то как: если (s == "идентификатор") {...}

1
ответ дан 26 November 2019 в 16:55
поделиться

Большинство людей забывает тот Каталог. CreateDirectory () ухудшается корректно, если папка уже существует, и оберните его с бессмысленным, если (! Каталог. Существует (....)), вызов.

4
ответ дан James Curran 26 November 2019 в 16:55
поделиться

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

4
ответ дан James Curran 26 November 2019 в 16:55
поделиться

System.IO.File.ReadAllText по сравнению с записью логического использования StreamReader для маленьких файлов.

System.IO.File.WriteAllText по сравнению с записью логического использования StreamWriter для маленьких файлов.

6
ответ дан abatishchev 26 November 2019 в 16:55
поделиться

Материал файла.

using System.IO;

File.Exists(FileNamePath)

Directory.Exists(strDirPath)

File.Move(currentLocation, newLocation);

File.Delete(fileToDelete);

Directory.CreateDirectory(directory)

System.IO.FileStream file = System.IO.File.Create(fullFilePath);
6
ответ дан David Basarab 26 November 2019 в 16:55
поделиться

input.StartsWith("stuff") вместо Regex.IsMatch(input, @"^stuff")

8
ответ дан abatishchev 26 November 2019 в 16:55
поделиться

Система. Текст. RegularExpressions. Regex

8
ответ дан Galwegian 26 November 2019 в 16:55
поделиться
9
ответ дан Rinat Abdullin 26 November 2019 в 16:55
поделиться

Много новых функций Linq кажется довольно неизвестным:

Any<T>() & All<T>()

if( myCollection.Any( x => x.IsSomething ) )
    //...

bool allValid = myCollection.All( 
    x => x.IsValid );

ToList<T>(), ToArray<T>(), ToDictionary<T>()

var newDict = myCollection.ToDictionary(
    x => x.Name,
    x => x.Value );

First<T>(), FirstOrDefault<T>()

return dbAccessor.GetFromTable( id ).
    FirstOrDefault();

Where<T>()

//instead of
foreach( Type item in myCollection )
    if( item.IsValid )
         //do stuff

//you can also do
foreach( var item in myCollection.Where( x => x.IsValid ) )
    //do stuff

//note only a simple sample - the logic could be a lot more complex

Все действительно полезные небольшие функции, которые можно использовать за пределами синтаксиса Linq.

10
ответ дан Keith 26 November 2019 в 16:55
поделиться

Вместо того, чтобы генерировать имя файла с Гуидом, просто используйте:

Path.GetRandomFileName()
12
ответ дан Ed Ball 26 November 2019 в 16:55
поделиться
Environment.NewLine
12
ответ дан Romain Verdier 26 November 2019 в 16:55
поделиться

класс StringBuilder и особенно Метод AppendFormat.

P.S.: Если Вы ищете измерение производительности Строковых операций: StringBuilder по сравнению со Строкой / Быстрые Строковые операции с.NET 2.0

13
ответ дан splattne 26 November 2019 в 16:55
поделиться

Трудно кодирование / в управление каталогом представляет в виде строки по сравнению с использованием:

IO.Path.DirectorySeparatorChar
14
ответ дан John Chuckran 26 November 2019 в 16:55
поделиться

Строка. Соединение () (однако, почти все знают о строке. Разделение и, кажется, использует его все шансы, которые они получают...)

20
ответ дан James Curran 26 November 2019 в 16:55
поделиться

Я должен был недавно загрузить некоторые файлы в приложении Windows. Я нашел метод DownloadFile на объекте WebClient:

    WebClient wc = new WebClient();
    wc.DownloadFile(sourceURLAddress, destFileName);
20
ответ дан Bobby Ortiz 26 November 2019 в 16:55
поделиться

Попытка выяснить, где Мои Документы живет на компьютере пользователя. Просто используйте следующее:

string directory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
20
ответ дан Peter Walke 26 November 2019 в 16:55
поделиться

Перечисление. Синтаксический анализ ()

22
ответ дан James Curran 26 November 2019 в 16:55
поделиться

Строка. Формат.

количество раз я видел

return "£" & iSomeValue

, а не

return String.Format ("{0:c}", iSomeValue)

или люди, добавляющие знаки процента - подобные вещи.

23
ответ дан RB. 26 November 2019 в 16:55
поделиться

System.Diagnostics.Stopwatch класс.

28
ответ дан abatishchev 26 November 2019 в 16:55
поделиться
Path.GetFileNameWithoutExtension(string path)

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

Path.GetTempFileName()

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

35
ответ дан Panos 26 November 2019 в 16:55
поделиться

String.IsNullOrEmpty()

36
ответ дан abatishchev 26 November 2019 в 16:55
поделиться

Путь. Добавьте всегда забывается в материале, который я видел.

-5
ответ дан 26 November 2019 в 16:55
поделиться

При всей своей скрытости в пространстве имен Microsoft.VisualBasic, TextFieldParser на самом деле является очень хорошим парсером csv. Я вижу, что многие люди либо делают свой собственный (плохо), либо используют что-то вроде хорошей библиотеки Fast CSV на Code Plex, даже не зная, что это уже встроено во фреймворк.

8
ответ дан 26 November 2019 в 16:55
поделиться
Другие вопросы по тегам:

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