`

party_bid重构

    博客分类:
  • js
 
阅读更多

做完party_bid四张卡后,要进行重构,重构是为了让代码更容易理解,把代码放在该放的位置.重构后的代码,每个函数只做一件事,每个方法不超过15行,尽可能的减少内圈复杂度,将管理数据的模型抽到model里,也就是说model里实现所有数据的增删改查,controlle只向view提供指示性标志变量和数据源,controll不实现任何功能方法,只通过调用方法实现逻辑控制,尽可能的用underscore代替循环.下面讲一下我在重构过程中我遇到的一些问题.

1.举个例子,用_.find代替for循环,并抽成方法

Bid.activity_current_activity = function () {
    var action = JSON.parse(localStorage.getItem("activities"))
    return(  _.find(action, function (act) {
        return act.name == localStorage.current_activity
    }))       //找到当前的活动并返回,_.filter会返回所有符合的数组
}

 2.定义类方法

function Activity (name){
    this.name=name;
    this.activity_status='false';
    this.apply_list=[];
    this.bid_status='false';
    this.bid_list=[]
}
Activity.prototype.save_message=function(){  //prototype可以让我们向对象添加属性和方法
    var activities = JSON.parse(localStorage.getItem("activities")) || [];
    activities.unshift(this)   //把Activity压入activities
    localStorage.setItem("activities", JSON.stringify(activities))
}

 3.讲一下用的比较多的undersc0re里的_.findwhere

 _.findWhere(action,{name:localStorage.current_activity}).bid_status="true"  //找到当前的活动名,并对其中的bid_status赋值true,然后可以用localStorage存储

 4._.map的用法

_.map({one: 1, two: 2, three: 3}, function(num, key){ return num * 3; });  //对数组中的元素遍历,会返回{3,6,9}

 5.通过function传值还可以把$scope抽出来抽成方法

Bid.judge_check_bid_price_bid_count = function ($scope) {
    if (!Bid.check_bid_price_bid_count()) {
        $scope.success = "false"
        $scope.fail = "true"          //通过传值可以把success的值传到页面,要善于用function的传值,会大大的提高效率
    }
}

 切忌函数的命名一定要做到见名知意,重构没有最好,只有更好,继续学习underscore的其它方法,简化代码

0
0
分享到:
评论

相关推荐

    uid_score_bid.dat

    数据格式 uid_score_bid 如 dingdanglbh,4.0 ,25862578 Luna-cat,5.0 ,25862578 aiyung,5.0 ,25862578

    case9_bid.rar_PSO_PSO power_PSO 潮流_case9_pso power flow

    标题中的"case9_bid.rar_PSO_PSO power_PSO 潮流_case9_pso power flow"揭示了这个压缩包文件包含的是一个关于电力系统潮流计算的案例,使用了粒子群优化(PSO, Particle Swarm Optimization)算法。PSO是一种基于...

    crc16-CCITT.rar_ccctt.5com_ccctt3bid_ccctt9. bid_crc16 ccitt ver

    标题中的"crc16-CCITT.rar_ccctt.5com_ccctt3bid_ccctt9._bid_crc16 ccitt ver"可能是指一个包含CRC-16 CCITT实现相关资料的压缩文件,其中包含了各种文档、源代码或测试向量。"ccctt.5com"、"ccctt3bid"、"ccctt9._...

    基于JavaScript的Java_Bid招标项目前端设计源码

    该招标项目前端设计源码采用JavaScript编写,包含280个文件,涵盖177个JavaScript文件、26个CSS文件、24个HTML文件、22个Java文件以及少量地图、JSON、图像、XML等文件。整个项目旨在打造一个功能完善、界面美观的...

    EURUSD_1 Min_Bid_2003.05.04_2019.02.02.zip

    欧美1分钟历史数据,2003年5月到2019年2月,MT4EA回测好用。

    mc_bid

    "mc_bid"通常在IT行业中指的是“Multi-Channel Bid”,这是一种广告投放策略,特别是在数字营销领域,用于优化广告在多个渠道上的出价。这个概念主要应用于程序化广告(Programmatic Advertising),通过自动化的...

    Repaso_Clases_Objetos_call_aplly_bid_22_02_2021

    标题 "Repaso_Clases_Objetos_call_aplly_bid_22_02_2021" 暗示这是一个关于回顾类与对象、`call` 和 `apply` 方法以及可能涉及到的 JavaScript 语言特性的教程或复习资料。描述部分的信息较为简单,与标题相同,...

    去噪代码matlab-PGBL_BID:PGBL_BID的Matlab代码

    去噪代码 matlab

    backup_1000821v1001400000.zip

    标题“backup_1000821v1001400000.zip”和描述中的信息“backup_1000821v1001400000.zip”暗示这是一个备份文件,可能包含了某个系统或应用在特定时间点的数据快照。通常,这样的文件用于防止数据丢失,便于恢复到...

    bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe

    bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe

    bid0-lid64-steam.game_steamzc9_2.0.0.2702.exe.file

    bid0-lid64-steam.game_steamzc9_2.0.0.2702.exe.file

    ocds_bid_extension:允许出价统计信息和详细的出价信息被表示

    出价统计信息和详细信息 作为签约过程一部分而...bids.details数组用于提供一个或多个Bid对象,每个对象代表收到的唯一出价。 bids.statistics数组用于表示有关投标和投标者数量的关键统计信息。 数组中的每个条目都

    bid_shift_reg.rar_plus

    标题“bid_shift_reg.rar_plus”暗示我们关注的焦点是一个与数字电路设计相关的项目,特别是使用VHDL(Very High-Speed Integrated Circuit Hardware Description Language)编写的双向移位寄存器。在电子工程领域,...

    Bid Documents - Toyota Hilux Fx_pdf_

    【标题】"Bid Documents - Toyota Hilux Fx_pdf_" 暗示了这是一个与丰田Hilux FX车型相关的招标文件,格式为PDF。在IT领域,PDF(Portable Document Format)是一种广泛使用的文档格式,用于保存内容,确保在不同...

    bid0-lid64-steam.game_steamzc_2.0.0.2242.exe

    bid0-lid64-steam.game_steamzc_2.0.0.2242.exe

    matlab 电力系统潮流计算程序 9节点改进算法算例

    在提供的文件中,`quadratic_bid_ninebus.m`和`case9_bid.m`可能是两个主要的MATLAB源代码文件,它们可能包含了潮流计算的实现以及特定的优化算法,如牛顿-拉弗森法或者快速分解法。 `quadratic_bid_ninebus.m`可能...

    bid格式文件电子标书阅读器.zip

    bid格式招投标文件阅读器,可以打开浏览、管理电子招标文件,如果打不开标书文件,请按下面步骤检查:1、请查看招标文件(.bid文件)是否下载完全,请用IE下载工具下载;2、查看IE浏览器版本,如果版本低于IE8,低于IE...

    Framework Manager使用手册.doc

    - 在 "选择对象" 对话框中,选定需要的表,例如 "cctv_bid_result_qin_99" 和 "cctv_enterprise"。 7. **导入对象** - 在 "Generate Relationships" 对话框中,点击 "Import" 按钮将所选对象导入框架。 8. **...

    马里奥matlab代码-Class-adapted-BID:一种基于即插即用的适应类盲图像去模糊方法

    演示脚本:Demo_BID_PnP.m%========================================== ========================% 接触: Marina Ljubenovic-葡萄牙里斯本电信研究所- Mario AT Figueiredo-葡萄牙里斯本电信学院-%============...

    blind-auction

    hidden_bids = {bid.bidder: bid.amount for bid in self.bids} highest_bid = max(hidden_bids.values()) winner = max(hidden_bids.keys(), key=lambda x: hidden_bids[x]) return (winner, highest_bid) ```...

Global site tag (gtag.js) - Google Analytics