后端设计中的总结

后端设计中的总结

总结

数据处理


数据处理,可以从来源到输出的方向,进行思考。主要分为以下几个流程。

  • 数据库进行处理。

    常见的,如增加一个字段,而此字段可以是常量,或经计算所得。进行排序等。

  • 后端语言进行处理。

    如果在数据库端处理,不太方便。可以使用在后端的php语言进行处理。常见的有,排序、增加额外的计算字段等。

  • 前端Ajax请求后,对数据进行处理。

    在Extjs框架下,数据load之后,可以使用fields字段的convert设置进行处理。此种方法,比较好,不会污染原有的变量。

  • 前端渲染到模板内处理。

    Extjs的columns设置renderer(v,metaAttr,record)函数。但是,请注意,如果此值不需要在后续再使用,可以这么干,如果此值还需要再使用,那么这样做,就污染了原有的变量。

加锁机制


对于一些竞争的资源,需要对数据库的访问,需要作为一个原子操作过程,进行加锁处理。

设置flag,标志


在一些常见前端的场合,可能增加flag进行处理。伪代码如下。

<script>
	var flag=0;
	//需要判断flag是否允许执行
	if(flag===1){
		{
			//系列的操作
		}
		//操作结束后,需要将标志复位
		flag=0;
	}
	
	//在其他地方,进行开启。
	/flag=1;
</script>

flag不一定总是0跟1。可以根据情况,为详细的id。一个例子是,之前设计的模板编辑器。flag为详细的操作id。还有,保存上次操作的模板。如果用户手动更换了模板,然后执行下一步的时候,清空数据,更换模板。

巧用if-return提前结束函数


我们知道,if如果嵌套比较深的话,理解起来非常的困难。如果是自己写的代码还好说,如果是别人写的代码。理解起来,难度确实较大。在这个时候,可以利用

if(条件不符合)
	return 错误值; 

来提前结束掉函数。有多个这样的if-return,将原有的嵌套if变成了线性的if了。理解起来,难度会小很多。

深入理解if

  • if的嵌套
  • if的条件组合

if的条件其实相当于切片一样(概率论也有)。条件是否是同一方面,如果是同一方面的话,是否能用数组组合。

<?php
	$roleId=4;
	if(in_array($roleId,array(1,2))){
		//对于特殊的角色id进行处理
		dosomething();
	}

另外如果条件是值同一方面,有的时候else不要省略,这样来减少无效的判断。如下:

<?php
	if(条件1){
		echo '小屁孩';
	}
	if(条件2){
		echo 'xxxxxx';
	}
	

像上面,及时从逻辑上判断,如果条件1成立了,条件2根本就不会再成立,也要加上else。这样能减少判断。有的时候,if-elseif 没有else。这也是有的。

深入理解循环


循环其实是常见的语法。必须深入理解循环。for(起始条件;终止条件;步进)这个是常用的循环结构。有些语言有高级的抽象。比如Ext.Array.each(list,function(){//代码;})等。

深入理解循环下面,数组的遍历