一直在给党做项目,我们这些可怜兮兮的学生都没太多时间安排自己的活动了,写个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. Sublime Text2 快捷键设置

    设置Tab两个空格: 点击 Preference -> Settings-User "tab_size":2, "translate_tabs_to_spaces& ...

  2. YII学习,初体验 ,对YII的一些理解.

    先说点没用的: 不会选择,选择后不坚持,不断的选择.这是人生中的一个死循环,前两一直迷茫.觉得自己前进方向很不明朗.想去学的东西有很多.想学好YII,想学PYTHON 想学学hadoop什么的,又想研 ...

  3. maven+springmvc+easyui+fastjson+pagehelper

    1.maven配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  4. Google机器学习笔记 4-5-6 分类器

    转载请注明作者:梦里风林 Google Machine Learning Recipes 4 官方中文博客 - 视频地址 Github工程地址 https://github.com/ahangchen ...

  5. Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

    原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题. ...

  6. Visual C++编程命名规则

    一.程序风格:      1.严格采用阶梯层次组织程序代码:      各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行.要求相匹配的大括号在同一列,对继行则要求再缩进4格.例如 ...

  7. IP defragment

    snort IP defragment 模型: BSD favors an original fragment with an offset that is less than or equal to ...

  8. html5实现烟花绽放效果

    来源地址:http://codepen.io/whqet/pen/Auzch 1.HTML5 你懂的,先看效果: 2.Html代码 <!-- setup our canvas element - ...

  9. Aix5~6小机运维

    1,0516-787 extendlv: Maximum allocation for logical volume hd3        is 512 smitt chlv改max logical ...

  10. DBS小结

    <数据库系统原理>主要介绍的是数据库技术的基本原理.方法和应用技术. 它可以使我们能有效地使用现有的数据库管理系统和软件开发工具,掌握数据库结构的设计和数据库应用系统的开发原理. 在这里, ...