您的当前位置:首页你碰到过的最难调试的 Bug 是什么样的?

你碰到过的最难调试的 Bug 是什么样的?

2024-12-13 来源:哗拓教育

网上浏览帖子,看到这个标题,就很好奇的点了进去。看到内容,我内心是崩溃的,深表同情。

  • 看图
pic1.jpg pic2.png
  • 看到上面的,相信改完bug的程序猿会变成下面这样:
pic3.png
  • null的问题,让我想到下面的问题
不管前端还是后端检测用户名,通常只检测下面几点:
  - 用户名非空
  - 用户名长度不超过限制
  - 用户名中不包含非法字符串
看到图1,我们应该还要限制用户名不能为下面几个类型(站在前端的角度):
  - undefined
  - nan
  - null

下面就以策略者模式写一个检测用户名的方法:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>策略者模式</title>
</head>
<body>
   <script>
       var validate = (function(){
           var message = {
               'isNotAllow':'用户名格式不正确'
           };

           var validateFunction = {
               isNotAllow: function(value){
                   //判断传来的是否是字符串
                   if(Object.prototype.toString.call(value).slice(8,-1)!='String'){
                       return true;
                   }
                   //3-10位的字母下划线和数字组成。不能以数字或下划线开头
                   var reg = new RegExp("^[a-zA-z][a-zA-Z0-9_]{2,9}$");
                   var errorArr = ['undefined','nan','null']
                   if( !reg.test(value) || errorArr.indexOf(value.trim().toLowerCase())!==-1 ){
                       return true;
                   }
                   return false;
               }
           };

           return function(value,type){
               if(validateFunction[type](value)){
                   return message[type];
               }
               return '用户名格式正确';
           }
       })();

       console.log(validate("Null","isNotAllow"));  
       console.log(validate("","isNotAllow"));
       console.log(validate("*&%w","isNotAllow"));
       console.log(validate("yinxiaofei","isNotAllow"));
   </script>
</body>
</html>
  • 执行结果:
pic4.png
显示全文