如果,把一个人看成一个HTTP Server

HTTP状态码和视角

在 RFC2616 - HTTP/1.1: Status Code Definitions 标准里,最常用的HTTP 状态码一共有3类

  • Successful - 2xx
  • Bad Request - 4xx
  • Server Error - 5xx

所有来自于外界的 request 和 反馈的response 就是和外界的连(guan)接(xi)

  • 2xx 是正常
  • 4xx 和 5xx 是异常。异常在英文里叫exception ,也就是例外

也就是说,这个”人”经常会说

  • 2xx - 好的,我可以 --> 结果,大家皆大欢喜
  • 4xx - 这不是我的问题,怪别人 —> 结果,让别人修bug,也得等别人修bug
  • 5xx - 是我错了,怪自己 —> 结果,老老实实修自己的bug去

一般人,对于强(wan)大(neng)的系统的预期:

  • 大部分时候都在「理所当然」回应2xx
  • 很少回应4xx
  • 主动修复5xx

一切总有例外

什么叫承受委屈?

  • 把别人的4xx,当做自己的5xx,默默修成2xx了

什么叫甩锅?

  • (本来就是三个和尚)
  • 把自己的5xx,说成别人的4xx,不是我的责任。

什么叫很难理解

  • 对request和response的定义,涉及到的概念解释不同
  • 每个人背后切分4xx和5xx的理念和逻辑不一样
  • 探寻root cause的动机不同

「始于君子,终于小人」

什么叫事前逞强?

  • 盲目乐观
  • 在对后市一无所知的时候,无畏答应了一堆2xx
  • 在对后市一无所知的时候,无知假设了一堆2xx

什么叫事后扯皮?

  • 甲:为什么定义成我的5xx,不是你的4xx?
  • 乙:为什么定义成我的4xx,不是你的5xx?
  • 丙:(边吃瓜,边浇油)

什么叫「你应该」?

  • 因为不是说好的 2xx吗
  • 因为别人家的HTTP Server都返回2xx

怎么办?”重构(知识结构)”

  1. 底线 - 丑话说前面,自己的代码记得写上 try - catch - finally 兜底
  2. 接纳 - 把处理异常(例外)的逻辑方法,从 catch - finally,改写成到处理已知的逻辑 switch (case), default
  3. 放下成见 - 去接纳一些世界上更多不能用简单逻辑解释的事情,比如中医,比如一些神经网络。

这个过程叫——学习做最好的自己。