• 养成良好的代码编写习惯


    1、定义任何变量都需要加类型,不确定类型的需要添加注释。目的是方便调试溯源和阅读代码。
    2、模块间的数据引用在本模块写引用。比如背包道具有装备类型 type=EQUIP ,在背包里写拿到所有装备的接口getEquipData,在需要显示所有装备的地方如英雄穿戴就在英雄模块里写equipData = bag.getEquipData。
    3、界面跳转和返回。无论跳转任何次,返回都可以实现。
      1)定义面板类型。分为场景,面板,小弹窗。
      2)定义界面层级。1级界面,2级界面,3级界面。
      3)定义界面是否全屏,若全屏需要在跳转后关闭当前界面。
      4)定义打开界面的方式,正常打开或跳转。
      5)定义界面的通用接口,所有界面都需要实现这些接口,如
         open(args);
         close(backToLast:boolean);//关闭界面是否返回上一层
         backData(args);//每个界面重写返回传参,一般return open用的args。
      6)定义面板管理类,定义通用界面打开方法,定义每个界面的参数。
    4、布尔值的判断和赋值。
      1)用Math.max(n,0)而不是n || 0,因为n可能为负数。
      2)return !!xx,两个非可以实现布尔值转换。
      3)布尔值数组可以用值的位移操作来替代,目的是精简优化服务端数据的存储。
        如有一个10天的奖励,领取了3,5,9天的奖励,用数组表示为[0,0,1,0,1,0,0,0,1]。

    var cond: number = xxx;//想要知道第xxx个奖励是否已领取
    var stateArr: number[] = [0,0,1,0,1,0,0,0,1];
    if (stateArr[cond-1]) return true;
    else return false;

        用值来表示

    //原数组[0,0,1,0,1,0,0,0,1]的倒序100010100
    parseInt(100010100,2) = 276
    var cond: number = xxx;//想知道第xxx个奖励是否已领取
    var stateFlag = 276;
    if (stateFlag >> (cond-1) & 1) return true;
    else return false;

     5、排序。sort方法返回值是-1还是1的理解l。

      1)从小到大。

    var a = [1,3,2,5,4];
    a.sort(
        (a,b)=>{
                if(a>b)
                    return 1;
                else
                    return -1
            }
        );
    //等同于return a-b

      2)从大到小。

    var a = [1,3,2,5,4];
    a.sort(
        (a,b)=>{
                if(a>b)
                    return -1;
                else
                    return 1
            }
        );
    //等同于return b-a

    6、变量的命名,根据所属模块和类型确定固定字符(如Bag---View),加上自定义字符(不要磨磨唧唧,取个名字用得着费多大劲儿),通俗易懂,首选英文,次选中文全拼,中文简拼一定记得写注释(不要过段时间自己都不认识了),控制长度。
      1)BagItemTipView
      2)BagTiShiView
      3)/**背包通用道具*/BagTYDJView。写变量写注释写在变量前面,用/** */格式,这样在IDE()里面鼠标指到变量上会显示注释里的内容。

     7、慎用对象传参。

    //传递对象主要在赋值方面容易出问题
    //若需要改变对象,如:
    var obj = null;
    change(obj)
    function change(objArg)
    {
        objArg = new ItemObject;//这个时候注意函数外面的obj并没有被重新赋值仍然是null,想实现这种操作只能是在外部写这句,或者改变原理obj的结构变成下面这种
    }
    var obj = {obj:null};
    change(obj)
    function change(objArg)
    {
        objArg.obj = new ItemObject;
    }
    //若不能改变传参对象,但又需要对该对象赋值啥的一堆操作,只能是复制一份传进来的对象
    var obj = {id:3};
    change(obj);
    function change(objArg)
    {
        var objCopy = ObjCopy(objArg);
    }
    //复制对象
    function ObjCopy(src, dst?) {
            var newobj = dst || {};
            if (src) {
                for (var name in src) {
                    if (typeof src[name] === "object") { //先判断一下obj[name]是不是一个对象
                        newobj[name] = (src[name].constructor === Array) ? [] : {}; //我们让要复制的对象的name项=数组或者是json
                        ObjCopy(src[name], newobj[name]); //然后来无限调用函数自己 递归思想
                    } else {
                        newobj[name] = src[name];  //如果不是对象,直接等于即可,不会发生引用。
                    }
                }
            }
            return newobj;
        }

     8、用思维导图来帮助自己整理目标任务。

     9、不要瞻前顾后。
      1)没有绝对完善的系统,不要过多的考虑需求之外的东西。需求没写,则不做。
      2)不要考虑太多的容错,系统是具有局限性的,不需要去考虑怎么不让自己做的东西报错或者崩溃,太费时间,只需要考虑正常环境下的容错。
      3)做东西前要想清除到底是按直线做下去然后通过迭代来完善枝干,还是做到有枝干的地方就先做好枝干再继续走。所谓专注。

    10、做好备份,电脑很可能断电,死机,及时保存和备份是有用的,单靠SVN的记录是不靠谱的,SVN也会炸。

  • 相关阅读:
    CSS
    CSS
    HTML
    HTML
    HTML
    ubuntu server安装的一些坑
    Haproxy 开启日志记录
    nginx反向代理时保持长连接
    最简单的tomcat安装部署
    nginx的安装部署以及使用
  • 原文地址:https://www.cnblogs.com/chickenfarm/p/12919212.html
Copyright © 2020-2023  润新知