标准规范案例 | 产品经理要改变产品世界,但不要改变国际规范
第11期:标准规范
我曾经见过很多产品经理描述关于格式校验的时候会自创校验方式。
比如:这是一个自创的电子邮件地址校验格式:
不允许输入#*($%&)
不允许有两个@@
不允许以@开头或者结尾
.....
这样的校验格式,你觉得好用吗?
上面的自创格式看起来很有创意,但是这样并不能够校验出完整的电子邮件地址格式,会很容易出现各种错误。
因为电子邮件地址格式是有规范的,这是经过众多专家讨论,形成的国际规范。
RFC-5322是定义电子邮件地址格式规范:https://datatracker.ietf.org/doc/html/rfc5322
举例,下列几个地址格式都是符合规范的
a.b.c@d.com
a.b.c@d.com.cn
点号、空格、下划线、中划线(减号)都是允许的字符。我们再来反过来看上述的格式描述:
1.除了原来定义的之外,还有很多不支持的符号,比如说!{}都没有列出来。
2.@前后有可以几个点没有列出来。
3.@不可以在开头或者结尾,那么.@.是否符合上述格式要求?
开发人员的通常行为模式是,打开某搜索引擎,找到第一个符合条件的正则表达式,然后就开始使用了。
测试人员的通常形式模式是,找几个常用的电子邮件地址格式进行一下测试,没有问题就算过去了。
整个过程当中,缺少必要的质量保证手段。不管是需求,还是开发,还是测试。都是在凭感觉做事。然后这样的代码生效后发布到生产环境当中去。它很可能是一个质量隐患和安全隐患。
有一个系统需要发送国际短信,以帮助在海外的用户一样能够及时收到通知。不同的国家和地区可能收到的文字会是对应的语言版本。因为要接入第三方国家或者地区的短信服务提供商的系统,所以需要将想发送的短信,目标手机号等信息传送给对方的系统。
但是这个第三方系统没有遵照国际规范来约定国家区号。所以,本侧系统的定义的时候根据自己的经验,写上了相应的区号,例如:0086。
国家的区号,缩写等也是有国际规范的:https://countrycode.org/
国际电话号码规范是E.164
用 + 或者是00开头,然后是国家号,区号,电话号。
对方接受的时候,并不具备充分的能力可以识别所有的区号格式。于是造成了短信发送失败的情况发生。那就只好补充一个类似下面的这样的转换表,以便发送各种短信的时候能够进行对应的格式转换。
自系统 |
国际规范 |
他系统 |
+86 |
+86 |
0086 |
0086 |
0086 |
0086 |
因此,要知道,自创的规范不会比国际规范更高明。
那么请思考一下:人民币的缩写是CNY还是RMB?
回复【电子书】领取需求分析实用技巧。数万名产品经理、BA汇聚地,深入需求分析与产品设计、产品运营,帮助你提升产品思维与洞察能力。原创知识体系:可视化需求分析。