关于类型安全的思考

这两天一初学python的哥们频频吐槽C#这样赋值时对类型的检查,让问题变难变复杂了. 解释几次类型检查的好处,效果不明显. 
我也反思了一下, 类型检查真的是额外的包袱么?
答案 是忠言逆耳利于行。

你是君王,语言是臣子,在君王犯错的时候: 一个臣子在事后说“你让我干的,不是我的责任”,然后笑眯眯的看着屏幕前苦思冥想“到底哪里出了问题”的你。 另一个臣子确在第一时间就死谏指令的“不可行之处”。

哪个能真正帮助你治理好越来越大的规模,越来越错综复杂的关系?

让一条明显不可行的赋值语句被执行,并不会简化问题,反而是让问题进一步扩散了,是对异常结果更深的困惑。

回想一下那些在屏幕抓着头发,然后恍然大悟的时刻:“原来是这!stupid! 这么低级的错误!”。 有多少这种疏忽是在一开始就能被发现和避免的呢?

“0.5”忘转成数值就拿来做运算,结果是不断扩散的字符串。 明明想修改集合里的元素的值,结果整个集合被替换成了一个值。 汇款给刘韬误写成了刘涛,银行默默建了个新账户,在你困惑钱怎么不见了的时候,银行表示“呵呵”。

在把以上事情都办砸然后,管家拍着胸脯报告说“主人,您交代的事情都安排好了!”。 你确信这管家不是敌人派来的卧底么?

时间: 2024-08-27 12:09:41

关于类型安全的思考的相关文章

有关.NET参数传递方式的思考

年关将近,整个人已经没有了工作和写作的激情,估计这个时候很多人跟我差不多,该相亲的相亲,该聚会喝酒的聚会喝酒,总之就是没有了干活的心思(我有很多想法,但就是叫不动我的手脚,所以我只能看着别人在做我想做的事,吃我想吃的东西.).本人由上个月的每周四五篇,到现在的文章缩短到每周一篇,说个实话,现在的一篇也有不想写的心思了(这一篇还是咬着牙写的,感觉实在是写不动了,写博客太折腾人了,谁写谁知道啊!),不过还是希望写出来可以帮到大家,如有写的不足的地方,还望大家多多指正,知识在于总结和反思,对别人也对自

关于.NET参数传递方式的思考

年关将近,整个人已经没有了工作和写作的激情,估计这个时候很多人跟我差不多,该相亲的相亲,该聚会喝酒的聚会喝酒,总之就是没有了干活的心思(我有很多想法,但就是叫不动我的手脚,所以我只能看着别人在做我想做的事,吃我想吃的东西.).本人由上个月的每周四五篇,到现在的文章缩短到每周一篇,说个实话,现在的一篇也有不想写的心思了(这一篇还是咬着牙写的,感觉实在是写不动了,写博客太折腾人了,谁写谁知道啊!),不过还是希望写出来可以帮到大家,如有写的不足的地方,还望大家多多指正,知识在于总结和反思,对别人也对自

C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)

一.为什么使用泛型? 泛型其实就是一个不确定的类型,可以用在类和方法上,泛型在声明期间没有明确的定义类型,编译完成之后会生成一个占位符,只有在调用者调用时,传入指定的类型,才会用确切的类型将占位符替换掉. 首先我们要明白,泛型是泛型,集合是集合,泛型集合就是带泛型的集合.下面我们来模仿这List集合看一下下面这个例子: 我们的目的是要写一个可以存放任何动物的集合,首先抽象出一个动物类: //动物类 public class Animal { //随便定义出一个属性和方法 public Strin

关于迭代測试的一些思考

作者:朱金灿 来源:http://blog.csdn.net/clever101 一个软件的功能的越来越多,怎样建立一个规范的測试流程来保证对开发的功能进行充分的測试,是摆在我们面前的难题.在改动bug中经常会出现一种"按下葫芦浮起瓢"情形--改动了A模块的bug,却造成了原来測试没有问题的B模块出现了新的问题.这就促使我们思考:怎样保证測试的百分百的覆盖率.为此我设想一种迭代測试和迭代公布的流程.这个流程详细是这种:全部功能測试分为常规功能測试和新功能測试.所谓常规功能測试是指之前測

关于重构工作的一点思考

最近两周一直忙着和重构相关的事情,本文将简要概述从开始制定重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考. 起因: 本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构. 具体表现: ● 分层不清,sql哪都有,dao有.service也有,就差controller没写了.同样dao也包含业务逻辑. ● sql用的是spring jdbc,并没有使用mybatis,导致sql写起来有些复杂,封装不够基本都是原始sql

php各种设计模式简单实践思考

前言 我一直觉得什么框架,版本,甚至语言对于一个coder来说真的不算什么,掌握一个特别高大上的一个框架或者是一个新的,少众的语言真的不算什么,因为你可以,我要花时间也可以,大家都是这样的.所以基本的显得额外重要,即是算法和数据结构,再就是好的设计模式了,,,听过一句话,是好的数据结构是让计算机更快的工作,而一个好的设计模式则是使开发者工作的更快! 单例模式 单例模式特点 $_instance 必须声明为静态的私有变量 构造函数和克隆函数必须声明为私有的,这是为了防止外部程序 new 类从而失去

由爬虫引发的思考

前言 花了两天时间写一个简单的爬虫程序.目前所用的技术十分简单.就是获得目标页面的html文档内容,然后解析其中有用的内容.既没有实现模拟登陆,也没有任何防止反爬虫的措施,甚至没有使用多线程.不过在其中遇到的问题还是引发了我很多的思考与问题,比如爬虫的合法性问题以及爬虫的危害等.于是写下这篇文章记录一下.由于本人经验有限,引用参考了大量文章,有问题请指出. 爬虫的作用与危害 爬虫的作用 网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是

第二十三篇:信号机制的两个思考

前言 前文介绍了最基本的信号接收和处理,但这有无可能带来一些问题呢? 本文将通过两个思考,来分析可能带来的问题以及解决方法. 思考一:中断的系统调用 如果用户正在执行系统调用,如 write read.如果这个时候程序跳转到了信号处理函数后返回,则是否重新执行这个系统调用? 结论 这要分情况讨论:如果是磁盘 I/O 的系统调用,则自然需要自动重启:而如果是终端 I/O,则不需要自动重启. 在信号函数族中,有很多函数都是支持设置是否重启选项的.当然,用户也可以使用类似下面的代码自行实现重启: 思考

sql monitor生成不了报告& FFS hint不生效两个问题思考

事情的发生就是这么偶然,一步步的深入才能汲取到更深入的知识~~ -------------------START-------------------------------------------   来了一个query running longer than 4hours的邮件,来看看里面有哪些sql: SID    SERIAL#    INST_ID SQL_ID        Run_in_sec OS_user     MACHINE       SQL_TEXT