编写高质量代码基础

内容来自于网络


高质量代码准则:可阅读

编写的代码要有良好的格式和标准,如不同层次代码的缩进、代码元素的命名、清晰的注释说明,等等。

如果有时间,代码就应该细细的雕琢。

注释你的代码,以便说明这些代码的功能。

注释的注意问题:

注释应说明代码的功能,即目的和结果是什么,而不用将代码的算法过程又通过注释描述一遍。

使用注释合理分隔代码区域,比如,可以在变量声明、语句结构、语句块、类、结构、枚举等区域的前面加上相应的注释,对于很简单的代码功能,哪怕只是一条空白注释行,也能让代码的区域划分非常清晰。

注释应简洁,只说明重要的部分。

注释应该保持最新代码的说明,或记录代码的更新过程。注释一定要和代码同时更新。否则错误的注释比没有还要可恶。

注释也应该使用已约定的标准格式。

注释应包含项目中要求的其他内容,如创建人,更新记录等。

 

技巧:

Visual C#中,如果我们输入“/*”并回车,则会自动将注释格式化为如下形式:

还可以使用“//”行注释。“/**”和“*/”之间的块注释来创建,或者可以使用“///”的行注释来创建。  后两种是为了兼容XML文件的注释。

 

 

高质量代码准则:高性能

我们解决一个问题的方法往往有很多种,哪一种才是性能最好的呢?只有要给方法来决定那就是实践应用它。接下来我们来创建一个性能测试代码结构。用这个基本结构测试代码的性能,以确定代码运行的速度。

性能测试模板(架构):

using System;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            //确定运行行数

            const int RUN_NUMBER =1000000;

            //声明开始和结束时间变量

            long startTime, endTime;

            //开始测试

            startTime = DateTime.Now.Ticks;

            for (int i = 1; i <=RUN_NUMBER; i++)

            {

                //需要的代码

            }

            endTime = DateTime.Now.Ticks;

            //显示运行所用时间

            Console.WriteLine("运行时间为:{0}", endTime - startTime);

        }

    }

}

它显示结果为0    1000000次空循环几乎不需要什么时间。

在代码中,我们用于衡量时间的单位是Tick。这是一个以100毫微秒为单位的时间刻度值。

在实际应用中,调整修改RUN_NUMBER的值。

 

 

高质量代码准则:给变量起个好名字

准确描述保存的值是什么:

         变量名和常量名应该可以清晰地说明他们的用途和数据内容, 应该明确说明变量“是什么”,比如 temp就不是一个好变量名,就是这是一个临时变量,但对它到底用于存储什么数据却不能一目了然。

使用命名标准:

C#中变量的命名规则是一种“驼峰式”的命名方式,即每个单词的首字母大写(但在定义变量时,变量名的首字母小写,后面的每个单词首字母大写,如变量cnnStr常量采用C风格,即全部采用大写字母,每个单词使用下划线分隔

注意最好不要使用 汉语拼音

公共标准,作为公司或项目中的统一标准,要求每一个参数的程序员都遵守。

习惯用法:

         使用 ijk 作为循环控制变量。 但对于较复杂的算法,为变量起一个更明确的名称,会更利于代码的阅读和维护。

知识点:C#中,基本的引用类型包括stringobject

 

 

 

高质量代码准则:准确使用整数

         由于理论上,整数是计算机里运算速度最快的数据类型。

 

整数的除法运算结果依然是整数。 如果需要得到浮点数结果,应该使用浮点数进行运算。

关注整数在运算或类型转换过程中的溢出问题,并需要注意在计算中间值时可能会产生的溢出情况。

应预防除数为0的情况。

在项目中,应尽可能地制定统一的的整数使用标准,比如在没有特殊要求的情况下,就默认使用int类型。

 

逐字字符串(@

在一个字符串前面加一个@符号,这个字符串就是逐字字符串。在逐字字符串中,换行、空格等特殊字符都被原样输出。

 

既然string类型的运算这么慢,那么,如果我们需要进行大量字符串的连接操作,应该怎么办?答案是,使用StringBuilder类型。

 

数据类型的转换

显示转换:

         目标变量 = (目标类型)原数据;

隐式转换:

 

TryParse()方法转换:

每一种值类型都包含TryParse()方法。可以帮助我们安全测试一个字符串是否能够正确转换为指定的数据类型。

string source = “12”;

int target;

if(int.TryParse(source, out target) ==true)

….   Tartget …

else

…..

 

使用 Convert

专门用于数据类型转换的类。类中为我们定义了一系列用于类型转换的方法。比如 我们需要将一种类型转换为C#中的int类型,可以使用如下的方法:

Convert.ToInt32(num);

如果不能转换就会产生 FormatException异常

 

 

装箱和拆箱

最大的作用就是在值类型和应用类型之间搭起一座桥梁,方便一些特殊的转换。

 

高质量代码准则:object不应作为万能类型

         虽然C#是一个一切皆对象的世界,但我们不能滥用object类型。原因是,object是引用类型,在处理值类型时会进行装箱与拆箱的操作,这时对性能的影响还是比较明显的。

 

在处理一系列值类型与应用类型数据时,我们可以使用以下一些方法尽量避免这些值类型与引用类型之间的转换操作:

对于一系列相关的数据,可以通过创建枚举、结构、类等类型来封装他们。

使用合理的类型转换、合理的应用类型转换,减少装箱和拆箱的操作,对性能的提升也有一定的帮助。

使用泛型,创建算法的模板,在运行时绑定具体的数据类型。

 

 

 

使用if语句结构时应注意以下几点:

将最常见的条件放到第一个if语句后,这样代码的逻辑关系会更直观。

对于非常复杂的逻辑判断,可以考虑使用一个方法来完成。

确保条件的每一种可能都考虑到了,否则在运行中可能会出现不希望的运行结果。

对于有一个条件而有过个可能的结果时,使用switch语句代替if语句。

嵌套使用中,处理完成一个语句块后,适时退出。

 

使用switch语句时应注意:

保证每一个case都能准确贯穿或结束,可以使用breakreturngoto case语句来实现。

按一定的顺序排列每一个值,如按数字、字母的数字,或者是按照数字可能出现的频率。

应使用default语句块处理所列出的数值以外的情况,如默认处理方式、处理异常情况等。

 

使用for语句时应注意:

如果能明确执行的次数,就使用for语句。

对于循环控制变量,应使用有意义的名称,在循环操作的算法很简单时,才使用习惯变量名。

对于控制变量的上限,也应尽量使用有意义的变量或常量,而尽量少使用具体的数字。因为阅读代码时,大家不太可能一眼就看出这个数字的含义是什么, 我们称这种数字为 “魔数”(magic number)。

 

使用while语句时应注意:

防止无限循环(也称为死循环)。

在循环体内注意条件的变化,确保能够结束循环。

如果需要使用无限循环结构时,应保证在某一条件满足时能够终止循环。

 

使用do语句时应注意:

一般认为,使用while语句会比do语句更安全。

确保在第一次执行不可能出现问题时才使用do语句。

在循环体内注意条件的变化,确保循环能够结束。

 

使用foreach语句时应注意:

♦foreach语句用于遍历一个集合。

注意集合成员的类型和使用方式。

如果只对其中几个成员进行操作,直接引用对象会比遍历整个集合更有效率。

 

 

1、资源项目源码均已通过严格测试验证,保证能够正运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值