前言

我有个技能,就是把“我”说的听起来特别像“老子”。

以前是小喽啰的时候,会跟领导说“我!不加班。”,听起来就像“老子不加班!”一样。到最后发现,我确实没有把计划内的工作拖到需要加班才能完成,这个“老子”也就慢慢的被承认了!到后来我带队的时候,我说“我不让你们加班!”,这个时候听起来绝对不像“老子不让你们加班!”,后来他们也真的不加班就把项目漂亮的做完了,相信他们愿意承认我有“老子”的本事。

哈哈!这个有点妄自尊大了哟。做到就可以了,千万别这么讲啊!低调,低调。不过什么事情我都能做到不加班,这事是真的。在这一系列文章里我要告诉大家一系列的实践经验,实施之后会发现:你能够一次交付了!再也不用加班了!有更多时间陪老婆孩子了!有更多时间陪哥们兄弟了!还可能有更多事情去把妹了!……总之好处多多。

本文讲述第一个原则——这真的该用try-catch吗?以后会不定期更新。

这真的该用try-catch吗?

用try-catch之前一定要三思啊!其实绝大多少情况都是不应该用try-cath的。机器的行为具有非常大的确定性,尤其是CPU,它的处理过程就是一系列的与、或、非的组合。曾经在http://bbs.pfan.cn/上看到一则广告,一个程序员研究出来成果了——机器已经具有了智能!为什么呢?机器能给出不确定的结果啊——有时候你用的操作系统、软件非常流畅好用,有时候仿佛专门使坏一样。靠!把程序的bug当人工智能,也是醉了。人才是比较“欠”的,你让他输入数字,可偏偏输入abc;你让他输入abc,他偏偏输入数字。所有欠揍的机器背后都有一群欠揍的程序员!

所以开发中要灵活处理的地方只有处理自然人跟机器交互的地方!其他地方能够约定清晰的时候尽量约定清晰,而不是依赖异常处理与恢复机制。

约定清晰说明对程序内部的行为完全掌握了,这样的代码执行效率高、好调试。换句话说代码中用的try catch越少,程序越稳健。java对错误处理只引入了异常处理机制,所以java中有两类异常checked和unchecked,unchecked本质上是错误,一个已经发布的程序原则上是不允许出现unchecked的异常的。c c++ c#等语言引入了assert机制,这种机制会使得程序遇到错误的时候直接中止执行,这种机制,错误没法隐藏。
 
能够约定清晰的时候尽量约定清晰,是为了现在不加班啊!哥们!约定清晰了,写代码的时候是不是就流畅了啊,是不是不用写那么多破坏结构的try-catch了啊!否则写代码跟便秘一样,不加班才怪呢!
 
不要用try-catch让错误隐藏起来,是为了以后不加班啊!哥们!错误隐藏起来,以后出了类似“人工智能”的错误搞死你!哭爹喊娘,找都找不到!
 
不要理解错误啊!约定清晰包括把异常也考虑进去,微软的员工写了一本书好像叫《怎么编写无错误的代码》,里面提到很多错误都在错误处理里面。异常表示什么——可能性和无法杜绝。需要考虑用异常的地方有——IO和别人的代码。IO好理解,网络通信、文件读写、数据库连接等等。别人的代码也很好理解啊——你不欠,不代表别人不欠啊。不要假定别人都是欠的哦,这样你还得考虑别人怎么欠的,多累啊。就像生活一样,不要以恶意揣摩别人,这样你将会生活在恐惧中!先假设别人不欠,等出问题了,骂他揍他都行——这事儿得你们自己负责,别说我教唆的!
 
关于这个原则,很多介绍具体实践方法的文章都提到了,这就有一篇——assert()函数用法总结
 
发现很多只会java的或者先学java的对这个原则不能接受。哪些从汇编、C、C++一路斩上来的很容易接受这个原则。不接受不要紧,别上来就喷我!喷完喷前,还是都思考一下。

不加班的实践(1)——这真的该用try-catch吗?的更多相关文章

  1. 这真的该用try-catch吗?

    前言 我有个技能,就是把“我”说的听起来特别像“老子”. 以前是小喽啰的时候,会跟领导说“我!不加班.”,听起来就像“老子不加班!”一样.到最后发现,我确实没有把计划内的工作拖到需要加班才能完成,这个 ...

  2. 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践

    目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...

  3. DDD实践反思

    某大型互联网公司于2019年开始在XX中台财务域进行DDD实践.事后回顾,整体并没有达到预期的效果,个人也做了很多的反思和总结,形成此文. 1. 背景 为什么当时要实践DDD?其中的缘由比较复杂,可以 ...

  4. IT痴汉的工作现状24-Just for fun

    早在大学一开始我进行Linux的学习了,那时大家都跟Windows Xp玩的火热,而我从来就不走寻常路,在XP上安装了VMware虚拟机搞起了Linux的探索.这简直让我眼界大开,每天都和那么多的国外 ...

  5. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  6. [2014-11-11]使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  7. 扩展RBAC用户角色权限设计方案(转载)

    扩展RBAC用户角色权限设计方案  来源:https://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html https://blog.csd ...

  8. 【VMware vSphere】再谈VMware vSphere

    写在前面 在进行操作vSphere产品之前,就曾经对它进行过一个简单了解:[运维]VMware vSphere简单了解,现在再回头看,发现了解的真的是太简单了.经过前一段时间学习之后,对它又有了新的感 ...

  9. 深入学习Motan系列(二)——服务发布

    闯关经验: 袋鼠走过了第一关,顺利搭建出了Demo,信心爆棚.不过之后,心想怎么去研究这个框架呢.查了一下,官方文档,好像没什么东西可以研究啊.后来,又搜了搜博客,因为这是微博的框架嘛,所以搜索时用百 ...

随机推荐

  1. sikuli+java实例

      新建java工程,导入sikuli-script.jar包 public class TestSikuli { public static void openPage() throws FindF ...

  2. AngularJs创建服务

    在开发中我们总是需要向服务器请求同样的数据,那么我们如何来把他们提取出来进行封装一下呢,这就需要用到服务了. 需要用到关键字factory了. <!DOCTYPE html> <ht ...

  3. nyoj 102 次方求摸 快速幂

    点击打开链接 次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测 ...

  4. MFC学习 消息钩子使用

    HANDLE h_KeyBoard; //当前进程的钩子, 另外WH_KEYBOARD_LL, 与WH_MOUSE_LL参数时, 是获取的底层的消息, 相当于获取的全局的 g_hKeyBoard = ...

  5. Windows 2008 IIS7.0安装FTP教程 IIS7.5 配置多用户FTP

    一. 安装IIS.右键[我的电脑],选择[管理]打开.     选择[角色],选择[添加角色]打开.                   二. 配置DOS.输入: CACLS "%Syste ...

  6. SMTP邮件发送命令

    第一步,远程登录smtp服务器 在命令行窗口输入 telnet smtp.163.com 25 然后回车第二步,用户登录 输入 helo 163.com 回车,这是向服务器表明你的用户身份250 OK ...

  7. Vertex中实现每顶点光照的镜面高光效果

    1,基础知识讲解 一个物体在自然界会收到三种光的影响,周围的环境光.漫反射和镜面反射.那么对于计算机要想模拟现实中的光照,就应该也会实现这三种基本光照->环境光.漫反射.镜面高光.对于这三种光照 ...

  8. unknown software exception

    打开cmd 输入下面代码,回车,等跑完即解决for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

  9. Oracle对表解锁的操作

    1.查出被锁的表 SELECT  lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name, o.owner,o.object_na ...

  10. rel=nofollow

    nofollow是什么意思? nofollow是html标签的一个属性值,Google推荐使用nofollow,告诉机器(爬虫)无需追踪目标页,是指禁止蜘蛛爬行和传递权重,但是如果你是通过sitema ...