关于编码过程中如何避免重复性方法执行,来自js代码优化整理,是否for的裂变并行猜想

本次总结的故事背景

在一般的设计过程中,标签化语言很好,但标签话语言一般只能做一次数据集合的控制,或者说只能在初始化的时候进行一次数据集或者元素集合的处理

但是因为业务需求或者功能复杂度的提高需要操作的字段不断新增,无论是数据字段还是元素字段,控制各种字段的对象需要有更多的操作,对于放在一起的同一个方法多次调用(尽管操作的对象不一样,但总有一种强迫症的感觉想把重复的方法调用干掉)

针对故事待处理的想法

对于任何逻辑语言,主要的两类是被处理的数据对象,和处理方法;既然存在重复的方法调用,为什么我不简化成对于重复方法调用,我先可以把所有本次需要处理的数据提供给这个处理方法,然后自动将数据全部处理完

引申的内容

本次优化的js语言,涉及到js语法仅作简单说明

js中this传递和赋值

这是部分情况下需要使用的,具体参见https://blog.youkuaiyun.com/u013594477/article/details/78949817

其中的call如果设置被调用的操作域

 

待处理数据对象集合

总需要定义一个集合,这个集合至少是针对集合中的每一个key(可以理解为当前操作下的元素主键)的数据元素有一个打包是处理数据

单一元素的处理集合数据定义

 

 基本数据结构--这个比较常见,普通的赋值和属性修改,都是简单数据结构

function Enode(keyid,kvalue){

this.key=keyid;

this.value=kvalue;

}

复杂数据

function Eitem(keyid){

this.key=keyid;

this.executData=new Array();

this.addExecutData=function(_keyid,_kvalue){

this.executData.push(new Enode(_keyid,_kvalue));

}

}

数据集合

function  Emap(){

this.elements=new Array();

this.add=function(_keyid,_kvalue){

this.elements.push(new Enode(_keyid,_kvalue));

}

}

针对多个对象进行同样的数据修改操作,第一步是准备好待处理的元素和其准备修改的值

function EbatchData(datamap,sameValue,keys)

{

for(var idx in keys){

datamap.put(keys[idx],sameValue);

}

}

或者是不同赋值

function EbatchDataX(datamap,Enodes)

{

for(var idx in Enodes){

datamap.put(Enodes[idx].key,Enodes[idx].value);

}

}

然后对准备好的数据执行处理

新建批次雷同处理

function FunBatch(funcobj,datamap,controls,callback){

if(typeof funcobj ==="function"){

var datasets=datamap.elements;

for(var idx in datasets){

funcobj .call(this,datasets[idx].key,datasets[idx].value);//这一句是比较重要的一点,关于js下操作域问题,请详细查看this赋值

}

}

}

就这样,准备类似数据和批次执行统一方法已经准备好了

请参考以下优化

比如,你有5行类似的操作(item1.setvisible方法重复调用)

item1.setvisible("input1",true);

item1.setvisible("select1",true);

item1.setvisible("input2",true);

item1.setvisible("input3",true);

item1.setvisible("input4",true);

 

通过转换

var datas=EbatchData(new Emap(),true,["input1","select1","input2","input3","input4"]);//带操作数据准备

FunBatch.call(item1,item1.setvisible,datas);//批次处理数据

这样就达到基本的效果了

重复的事让可以重复的方法去执行,请不要行复制,不仅浪费代码行,还浪费阅读精力

而且这样可读性很好了,另外还有一些想法需要和大家分享

针对for循环,虽然实现了重复目的,有没有可以并行执行的循环

即现在有一堆处理方法和待处理数据,我想能否有一种语言原生支持数据处理的裂变并行到聚集结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值