最有用的.NET实用程序类开发人员倾向于重新发明而不是重用

时间:2008-10-07 13:49:36

标签: .net

我最近从去年开始阅读了Phil Haack的帖子(The Most Useful .NET Utility Classes Developers Tend To Reinvent Rather Than Reuse),并且认为我会看到是否有人在列表中添加任何内容。

25 个答案:

答案 0 :(得分:47)

人们倾向于使用以下丑陋且必然会失败的人:

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()

答案 1 :(得分:36)

String.IsNullOrEmpty()

答案 2 :(得分:35)

Path.GetFileNameWithoutExtension(string path)

返回没有扩展名的指定路径字符串的文件名。

Path.GetTempFileName()

在磁盘上创建一个唯一命名的零字节临时文件,并返回该文件的完整路径。

答案 3 :(得分:28)

System.Diagnostics.Stopwatch班。

答案 4 :(得分:23)

的String.Format。

我见过的次数

return "£" & iSomeValue

而不是

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

或追加百分号的人 - 这样的事情。

答案 5 :(得分:22)

Enum.Parse()

答案 6 :(得分:20)

我最近需要在Windows应用程序中下载一些文件。我在WebClient对象上找到了DownloadFile方法:

    WebClient wc = new WebClient();
    wc.DownloadFile(sourceURLAddress, destFileName);

答案 7 :(得分:20)

试图找出我的文档在用户计算机上的位置。只需使用以下内容:

string directory =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

答案 8 :(得分:19)

String.Join()(但是,几乎所有人都知道string.Split,似乎每次机会都会使用它......)

答案 9 :(得分:14)

硬编码a /到目录操作字符串而不是使用:

IO.Path.DirectorySeparatorChar

答案 10 :(得分:13)

StringBuilder 类,尤其是方法 AppendFormat

P.S。:如果您正在寻找字符串操作性能测量: StringBuilder vs. String / Fast String Operations with .NET 2.0

答案 11 :(得分:12)

Environment.NewLine

答案 12 :(得分:12)

不要使用Guid生成文件名,只需使用:

Path.GetRandomFileName()

答案 13 :(得分:10)

很多新的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语法之外使用的所有非常有用的小函数。

答案 14 :(得分:9)

答案 15 :(得分:8)

答案 16 :(得分:8)

input.StartsWith("stuff")代替Regex.IsMatch(input, @"^stuff")

答案 17 :(得分:8)

System.Text.RegularExpressions.Regex

答案 18 :(得分:7)

对于隐藏在Microsoft.VisualBasic命名空间下的所有内容,TextFieldParser实际上是一个非常好的csv解析器。我看到很多人要么推出自己的(非常糟糕),要么在Code Plex上使用类似于Fast CSV库的东西,甚至不知道这已经融入框架中。

答案 19 :(得分:6)

System.IO.File.ReadAllText vs使用StreamReader为小文件编写逻辑。

System.IO.File.WriteAllText vs使用StreamWriter为小文件编写逻辑。

答案 20 :(得分:6)

档案。

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);

答案 21 :(得分:4)

大多数人忘记了如果文件夹已经存在,Directory.CreateDirectory()会正常降级,并使用无意义的if(!Directory.Exists(....))调用来包装它。

答案 22 :(得分:4)

许多人似乎想要手动单步执行XML文件来查找内容而不是使用XPathNaviagator。

答案 23 :(得分:1)

myString.Equals(anotherString)

和选项包括特定文化的。

我敢打赌,至少有50%的开发者会写下这样的内容:if(s ==“id”){...}

答案 24 :(得分:-5)

Path.Append在我见过的东西中总是被遗忘。