`
pcajax
  • 浏览: 2103689 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

20条.net编码习惯 【转】

阅读更多

 

为了提高代码质量,欢迎高手拍砖指点,共同进步!!!

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

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->int Count;
Count 
= 100;
private static const int ZERO  =  0;
if(  Count  ==  ZERO )
{
// 执行一些操作
}

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

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

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

不好的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->           String  temp = String.Empty;
            
forint i = 0 ; i<= 100; i++)
            {
                temp 
+= i.ToString();
            }

好点的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->            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要好。

不好的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->            int Check = 0;
            
if( Check == 0 )
            {
                
// 执行一些操作

            }

好点的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->            bool Check = false;
            
if(!Check)
            {
                
// 执行一些操作
            }

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

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->   class A
   {

   }
   
class B : A
   {

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

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

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->           using(Cerate the proxy)
            {
                
//执行所需的操作
            }

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

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

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->      class MyData
        {
            
public MyData()
            {
            }
            
public List<Customer> GetAllCustomer()
            {
               
using (SqlConnection objConnection = new SqlConnection("Connection string"))
               { 
                   
//执行一些操作得到需要的数据
               }
            
            }
        }

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

代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->        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 有性能损耗)

例如:

不好的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->forint i = 0; i<= 100; i++)
{    
   Calculate(i);
}

 好点的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->forint i = 0; i<= 100; i++)
{
//直接写Calculate逻辑。
}

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

不好的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->for(int i = 0 ; i<= 100; i++)
{
   try
   {
   }
   catch(Exception ex)
   {
    throw ex;
   }
}

好点的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->   try
   {
     for(int i = 0 ; i<= 100; i++)
     {
     }
   }
   catch(Exception ex)
   {
       
throw ex;
   }

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

例如:

不好的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->  try
  {
    int x,y,z;
    x 
= 0;
    y 
= 10;
    z 
= y/x;
   }
   catch(DevideByZeroException ex)
   {
    Throw ex;
   }

好点的习惯:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->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更倾向于使用对象传递数据

分享到:
评论

相关推荐

    20条.net编码习惯

    利用通俗易懂的实例介绍.Net 编程中的习惯问题

    ASP.NET编码规范

    ASP.NET编码规范 2 第一章 编码规范概述 2 第二章 静态文件编码规范 2 1. HTML标记语言编码规范 2 1.1 标记的换行规范: 2 1.2 标记的关闭规范 3 1.3 标记的属性赋值规范 3 1.4 标记的缩进规范 3 2. 客户端...

    .NET软件开发编码规范

    应用编码规范对于软件本身和软件开发人员而言尤为重要,有以下几个原因: 1、好的编码规范可以尽可能的减少一个软件的维护成本 ,...4、长期的规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维;

    C#编码好习惯,.net 编码规范

    . 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。 ...a) 如果需要编辑机器产生的代码,编辑格式和风格要符合该编码标准。 ......

    Asp.net 开发规范

    Asp.net 开发规范 简单应用 方便代码的交流和维护。 不影响编码的效率,不与大众习惯冲突。 使代码更美观、阅读更方便。 使代码的逻辑更清晰、更易于理解。

    .NET设计规范pdf文档

    一个规范的.net设计编码规范,对于规范编码习惯,增加程序可读性.

    .Net编程规范 便于程序员形成良好的变成习惯

    .Net编程规范,使用统一编码规范的主要原因,是使应用程序的结构和编码风格标准化,以便于阅读和理解这段代码。

    C# 编程规范 命名与编码习惯

    C# 编程规范~命名与编码习惯`希望对你有帮助!

    《.NET实践之旅 C#篇》黄凯波著

    第二部分为辅线,介绍c#以及.net framework的基础和特性,采用结合实际工程的方式来引入这些重要的知识点,说明为什么用它们以及怎么使用,并且阐述这些技术的限制,以帮助读者形成自己的技术判断能力,这些知识也是...

    制作第一个页面 欢迎您进入.Net启动运行

    115. 定制服务器控件[二] 116. 将他们组合起来 117. 小结考试 调试和错误处理 118. 好的编程习惯和编码方式 119. 查找错误 120. 处理错误 121. 写入日志并通知管理员 122. 小...

    博易博客 多用户博客程序

    自英文官方发布 BlogEngine.NET 1.3 以来不断追踪官方新版的改进与修改,并通过本地化工作来使之更符合中国网民使用习惯,提供更多的中文支持。 【版权声明】 本博客遵守国际开源协议,您可以自由使用本博客,但...

    aspnetcore-3.1.0.zip

    .NET Core 3.1最新源码,学习微软大法的好资料,看下微软大师如何构建大框架,对于学习编码习惯有很大的帮助

    Asp.net多模式留言系统

    &lt;--别扔砖头,我这人习惯废话,所以代码的注释也很发繁冗--&gt; 3、整体页面看起来非常漂亮,直接使用,不需要修改系统的任何东西; 4、功能页全部非常专一,没有任何多余的东西,适合镶套在任何地方; 5...

    通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序的方法

    一直习惯在Visual Studio中进行编码和调试。现在我想的是可以简单快速的测试.NET Core应用在Linux。所以通过本篇文章我们能了解到如何在Windows中使用Visual Studio进行远程调试我们部署在Linux中的应用程序,从而...

    PSXCardReader.NET:.NET Windows Forms Playstation(PSX)存储卡读取器应用程序

    为了实现良好的编码习惯并保持关注点分离,建议在实施修改时记住每个模块的目的。 PSXCardReader.NET.Presenter包含演示者类,接口和大多数逻辑。 这是您想了解项目如何使用PSXMMCLibrary的地方。 PSXCardReader...

    Asp.Net Forums v2.0.1 中文官方圣诞版

    更新说明: 1.增加首页版主显示 2....重新制作新皮肤,以适应国内习惯 28.FreeTextBox编辑器增加插入媒体文件按钮和插入QQ表情/MSN表情/淘宝旺旺表情/举牌表情按钮 29.增加页面Meta标记的keywords和description

    网鸟Asp.Net模板引擎 v2.0.9610.18

     与其如此,不如要求开发者要规范自己的编码习惯。我们也经常向程序员们灌  输一个理念,即“没有良好的编码风格,就不可能成为一个真正的高手!”。 网鸟Asp.Net模板引擎的功能和用途还有很多,这需要您在开发...

    C#编码规范相应介绍

    C#的编码规范,希望对大家有所帮助,主要是对刚刚接触C#编程的人,有一个好的编码风格,应该对以后的编程有很大的帮助,而且能够是人们养成好的编码习惯

    fuse-convmvfs-0.2.6.tar

    fuse-convmvfs是一个基于FUSE(Filesystem in USErspace)的用户态文件系统, 用于将文件系统树中的一个分支的文件名的编码映射为另一种编码,并且将其装载在一个其他装载点下。 Convmv...

Global site tag (gtag.js) - Google Analytics