在设计的问题上我陷入了封装陷阱,粒度划分陷阱
功能以*
逻辑功能
完成划分 不能以部件构成
*来划分
功能有实现所需要的*
部件
, 可以单独封装部件, 但是不能在部件内出现外层逻辑功能
*
#include <stdio.h> | |
int main(void) | |
{ | |
printf("hello world!"); | |
return 0; | |
} | |
#test |
function Iterator(start, end) | |
{ | |
this.range = []; | |
for (var i = start; i <= end; i++) { | |
this.range.push(i); | |
}; | |
console.log(this.range); | |
this.start = start; | |
this.end = end; |
<?php | |
/** | |
* 从二维数组中选取指定列组成新数组 | |
* @param array $dd_array 二维数组 | |
* @param string | int $column_key 选取作为值的列的列名 index | key | |
* @param string | int $index_key 选取作为键的列的列明 | |
* @param string $flag 列名的形式 | |
* @return array 返回新的一维数组 | |
*/ | |
function array_column($dd_array, $column_key, $index_key = 0, $flag = 'INDEX') |
/** | |
* 活动持续时间 | |
* 计算两个时间差 | |
* @param {string} start 时间 格式:2015-09-07 15:53:00 | |
* @param {string} end 时间 格式:2015-09-07 15:53:00 | |
* @return {string} 相差的时间戳 | |
*/ | |
function countContinuTime(start, end) { | |
var startStamp = Math.floor(new Date(start).getTime() / 1000); |
// 匹配console | |
/console\.(log|error)*\(.*\);$/ | |
// 匹配整行console | |
/\n *console\.(log|error)+\(.*\); *$/ |
在设计的问题上我陷入了封装陷阱,粒度划分陷阱
功能以*
逻辑功能
完成划分 不能以部件构成
*来划分
功能有实现所需要的*
部件
, 可以单独封装部件, 但是不能在部件内出现外层逻辑功能
*
<?php | |
class PictureTaobaoModel extends TaobaoModel | |
{ | |
/** 初始化方法 */ | |
protected function _initialize() | |
{} | |
/** | |
* 功能:检测用户图片空间是否有指定的图片分类 | |
* @param session 用户session |
// Array.prototype.range(start, end) | |
Array.apply(null, {length: end - start + 1}).map((v, i) => i + start) |
<?php | |
/** | |
* 过滤 XML 中不合法的字符 否则将无法正常解析XML | |
*/ | |
function XmlSafeFilter($s) | |
{ | |
//XML标准规定的无效字节为: | |
/* | |
0×00 – 0×08 0 - 8 | |
0x0b – 0x0c 11 - 12 |