再读 "LBS^2 的收获与失落" From SiC
[ 2007-08-13 02:15:47 | Author: 星辉一冷 ]
无意中又点开了这篇文章, 于是乎便又认真的读了一遍. 虽然文章的标题和内容都是围绕着LBS^2这个优秀的BLOG程序, 但是SiC从中的收获却是非常值得借鉴与学习的.
特别是对于JScript的理解, 一些细致入微的差异上, 无疑给每一个期望精益求精的WEB程序员上了生动的一课, 正逢五一, BLOG长久未有更新, 便将此经典文章转至与此, 大家共同学习.
收获:
1/ 第一次尝试用 JScript 写 ASP 应用. 了解到很多优势和缺陷.
最大的优势在于其代码风格的舒适度和灵活的 Object 应用. 而缺陷也是很明显的:
a. 不能直接遍历 ASP 的内建对象 (例如 Request.Form 之类), 需要用到 Enumerator.
b. JScript 的 Array 不像 VBScript 那样是单纯的数据结构(是一个 Object), 无法直接放入 Application.Content 存储, 必须先自己序列化(转成字符串).
c. 通过 ADO.Recordset 对象访问数据库的数据时非常别扭. (有兴趣可以看看 DBConn 的实现)
d. JScript 没有很好的二进制处理支持(上传和验证图像的生成部分)
2/ 第一次尝试写结构化的 Web 应用. 过去的经验都是 Streamline (流程式)的. 现在回头看看很多东西都没设计好.
3/ 居然有人会喜欢我写的东西.
但事实上, 我不喜欢做任何人的 Fans, 也不喜欢任何人做我的 Fans.
因为作为人, 你可以有目标, 但不能只将眼光停留在别人身上.
超过他, 踩死他, 鄙视他, 这才是前进的动力.
更何况, 如果这是只一种盲从的狂热, 只会把你牢牢的定在原点.
虽然初中政治书说"我思故我在"是唯心主义的思想, 但我更觉得这是教科书对文字的误读.
一个人, 只有懂得自己的思考, 才能配得上是一个智慧的存在, 一个人.
如果别人说什么就干什么, 与行尸走肉有何不同? 曾经一个人的几句屁话, 毁了多少家庭?
任何东西都会在历史的长河中被遗忘, 而我, 则更喜欢被轻易地淡忘.
失落:
1/ 前面提到的 JScript 的限制.
2/ 结构设计思想不够成熟, 没有充分利用 JScript 的语言特性.
举一个简单的例子:
很多对象纯粹是为了 new 而 new, 例如 var ubb=new lbsUBB();
其实设计成 var lbsUBB = {} 这样当作静态方法对象(虽然实际上也不是)来访问更节约资源.
因为 JScript 的对象和函数其实都是动态的, 多 new 一份会多创建一个对象实例, 反而多余.
3/ 没有把对象的数据和方法很好的分离.
又是一个例子:
lbsUser 这个对象, 数据和方法都是作为对象的子对象存在的:
然后看看我现在的设计:
事实上这也是 ASP.NET 的架构设计思想. 之前很不解为什么 ASP.NET 要把东西拆得那么零碎, 经过这样的分析之后, 基本上可以了解一二了.
4/ ASP 是个将死的技术.
也许哪一天, 我会把 LBS 移植到其他的平台上去, 例如 PHP, ASP.NET. 或者, 有人还看得上这个烂摊子, 移植过去.
谈到其他平台, 我也寻找过, 但似乎还没有一个很好架构的程序, 至少 WordPress 不是 (你可以评价我狂妄, 但我会笑你无知).
无论怎样, 即便是不再有明天的那天, 我依然是我, 我依然记得, 曾几何时, 我写过那么一点点程序, 虽然是不起眼的 ASP 程序.
文章转自: 原文如此
文章作者: SiC
Comment Feed: http://www.dreammx.com/xhyl/feed.asp?q=comment&id=382
Trackback URL: http://www.dreammx.com/xhyl/trackback.asp?id=382&key=xhyl
特别是对于JScript的理解, 一些细致入微的差异上, 无疑给每一个期望精益求精的WEB程序员上了生动的一课, 正逢五一, BLOG长久未有更新, 便将此经典文章转至与此, 大家共同学习.
收获:
1/ 第一次尝试用 JScript 写 ASP 应用. 了解到很多优势和缺陷.
最大的优势在于其代码风格的舒适度和灵活的 Object 应用. 而缺陷也是很明显的:
a. 不能直接遍历 ASP 的内建对象 (例如 Request.Form 之类), 需要用到 Enumerator.
b. JScript 的 Array 不像 VBScript 那样是单纯的数据结构(是一个 Object), 无法直接放入 Application.Content 存储, 必须先自己序列化(转成字符串).
c. 通过 ADO.Recordset 对象访问数据库的数据时非常别扭. (有兴趣可以看看 DBConn 的实现)
d. JScript 没有很好的二进制处理支持(上传和验证图像的生成部分)
2/ 第一次尝试写结构化的 Web 应用. 过去的经验都是 Streamline (流程式)的. 现在回头看看很多东西都没设计好.
3/ 居然有人会喜欢我写的东西.
但事实上, 我不喜欢做任何人的 Fans, 也不喜欢任何人做我的 Fans.
因为作为人, 你可以有目标, 但不能只将眼光停留在别人身上.
超过他, 踩死他, 鄙视他, 这才是前进的动力.
更何况, 如果这是只一种盲从的狂热, 只会把你牢牢的定在原点.
虽然初中政治书说"我思故我在"是唯心主义的思想, 但我更觉得这是教科书对文字的误读.
一个人, 只有懂得自己的思考, 才能配得上是一个智慧的存在, 一个人.
如果别人说什么就干什么, 与行尸走肉有何不同? 曾经一个人的几句屁话, 毁了多少家庭?
任何东西都会在历史的长河中被遗忘, 而我, 则更喜欢被轻易地淡忘.
失落:
1/ 前面提到的 JScript 的限制.
2/ 结构设计思想不够成熟, 没有充分利用 JScript 的语言特性.
举一个简单的例子:
很多对象纯粹是为了 new 而 new, 例如 var ubb=new lbsUBB();
其实设计成 var lbsUBB = {} 这样当作静态方法对象(虽然实际上也不是)来访问更节约资源.
因为 JScript 的对象和函数其实都是动态的, 多 new 一份会多创建一个对象实例, 反而多余.
3/ 没有把对象的数据和方法很好的分离.
又是一个例子:
lbsUser 这个对象, 数据和方法都是作为对象的子对象存在的:
function DBConn(strDBPath){
...
this.connString = strDBPath;
...
this.open = function(){ .. }
...
}
这样在 new DBConn(strDBPath) 的时候, 除了数据外, 所有的方法也会复制一份, 无疑浪费了资源....
this.connString = strDBPath;
...
this.open = function(){ .. }
...
}
然后看看我现在的设计:
lbs.model.dbConnection.create = function(strDBPath){
var objConn = {
"opened" : false,
"queryCount" : 0,
"allRecordCount" : 0,
"returnRecordCount" : 0,
"connection" : null,
"dbPath" : ""
};
...
return objConn;
}
lbs.db.open = function(objConn){ ... }
将数据和相关的方法拆开, 这样 lbs.db.open() 不会因为创建新的 lbs.model.dbConnection 对象而多出一个副本. 调用的时候只要把数据对象传递过去就好了.var objConn = {
"opened" : false,
"queryCount" : 0,
"allRecordCount" : 0,
"returnRecordCount" : 0,
"connection" : null,
"dbPath" : ""
};
...
return objConn;
}
lbs.db.open = function(objConn){ ... }
事实上这也是 ASP.NET 的架构设计思想. 之前很不解为什么 ASP.NET 要把东西拆得那么零碎, 经过这样的分析之后, 基本上可以了解一二了.
4/ ASP 是个将死的技术.
也许哪一天, 我会把 LBS 移植到其他的平台上去, 例如 PHP, ASP.NET. 或者, 有人还看得上这个烂摊子, 移植过去.
谈到其他平台, 我也寻找过, 但似乎还没有一个很好架构的程序, 至少 WordPress 不是 (你可以评价我狂妄, 但我会笑你无知).
无论怎样, 即便是不再有明天的那天, 我依然是我, 我依然记得, 曾几何时, 我写过那么一点点程序, 虽然是不起眼的 ASP 程序.
文章转自: 原文如此
文章作者: SiC
Comment Feed: http://www.dreammx.com/xhyl/feed.asp?q=comment&id=382
Trackback URL: http://www.dreammx.com/xhyl/trackback.asp?id=382&key=xhyl