Whyme Lyu
对
编写高质量代码
的书评
发表时间:2010-07-24 20:07:47
P48 原文说(CSS中的)common层等于MVC中的M
这何必...CSS又不是什么可程序化的东西, 何必非要跟这个词去套近乎.
P53~54
双倍margin的现象是: IE6中左浮动那么左margin会双倍, 右浮动那么右margin会双倍. 原文没有明确说明左右.
P81~82
CSS的权重不能简单地说"HTML选择符是1, 类选择符是10, ID选择符是100"
因为这里并没有10进制的进位关系, 亦即, 即使10个类选择符一起也不抵一个ID选择符的权重.
P89~91
利用CSS解析的怪异之处, 让一些css规则仅适用于某些浏览器, 这叫CSS Filter而不叫CSS Hack
向后兼容这个词的使用似乎也不太正确. `为尽量满足/适应新版本`应该叫做向前兼容吧.
http://en.wikipedia.org/wiki/Forward_compatibility
P94
hasLayout虽说是IE的私有实现, 但其效果可以说完全是照着CSS规范中的Block formatting context来的. 提一嘴有益于理解.
P112~P122
网格布局(至少在相对广泛的认识中)不是简单地指按百分比布局的CSS框架, 而是平面设计的概念
简单说就是用分栏+栏间的槽来确定页面中各个元素的横向尺寸(块宽度, 横向间距, 表单域宽度等).
这本书对网格布局有介绍: http://book.douban.com/subject/2345964/
这本书也有一章讲到 http://book.douban.com/subject/3042031/
P165
用document.all来检测浏览器是否为IE? 这显然是逻辑错误.
如果是IE, 那么有document.all, 前者是后者的充分而非必要条件
如果是IE, 那么需要用e.cancelBubble=false来完成取消冒泡, 逻辑关系同上.
如此, 并不能确定document.all是使用cancelBubble的充分条件.
比如面对opera这里: http://dev.opera.com/articles/view/using-capability-detection/
P176
这几个类型检测函数, 多数只是简单的typeof封装, 意义不大(当然不排除是为了应对未来的JS语言改进而设);
有些不够严谨, 比如isFunction会在Webkit系浏览器中把正则表达式判断为函数, isArray只是简单应用instanceof, 不能正确检测另一个window环境中的数组.
P183
一个JS库中的Cookie与Ajax通信部分都是在重新定义浏览器API, 抹平浏览器间差异, 按照作者的观点似乎更适合放在Base层而不应放在Common层.
P190
对词法作用域的解释不够详尽.
P207
对this关键字的解释也感觉不够深入
(考虑到本书更多关注的是前端架构规划与团队协作, 技术层面的不深入可以稍微原谅一点么?)
P217
电话簿的例子, 作者分明用非OO的语法写出了OO思想的代码, 却说这是面向过程的代码.
PHP中的curl库(嗯其实就是C中的curl库)就是典型的非OO语言实现了OO. 与书中的电话簿例子何其相似.
另外面向过程编码与OOP也并不是非此即彼的分类关系吧..?
总之神经如我者慎读.
书我也看了。确实不错~如果你有经验就像CSS的特殊性。啊当完全是为了更好的让其他人理解才去那样写的,写书的人有自己的想法,如果我们揣摩一下他的想法,我想读起来不会自己给自己找事~这书传达的的确是一种思想。而不是技巧。我1天就看完了。但是我能感觉到这是作者工作经验中的实践来的东西,而不是抄来的!对我是有帮助的而不是没用处~没有完美的书,只有不完美的读者苛刻的要求。挑刺谁都会,尚且任何事物都可以去调毛病~何必呢?楼主上面举出的例子,我不知道你是正的为了大家好?还是有什么想法?想证明什么?作者都说了是面向有基础的前端人员的,我想基础起码起码能明白作者书中一笔带过的东西吧~不明白何必读此书? 最后我再说几句,我不认识 啊当。 当我是他书的读者。我学到的东西,我应该分享! 最后说句流氓的话,差之毫厘谬以千里~你看起来这本书简单,让你去写。你就知道自己基础有多烂了。
您好,目前为此,您的意见是所有反馈中提得最细致的,看得出来您很用心地读了本书,非常感谢您提的意见。
如您所说“ (考虑到本书更多关注的是前端架构规划与团队协作, 技术层面的不深入可以稍微原谅一点么?)
”,本书的关注点在于前端架构规划和团队协作,所以一些并不太实用的地方我没打算过于纠结,不得不承认,为了突出主线和重点,在一些细节方面我选择了放弃处理。例如“CSS选择符权重”,“用document.all”来检测浏览器类型等。事实上,我们很难会遇到套用10层class进行选择的情况,而对于浏览器检测,更好的做法当然是为浏览器类型封装一个getBrowser()函数,这样才最安全。
我写本书的目的在于“分享一种思路”,让还没有这种思路的读者,可以建立起这样的思路。我很喜欢《don't make me think》这本书,它尽量控制自己的篇幅,希望读者能在几个小时内看完它,我也希望自己的书能够像它一样,薄,但很有营养。一个合适的读书过程应该是薄厚薄,我对本书的定位在第三阶段的薄,所以对于知识点会有一定的取舍,重要的地方我会详述,在我看来不太实用的地方,我会略写。如书的前言所说,我会假设读者已经有一定基础,所以不会对一些基本概念纠结。
您提的问题几乎全是技巧问题,而非技术问题,而技巧不是用对和错来说的,见仁见智。也许有为自己开脱之嫌,对于技巧性问题,尽信书不如无书,取您认为对的地方吸收,认为不对的地方保留您自己的意见,对您,也对其他读者。
再次感谢您对本书的关注,谢谢。