Pache思兼:还有什么?

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

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

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

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

/* 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等等各种数据……

/* 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…… ↩︎