Pache思兼:还有什么?

我构想中的 Pache 第一版的大部分功能都实现了,还有什么呢?

特性/功能是永远都加不完的,就比如吧,这个Editor需要个 classSelector。嗯,这个不难,先在article表里加个className什么的,获取类的话就用DISTINCT什么的就可以了。加了过后又需要个 tagSelector……嗯,这回有点麻烦了,要新建一个表,然后这个表要跟article表对照起来……然后又要改改这个bug、加一加那个CSS、F5几下……好,除了后台没实现外别的都完成啦!睡目睡目………………zzz

其实这样子,并不好。因为是想做就做的心态,对于系统的考量可能就没那么多,于是乎代码会写的很混乱,各种乱用语……

比如这样,我要写一个 文章管理器,首先它需要一个读取文章的方法,嗯,写下来,噢,发现文章列表都没有怎么得到文章信息呢,遂又写了个getList方法,噢,又发现获取过来的数据可能还要渲染什么的……再写个process……………………

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* demo Article Manager. */
var manager = {
loadArticle: function (id){
//do something......
},
getList: function (page, limit){
//do something......
var url = 'load.php?'+ $.stringifyRequest({'page': page, 'limit': limit});
$.get(url,
function (d){
process(d);
},
function (){
throw new Error('get fail');
}
);
},
process: function (d){
$.json2obj(d,
function (obj){
var articleList = $('#articlelist')[0];
articleList.innerHTML = '';
obj.list.forEach(function (item){
articleList.appendChild(
function (){
var a = document.createElement('a');
a.innerText = item.title;
return a;
}()
);
});
},
function (){
throw new Error('process fail');
}
);
//......
}
};

oh,shit,然后又发现需要个编辑器来编辑文章,然后又需要什么classSelector什么鬼的东西,问题接踵而至,我的天Oh my god![1]

到底要怎么解决这种情况呢?其实定个目标就可以了

比如想个大体的,嗯,我需要一个 文章管理器,然后这个文章管理器有个列表,而且还有个编辑器……嗯,这个编辑器可以指定文章的class、tag、type等等各种数据……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* demo Article Manager v2 */
var Editor = new function (){
this.tagSelector = function (){
//do something
};
this.classSelector = function (){
//do something
};
/* do anything */
};
var manager = new function(){
var my = this;
this.renderingList = function (articleList){
$articleListEle = $('#articlelist')[0];
articleList.forEach(function (item){
articleListEle.appendChild(function (){
var li = document.createElement('li');
li.textContent ? (li.innerText = item.title) : ( li.textContent = item.title );
return li;
}());
});
};
this.getArticleById = function (articleInfo){
};
this.list = new function (){
this.getFail = function (err){
alert('get fail QAQ');
throw new Error(err);
};
this.getArticleList = function (page, limit){
var url = 'load.php?'+ $.stringifyRequest({'page': page, 'limit': limit});
$.get(url,
function (d){
$.json2obj(d, my.renderingList, this.getFail);
},
function (){}
);
}
}
};

嗯,写完了(没有必要去仔细研读),目标达成了,再也不会出现之前的那个问题了。

所以万事要计划

三思而后行,这对于编程来说是至关重要的[2],没有想好,问题就会各种烦你,到最后代码也没写好,开的坑也就这么坑掉了……

回过头来

那么这次究竟在思兼什么呢?“还有什么?”,嗯可以说的是还有很多东西呢,就算实现了大体的功能,细节部分依旧要补完[3],嗯……又得坑了orz……

当然新功能也是要有的,诸如 Editor 的 HTML预览,Markdown预览,tag选择器……等等

在Pache上写文章是一种享受 :-)


  1. 自找的麻烦2333 ↩︎

  2. 甚至所有事情都这样 :-) ↩︎

  3. Editor的界面,各种细节各种糟糕。以及articleList也是一样的渣……index.php也不是很满意……get.php里的时间似乎也有点bug…… ↩︎