一起谈.NET技术,20条.NET编码习惯

简介: 1、不要硬编string/ numeric,可以使用一些常量代替。 (提高可读性)int Count;Count = 100;private static const int ZERO  =  0;if(  Count  ==  ZERO ){// 执行一些操作}2、对于字符串比较-使用String. Empty ,而不是""。

1、不要硬编string/ numeric,可以使用一些常量代替。 (提高可读性)

int  Count;
Count 
=   100 ;
private   static   const   int  ZERO   =    0 ;
if (  Count   ==   ZERO )
{
//  执行一些操作
}

2、对于字符串比较-使用String. Empty ,而不是""。

3、不要声明成员变量为 public 或者proteted,尽量使用private 成员变量和public/protected 属性。 (修改)

4、当我们要在循环操作字符串,使用StringBuilder,而不是字符串,示例如下。

不好的习惯:

           String  temp  =  String.Empty;
            
for int  i  =   0  ; i <=   100 ; i ++ )
            {
                temp 
+=  i.ToString();
            }

好点的习惯:

            StringBuilder sb  =   new  StringBuilder();
            
for  (  int  i  =   0  ; i <=   100 ; i ++ )
            {
                sb.Append(i.ToString());
            }

5、简单的操作,比起Collection更倾向使用Array。 (视情况,这里是建议)

6、比起ArrayList更倾向使用Generic Collection。 (视情况,这里是建议)

7、比起HashTable更倾向使用Generic Dictionary。 (视情况,这里是建议)

8、对于字符串的操作和存储,倾向于StringCollection和StringDictionary。 (视情况,这里是建议)

9、使用适合的数据类型。

    例如:你想要判断状态,使用bool比int要好。

不好的习惯:

            int  Check  =   0 ;
            
if ( Check  ==   0  )
            {
                
//  执行一些操作

            }

好点的习惯:

             bool  Check  =   false ;
            
if ( ! Check)
            {
                
//  执行一些操作
            }

10、使用as做类型转换的时候,对转换后的值进行null值判断

    class  A
   {

   }
   
class  B : A
   {

   }
    B objB 
=   new  B();
    A objA1  
=  (A) objB;
    A objA2 
=  objB  as  A;
    
if ( objA2  !=   null )
    {
     
//执行所需的操作
    }

11、创建wcf代理,可以使用using表达式。 (很多地方可以这样使用)

            using (Cerate the proxy)
            {
                
//执行所需的操作
            }

 12、对于昂贵的资源(例如Connection, File 等等),遵照'Acquire late, release early’ (尽量晚的获取,尽量早的释放)准则。

例子:如果你想在数据操作时,使用的SqlConnection对象,请在方法级别,而不是在类级别创建实例。

代码
       class  MyData
        {
            
public  MyData()
            {
            }
            
public  List < Customer >  GetAllCustomer()
            {
               
using  (SqlConnection objConnection  =   new  SqlConnection( " Connection string " ))
               { 
                   
// 执行一些操作得到需要的数据
               }
            
            }
        }

 如果你想创建的类级别SqlConnection实例,确保您的类实现了IDisposable接口,并在Dispose()中清理SqlConnection实例。

代码
         class  MyData : IDisposable
        {
            SqlConnection objConnection ;
            
public  MyData()
            { 
                objConnection 
=   new  SqlConnection( " Connection string " );
            }
            
public  List < Customer >  GetAllCustomer()
            { 
                
//通过objConnection得到需要的数据
            }
            
public   void  Dispose()
            {
                
//清理SqlConnection实例
                 if ( objConnection  !=   null  )
                {
                    
if ( objConnection.State  ==  ConnectionState.Open)
                    {    
                       objConnection.Close();
                    }
                }
            }
        }

13、如果你不想别人扩展你的类功能,使用‘sealed’。

14、避免为每个类都声明‘destructor’ ,因为它会增加不需要常驻内存的类的生命周期。

15、相对manual threading,更倾向用Thread Pool 。

16、在循环内不要去调用其它方法。 (call function 有性能损耗)

例如:

不好的习惯:

for int  i  =   0 ; i <=   100 ; i ++ )
{    
   Calculate(i);
}

 好点的习惯:

for int  i  =   0 ; i <=   100 ; i ++ )
{
// 直接写Calculate逻辑。
}

17、不要在循环内处理异常,而是将循环处理的逻辑放在try/catch里面

不好的习惯:

for ( int  i  =   0  ; i <=   100 ; i ++ )
{
   try
   {
   }
   catch (Exception ex)
   {
    throw  ex;
   }
}

好点的习惯:

   try
   {
     for ( int  i  =   0  ; i <=   100 ; i ++ )
     {
     }
   }
   catch (Exception ex)
   {
       
throw  ex;
   }

 18、不用通过异常处理应用程序的逻辑

例如:

不好的习惯:

  try
  {
    int  x,y,z;
    x 
=   0 ;
    y 
=   10 ;
    z 
=  y / x;
   }
   catch (DevideByZeroException ex)
   {
    Throw ex;
   }

好点的习惯:

try
 {
   int  x,y,z;
   x 
=   0 ;
   y 
=   10 ;
   if ( x  !=   0  )
   {
      z 
=  y / x;
   }
 }
 catch (Exception ex)
 {
 }

19、相对for/while  ,倾向使用foreach循环。[更正]

20、使用多层架构的系统,层与层之间的交互,比起DataSet/DataTables更倾向于使用对象传递数据。

目录
相关文章
|
4月前
|
API
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
4月前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
128 4
|
4月前
|
人工智能 物联网 开发者
.NET技术在现代软件开发中的应用愈发广泛和深入
.NET技术是软件开发的关键支柱,本文分为三部分探讨其创新应用:最新进展如.NET 5/6统一平台、性能提升、跨平台支持增强、云集成优化及开源社区贡献;应用场景涵盖微服务架构、物联网、AI/机器学习、游戏及移动应用开发;未来发展潜力在于持续性能优化、云原生支持、新兴技术集成、生态扩张及教育培训加强。.NET正以其强大适应性和创新潜力引领软件开发的新方向。
51 3
|
4月前
|
人工智能 开发框架 .NET
如何掌握.NET技术,引领开发前沿:.NET技术的核心能力、在现代开发中的应用实践、以及如何通过.NET技术实现持续创新。
.NET技术已成为软件开发不可或缺的部分,本文分三部分探讨:核心能力如多语言支持、统一运行时环境、丰富的类库及跨平台能力;现代开发实践包括企业级应用、Web与移动开发、云服务及游戏开发;并通过性能优化、容器化、AI集成等方面实现持续创新,使开发者站在技术前沿。
68 3
|
17天前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
27 3
|
17天前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
24 3
|
21天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
20天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
2月前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
|
2月前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)