一直在给党做项目,我们这些可怜兮兮的学生都没太多时间安排自己的活动了,写个blog都要在中午休息的时间。

项目用的是.NET,本来也想分享一些干货点的东西,但博客园里的前辈把这类文章已经分享泛滥了,想要原创一些有价值的东西其实挺不容易的,能够在前人基础上拓展一下就已经挺不错了,相信每一个认真经营博客的人都挺有体会,所以在博客记录一些平时项目开发的感悟也不失为一个好地方。

Assert在整个项目开发中的重要性是很多人一直都忽略掉的,这一点从我接触到的项目来看,挺明显,可以说,它的出现频率与项目代码的质量成正比,如果一段代码综合水平比较高,那么几乎总会出现至少那么一两个断言,而断言的重要性又是在很多代码质量类的书上一直在强调的。

嘛,既然断言在Release时不会出现在最终版本中,那么Debug版本时,它是如何提升开发效率的?

        private void ShowProjectInfomation(string projectID)
{
Debug.Assert(!string.IsNullOrEmpty(projectID));
}

假设我们需要一个项目的ID(projectID),从数据集中取出这个ID对应的一个项目的具体信息,这个时候的背景条件是projectID一定会传进一个值,因为该函数并不以供给客户调用的形式存在。这个时候,如果这样写,并不是最好的做法。

        private void ShowProjectInfomation(string projectID)
{
if (string.IsNullOrEmpty(projectID))
{
throw new ArgumentNullException("项目ID不可为空");
}
}

抛异常的好处坏处很多书也有提及,此不赘述。

使用Assert,如果出现参数违法,此时开发阶段可以修正此错误,保证传进来的参数一定是合法的,那么在最终版本中,就避免了影响性能的错误检测代码。

啐。。。写文章的描述能力真的挺重要的,感觉好没耐心去准备一篇高质量文章,往往是想到什么就写。。。

这里想抱怨一下国家的一些项目,其实和坊间传的差不多,国家的项目的代码质量整体来说并不好,有些水平很好的老师也不太注重代码本身的质量,最基本的DRY并不遵守,导致干活儿的学生也盲目效仿,到处都有Bad Smell,代码规范不完整统一,导致后来维护的,编写的,都很难轻松地干完活儿。嗯。。。好在钱发的还挺多的。。。

习惯使用断言Assert的更多相关文章

  1. C# 断言 Assert

    重构-断言 现象:某一段代码需要对程序状态做出某种假设 做法:以断言明确表现这种假设 动机: 常常有这种一段代码:只有某个条件为真是,该改名才能正常运行. 通常假设这样的假设并没有代码中明确表现出来, ...

  2. SpringBoot(20)---断言(Assert)

    SpringBoot(20)---断言(Assert) 我们在写单元测试的时候,除了接口直接抛异常而导致该单元测试失败外,还有种是业务上的错误也代表着该单元测试失败.好比我们在测试接口的时候, 该接口 ...

  3. 断言(assert)的用法

    我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”. 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解 ...

  4. C语言中断言ASSERT

    我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错". 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种&qu ...

  5. 使用断言assert

    之前有看过关于Assert的书,但是不懂得如何去用,最近看别人写的代码有用这个断言(assert),今天自己动手看看如何使用断言. 断言(assert)的语义如下:如果表达式的值为0(假),则输出错误 ...

  6. 断言Assert的使用

     转载地址:http://www.cnblogs.com/moondark/archive/2012/03/12/2392315.html 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏 ...

  7. K:java 断言 assert 初步使用:断言开启、断言使用

    @转自天地悠悠的个人博客 主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言是可以局部开启的,如:父类禁止 ...

  8. java的断言(assert)

    概述 在C和C++语言中都有assert关键,表示断言.在Java中,同样也有assert关键字,表示断言,用法和含义都差不多.在Java中,assert关键字是从JAVA SE 1.4 引入的,为了 ...

  9. JavaScript之调试工具之断言assert

    1.单点断言 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

随机推荐

  1. JDBC之一:JDBC快速入门

    (1)下载Oracle的JDBC驱动,一般放在$ORACLE_HOME/jdbc/lib目录,关于驱动的版本请见: http://elf8848.iteye.com/blog/811037 随Orac ...

  2. 如何使用composer?

    /** *@测试环境:我笔记本 本地xampp集成环境 *@操作系统:Windows 7 **/   安装方法:官方有很详细的介绍,这里就不重复造轮子了. 官方链接:http://docs.phpco ...

  3. python操作csv-xls完善后的代码

    #coding:utf-8 #导入相应模块 import csv,xlwt,sys,os,fnmatch,xlrd from xlutils.copy import copy #对xls文件中的绝对值 ...

  4. Immediate Decodability(字典树)

    Immediate Decodability Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  5. MySQL5.7新特性笔记

    001.用户验证方式上的变化 MySQL5.7已经不要支持mysql_old_password验证插件,也不再支持old_password函数,也就说old_passwords也就不能被设置成1了.

  6. Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql

    select       distinct b.lvl                                                      层次, b.OPERATION_SEQ ...

  7. 我所不知道的 Chrome 开发者工具

    http://www.oschina.net/translate/things-i-didnt-know-about-chrome-devtools 自打我开始进行Web开发后,我就一直将Firebu ...

  8. GO学习资源站

    GO语言学习资源网站 http://golangtc.com https://gobyexample.com http://golang-examples.tumblr.com

  9. 善待Redis里的数据--Unable to validate object

    又是一篇关于姿势的文章,为什么是”又”呢?因为上个星期刚写完一篇关于Apache Commons Pool的正确使用姿势的文章,点击此处阅读. Redis为我们提供便利的同时,我们也要善待里面的数据 ...

  10. 【POJ 1182 食物链】并查集

    此题按照<挑战程序设计竞赛(第2版)>P89的解法,不容易想到,但想清楚了代码还是比较直观的. 并查集模板(包含了记录高度的rank数组和查询时状态压缩) *; int par[MAX_N ...