编写高质量代码改善C#程序的157个建议——导航开篇

 

前言

  由于最近工作重心的转移,原来和几个同事一起开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展。打个比方,现在已经上线的项目行政案件的Web管理网站(代码还没那么多相比较即将要做的刑事案件吧),而新项目是刑事案件的Web管理网站,之后行政和刑事这两个网站是要合并的。前段时间也和同事以及上司的讨论结果就是新建一套项目,考虑将原有系统各种组件进行重新封装、优化、提升扩展,然后先开发刑事案件的网站,待刑事案件开发完毕将原有项目按照刑事案件的思路重新整合。

  最近刚开始进行查看老代码也发现太多的问题,感觉无从下手,有些东西当时都是只是实现了功能而已,由于自己经历和经验都还很有限。所以打算来学习一下,无独有偶发现了这本书,哈哈,自己感觉也很不错,所以想在此做下笔记。

为什么要来看这本书

  写此书的作者在书中也有明确的记录。作者一直在思考一个问题:就是到底什么样的编程书籍能够帮助入门者快速进阶?所谓“入门者”指的是已经可以使用一门语言来编写程序,但是不太明白如何编写高质量代码的人。作者回忆自己开发生涯的入门阶段发现,那时候常常被以下三类问题所困扰。

  第一类来自于语言本身。

  1、如何格式化字符串才是最高效的?

  2、基本类型间或其他CLR类型间的转换怎样才算是最高效的?

  3、for和foreach有什么区别,何时该用for,何时又该用foreach?

  4、什么是Dispose模式,为什么要释放资源,如何释放资源?

  5、多线程应该选择何种方式来开启和结束,各线程之间为什么要同步,如何同步,如何锁定资源?

  第二类来自于设计框架如果你对编程充满热爱,相信你的大脑很快就会充满以下这些问题

  1、使用单例模式还是静态类,为什么有了静态类还需要单例模式?

  2、该使用静态方法还是实例方法,它们的本质区别是什么?

  3、如何使用异常才是最正确的,什么时候抛出异常,什么时候“吃掉”异常,为什么需要自定义异常?

  4、如何避免过多的条件判断分支?

  5、如何保证程序的数据安全和通信安全?

  第三类问题最常见,可能来自于编码习惯和编程思想。

  1、一个文件只包含一个类比较好,还是一个文件可以包含多个类?

  2、如何命名才是专业级别的?

  3、应该使用抽象类还是接口?

  4、到底什么才是真正的面向对象编码,我这样编程够面向对象吗?

  5、什么是单元测试,如何编写单元测试?

如果你也曾问过自己类似的问题,说明你已经为专业程序员做好了准备了。当然如果你还是苦于找不到答案的话,或许你也可以来阅读下此书,相信你会收获颇丰的。自己大致看了一下此书,感觉作者还是花了很多心思的,很多知识讲解的还是都很不错的,在此也只是希望更多的人受益,当然不喜勿喷额。

本书大纲目录

 第一部分 语言篇

  1、第一章 基本语言要素

  2、第二章 集合和LINQ

  3、第三章 泛型、委托和事件

  4、第四章 资源管理和序列化

  5、第五章 异常和自定义异常

  6、第六章 异步、多线程、任务和并行

第二部分  架构篇

  7、第七章 成员设计

  8、第八章 类型设计

  9、第九章 安全性设计

第三部分 编码规范及习惯

  10、第十章 命名规范

  11、第十一章 代码整洁

  12、第十二章 规范开发行为

总结

   从书的开头看起到目录,这本书真真的深深的吸引了我,好像就如作者所说,正中下怀一样。作者所想的那三类问题,有些问题我曾经的确也考虑过,要去找为什么,但是后来放弃了,或者遗忘了,不过今天终于又让我看到了这似曾相识的感觉,这次我要将这些问题一一的剖解,希望自己能多多的学习书中的知识和奥妙吧。

  看了上面的,也许很多人和我有同样的想法,要好好来看看这本书,那么我希望大家可以将看书后的一些想法或者问题,发布出来让大家一起来探讨一下,让我等菜鸟也可以多多的见识见识。暂时我也在考虑要不要入手一本,这不刚刚在网上下载的PDF。由于此书的章节并没有关联性,也可以是你需要那些知识,直接看那些章节就可以了。所以自己打算在工作中遇到问题可以直接对症下药了。

 
 

C#程序的157个建议的更多相关文章

  1. 编写高质量代码改善C#程序的157个建议[1-3]

    原文:编写高质量代码改善C#程序的157个建议[1-3] 前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理 ...

  2. 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型

    今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...

  3. 编写高质量代码改善C#程序的157个建议:第17个建议之多数情况下使用foreach进行循环遍历

    今天是我看<编写高质量代码:改善C#程序的157个建议>第二遍的时候了,看完这本书的确是受益匪浅,学到了很多东西,也明白了很多道理. 里面的代码我每个都调试了一遍,有时候是有些出入的,可能 ...

  4. 读书--编写高质量代码 改善C#程序的157个建议

    最近读了陆敏技写的一本书<<编写高质量代码  改善C#程序的157个建议>>书写的很好.我还看了他的博客http://www.cnblogs.com/luminji . 前面部 ...

  5. 编写高质量代码改善C#程序的157个建议——建议157:从写第一个界面开始,就进行自动化测试

    建议157:从写第一个界面开始,就进行自动化测试 如果说单元测试是白盒测试,那么自动化测试就是黑盒测试.黑盒测试要求捕捉界面上的控件句柄,并对其进行编码,以达到模拟人工操作的目的.具体的自动化测试请学 ...

  6. 编写高质量代码改善C#程序的157个建议——建议156:利用特性为应用程序提供多个版本

    建议156:利用特性为应用程序提供多个版本 基于如下理由,需要为应用程序提供多个版本: 应用程序有体验版和完整功能版. 应用程序在迭代过程中需要屏蔽一些不成熟的功能. 假设我们的应用程序共有两类功能: ...

  7. 编写高质量代码改善C#程序的157个建议——建议155:随生产代码一起提交单元测试代码

    建议155:随生产代码一起提交单元测试代码 首先提出一个问题:我们害怕修改代码吗?是否曾经无数次面对乱糟糟的代码,下决心进行重构,然后在一个月后的某个周一,却收到来自测试版的报告:新的版本,没有之前的 ...

  8. 编写高质量代码改善C#程序的157个建议——建议154:不要过度设计,在敏捷中体会重构的乐趣

    建议154:不要过度设计,在敏捷中体会重构的乐趣 有时候,我们不得不随时更改软件的设计: 如果项目是针对某个大型机构的,不同级别的软件使用者,会提出不同的需求,或者随着关键岗位人员的更替,需求也会随个 ...

  9. 编写高质量代码改善C#程序的157个建议——建议153:若抛出异常,则必须要注释

    建议153:若抛出异常,则必须要注释 有一种必须加注释的场景,即使异常.如果API抛出异常,则必须给出注释.调用者必须通过注释才能知道如何处理那些专有的异常.通常,即便良好的命名也不可能告诉我们方法会 ...

随机推荐

  1. 十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见)

    原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的 ...

  2. ViewPager用法

    第一图:          页面中填充内容是随机关键词飞入和飞出动画效果,随后会更新,如今请先无视吧 ---2015-02-27--- 两年后最终更新了,网上都能搜到的,哎 无奈太懒http://bl ...

  3. 阐述linux IPC(两):基于socket进程间通信(下一个)

    [版权声明:尊重原创.转载请保留源:blog.csdn.net/shallnet 要么 .../gentleliu,文章学习交流.请勿用于商业用途]     其中两个进程通信,有两个过程,以彼此的过程 ...

  4. poj 2449 Remmarguts&#39; Date 【SPFA+Astar】【古典】

    称号:poj 2449 Remmarguts' Date 意甲冠军:给定一个图,乞讨k短路. 算法:SPFA求最短路 + AStar 以下引用大牛的分析: 首先,为了说话方便,列出一些术语: 在启示式 ...

  5. 使用JAVA打开本地应用程序相关的文件

    在该项目中需要运行本地文件或应用程序,JDK6添加后Desktop类别.可以直接使用.这使得有可能在程序中无论什么应用程序可以打开的.例:打开pdf文件,当地福昕是默认打开.执行程序将使用福昕开放pd ...

  6. 一起学习android使用一个回调函数onCreateDialog实现负载对话(23)

    效果图: 有时候我们须要去做一个Activity启动时的数据载入对话框,关于对话框的各种实现能够通过一起学android之对话框 Dialog的创建(7)来完毕,在这里另外介绍一个,利用onCreat ...

  7. Ubuntu环境下的Redis 配置与C++使用入门

      Redis是一个高性能的key-value数据库. Redisedis的出现,非常大程度补偿了memcached这类key/value存储的不足,在部分场合能够对关系数据库起到非常好的补充作用.它 ...

  8. hadoop得知;datajoin;chain署名;combine()

    hadoop一种简化机制来管理job和control作业之间的非线性依赖,job对象mapreduce表明. job该目的是通过使实例化jobconf对象的构造函数的工作落实. x.addDeopen ...

  9. Middleware详解

    Middleware详解 在第1章项目结构分析中,我们提到Startup.cs作为整个程序的入口点,等同于传统的Global.asax文件,即:用于初始化系统级的信息(例如,MVC中的路由配置).本章 ...

  10. JavaScript语言基础知识点图示

    原文:JavaScript语言基础知识点图示 一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运 ...