第一章 基本的代码风格
第二章 养成良好的注释习惯
第三章 一般命名规范
第四章 数据处理
    1.十六进制常量的写法
        int i = 0x0000;
        int j = 0x0101;
        int m = 2L;
    2.浮点数的表示有误差!作为条件判断时不能与准确值比较,应使用区间比较。
        double i = 0.0;
        while (i < 10)
        {
            i += 0.1;
            Console.WriteLine(i.ToString());
            if(Math.Abs(i-6.0) < 0.01) //使用区间比较。if (i == 6.0)
            {
                Console.WriteLine("OK!");
            }
        }
        Console.Read();
    3.布尔类型是一个独立类型,而不是采用整形数值来表示。
    4.字符类型采用Unicode编码,需要两个字节的存储空间。因此char可转换为short/int/long或更宽类型。
    5.字符串类型,可以包含转义字符,用“@”可忽略转义字符。
        string str = "D:/Document/Photos/Flower.jpg";
    6.字符串判断为空(应尽量使用类型本身提供的功能)。
        if(str = string.Empty){}
        if(string.IsNullOrEmputy(str)){}
    7.string类型为不可变类型,对字符串所做的操作都产生了新的字符串实例。
        使用“+”连接string效率低,用stringBuilder类型的Append方法连接字符串效率更高。
    8.尽可能的使用内置关键字。
        lock(obj)
        {
            DoSomething(obj);
        }
        等同于:
        System.Threading.Monitor.Enter(obj);
        try
        {
            DoSomething(obj);
        }
        finally
        {
            System.Threading.Monitor.Exit(obj);
        }
    9.初始化一切变量!!!
    10.把对于一个变量的操作,写到一起,使思路更清晰。
    11.构建树形层次结构时,从叶节点开始构建,效率更高。
    12.枚举类型,用来表示一组相对固定的互斥的有限个数的可能性。
    13.枚举类型的命名(Month,ConsoleKey,FontStyles)。
    14.标记枚举,各项值都是2的幂数。
        [Flags] //标记枚举
        {
            None = 0,   //默认项
            Read = 1,
            Write = 2,
            Modify = 4,
            Execute = 8,
            ReadWrite = Read | Write,   //组合项
            FullControl = Read | Write | Modify | Execute
        }
    15.魔数(Magic Number),是指以数字形式出现在代码中的常量。为尽量避免使用数字,应预定义常量。
 16.避免不易读懂的长表达式。
 17.复杂表达式中需要注意带有副作用(改变操作数的值)的运算符。
第五章 分支结构
    1.采用“排除法”检查异常情况。(缺点:程序不会继续执行。)
 if(true)
 {
     MessageBox.Show("error!");
     return null;
 }
    2.使用“标志变量”记录错误。(优点:不影响程序的继续执行。)
 bool successful = true;
 for(int i = 0; i<10; i++)
 {
     try
     {
  File.Copy(xxx[i],xxx[i])
     }
     catch
     {
  successful = false;
     }
 }
 if(!successful)
 {
     MessageBox.Show("error!");
 }
 return successful;
    3.在C#中,"switch"语句不允许贯穿,每个标签必须以“break”结束。
    4.在switch语句中,应避免default子句的滥用。
 …
 default:
     throw new Exception("error!");
 …
    5.switch结构特点:每组测试一个表达式,应用于整数、枚举、字符串类型,书写简洁。
    6.无论是if还是switch结构,其目标是最恰当地表现出事物原本的逻辑关系,并尽可能的使代码简洁。
    7.分值结构,先判断最有可能成立的条件。
    8.只要不会引起严重的性能损失,那么可读性就是最重要的。
    9.使用“&&”、“||”,有短路效应。
    10.在错误处理中需要使用goto语句。使用goto原则是使程序代码的逻辑显得更为清晰。
第六章 循环结构
    1.在C#中,for循环和while循环同样灵活,两个结构可以互换,不局限于数值控制循环。
    2.for循环和while循环的差异主要在思维模式上。
    3.for循环更适合于简单的数值迭代。
    4.规则:凡是需要在循环过程中改变循环变量值的情况,都应避免使用for循环。
    5.用foreach结构轻松实现对数组和集合的遍历访问。
    6.用foreach本身有一个限制:整个遍历过程中对集合的操作应该是只读的。
    7.对数组或集合,用foreach;循环次数可预知,用for;循环结构复杂,循环次数变化,用while。
    8.循环变量一般使用i、j、k表示,i为最外层,j为中间层,k为最内层。
    9.循环嵌套最好三层以内。
    10.循环变量最好不要再循环外使用,在循环外使用更有意义的变量名(row,col)。
    11.循环变量只用于循环内部时,应在for,while语句中定义。
    12.避免循环变量的非常规应用,不要以可读性为代价使用所谓的“技巧”,应采用标志变量的方式进行控制。
 bool found = false;
 for(int i = 0; i < max; i++)
 {
     if(Match(data[i]) == true)
     {
  found = true;
  break;
     }
 }

if(found)
 {
     Console.WriteLine("Found");
 }
 else
 {
     Console.WriteLine("No Found");
 }
    13.应尽量优化循环,提高循环的效率。
    14.程序的可读性非常重要!!!
    15.循环是非常消耗资源的,应尽量避免在循环中做不必要的操作。
第七章 如何使用函数
    1.引入函数,为了实现代码复用,更重要的是隐藏细节。
    2.使用函数进行抽象,分解完成一件事的步骤,降低复杂度。
    3.函数重载的目的是方便调用者
 1)支持多种数据类型
 2)支持多种数据提供方式
 3)为复杂的参数提供默认值
    4.保持核心代码的唯一。
 各重载函数的核心功能应该由一个函数实现,真正的工作应该让最复杂的那个重载版本来完成。
    5.参数的设计。
 1)参数命名:描述性,明确意义。
 2)使用变长参数列表。(params string[] filenames)
 3)合理使用ref参数或out参数。有时可以定义一个结果或类,作为返回数据类型。
 4)参数的顺序:重->轻,入->出。
 5)重载函数参数一致性。
    6.参数检查
 1)检查零值和空引用。
 2)检查枚举类型。
 3)防止数据被篡改,对于引用类型,应先制作一份私有副本,再进行验证和处理。
 4)检查数据合法性的位置。
    7.离开函数的三种方式:自然结束;return;异常。
第八章 结构与类

转载于:https://www.cnblogs.com/kimblog/archive/2011/04/28/2279491.html

更锋利的C#代码-读书笔记相关推荐

  1. 锋利的Jquery【读书笔记】 -- 第四章 jQuery中的事件和动画

    锋利的Jquery读书笔记 第三章 jQuery中的DOM操作 jQuery中的事件 事件绑定 bind方法 合成事件 hover方法 toggle方法 事件冒泡 事件对象 停止事件冒泡 阻止默认行为 ...

  2. 《代码整洁之道》细节之中自有天地,整洁成就卓越代码 读书笔记

    <代码整洁之道>细节之中自有天地,整洁成就卓越代码 读书笔记 There are only two hard things in Computer Science: cache inval ...

  3. 第一行代码读书笔记1+常见错误分析

    1.eclipse里面的视图在 windows ---- show views ---- other ----- Android 2.需要掌握Logcat的使用 Logcat是你在茫茫人海中寻找到一片 ...

  4. 第一行代码读书笔记(Chapter2 探究新语言,快速入门Kotlin编程)

    准确来说,Java是解释性语言,Kotlin能被编译为class文件,再在虚拟机中运行 Kotlin几乎杜绝了空指针异常 运行Kotlin代码:IDEA创建Kotlin项目:在线运行kotlin代码: ...

  5. 第一行代码读书笔记3+错误分析

    as中怎么删除项目 file---project structure 然后点击左边的 + 与 - 进行删除. 参考资料:http://jingyan.baidu.com/article/c74d600 ...

  6. 【锋利的Jquery】读书笔记五

    jquery表单 表格操作 表单从基本的得到和失去焦点表单验证 <script type="text/javascript">$(function(){$(" ...

  7. 日报2015/11/11(第一行代码读书笔记)

    SQLite数据存储 这里需要说明的是,要使用这种存储,在开发的时候最好是使用模拟器或者把真机root,不然没有权限访问数据库所在的位置.po主直接把三星的s4用刷机大师刷成了别的系统,顺便root掉 ...

  8. 日报2015/11/17(第一行代码读书笔记)

    ContentResolver 使用内容提供器是Android实现跨程序共享数据的标准方式. 基本用法 这里要访问的是通讯录,里面已经有一个系统自己的ContentProvider 数据查询无非是要最 ...

  9. 《人格:更好得认识自己》读书笔记

    这本书不是要改变你的人格,而是说要理解你的人格里包含了什么,怎么利用这些信息做出明智的选择.这就需要很多东西,其中就包括自知.如果本书帮你多了解一点这些宝贵的东西,那写这本书就是值得的. 1.人格特质 ...

最新文章

  1. Linux下查找nginx配置文件路径
  2. 自己构建GlassFish 4.0快照
  3. LeetCode 893. 特殊等价字符串组
  4. 五周第二次课(4月19日)
  5. php怎么将网页另存为mht代码,mht转html代码(php)
  6. [转]网上整理 Web JS 通用
  7. java类加载器说法正确的_Java中的类加载器
  8. 数据库分页数据丢失问题
  9. 单播、广播、组播的区别和特点
  10. python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的
  11. 钢琴作品常用体裁名称及曲式
  12. python常用模块:re模块案例、subprocess
  13. Google Earth Engine(GEE)——Python干旱严重程度案例分析
  14. 易經大意(10) 三和 韓長庚 著
  15. 计算机广告设计发展前景,2018广告设计与制作专业就业前景和就业方向分析
  16. Java入门基础知识点一
  17. JS实现水波涟漪特效
  18. Macbook pro md318 升级SSD以及8G内存过程以及问题总结
  19. Linux lds 文件格式分析(一)
  20. 平分七筐鱼c语言y,C语言平分7筐鱼代码及解析

热门文章

  1. jeasyUI的treegrid批量删除多行
  2. 【152】C# 操作 Excel 杂记
  3. ESXi 功能 (看到的觉得有用就发出来了)
  4. 小小树微博制作记录笔记(一)
  5. hdu 1102 pku 2421 解题报告
  6. Oracle常用监控SQL
  7. Android Launcher 分析
  8. 解决wiremock中velocity脚本(.vm)中文编码乱码问题
  9. postMan下使用xdebug
  10. cenos 安装 phpredis 扩展