mass种子模块看完了
作者当然也不容易,要考虑各种兼容问题,要考虑效率问题(他真的考虑过吗,我表示强烈怀疑,貌似仅仅是风格上模仿其他源码)
相当无语。
本来我是知道的,代码 调试的过程中逐渐完善,逐渐与各种兼容问题和预想不到的bug打交道,原先严谨的结构都会渐渐腐烂,但是作者的结构,真的不是很严谨。
因为有些设计,完全是为兼容性而来的,所以有些即使没有理解,我也不去理解了,毕竟,我没有打算去维护这套代码。
我还是就这套代码的利弊进行一下总结吧。
1.命名一定要有意义,如果是临时起的无意义的名字,那么后期重构的时候要改成有意义的。有些如checkdeps,这是什么意思,有些代码基本上是为了解决兼容性问题的,起名字的时候,就不能按照代码内容来起,因为读者并不知道你所熟知的那些兼容性问题。有时候定义了若干重名的变量,比如id=xxx?id:yyyy之类的,然后又用url 作为复杂ID,又如闭包内外变量重名,造成了后来维护者的极大混淆。
如果你指望别人来维护这段代码,请不要出现ID,LIST,ARRAY这样的变量,哪怕是作为临时变量也不行。光看一个函数还可以,看多几个乱得一塌糊涂。
命名应根据功能,作用来命名,而不应根据细节来命名。
2.跟命名一致的,代码功能问题。 全局变量的使用,可能在所难免,但请务必一点,把兼容和非兼容的代码分开。正常代码考虑兼容问题,几乎必然会违背单一职责原则的。兼容代码里尤其会有各种拼凑写法,巧合写法,这些最好和正常的逻辑处理分开,尤其是复杂的逻辑。应设法使逻辑和兼容分离,逻辑独自封装一块。
数据结构的设计尤其不应考虑兼容问题。 否则你的框架就跟某个版本的浏览器高度相干了,后人想改都改不过来。代码的复杂是有序的,有限度的,兼容性的复杂是无穷无尽的,无规律的。没必要做什么url命名,多个不同版本报错问题,现在明摆着,你一个版本都还没做出来,那些使种子模块过早的陷入一种想象出来的复杂需求之中。
两个不同版本的模块加载,得不到正确结果,这是必然的,无法根除的。
你的代码要跟jquery拼效率那是不可能的事情,如果要后人还能维护,请一定不要跨若干个层级的函数调用全局变量。
有节制的使用全局变量和闭包,使用前一定要考虑好,为什么在这个位置要用,有什么好处,最大的好处莫过于可以封装一整块功能。
复杂结构最好一次性定义完,不要在程序流行过程中断断续续的添加。
mass种子模块看完了的更多相关文章
- mass种子模块之domready
总结:由于IE6/7/8不支持DOMContentLoaded事件,虽然它支持onreadystatechange事件,但是readyState=complete几乎和onload事件一样,需要等页面 ...
- 痞子衡嵌入式:ARM Cortex-M内核那些事(3.2)- 安全模块看特性(M23/33/35P)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M功能模块,不过侧重点是三款安全特性处理器. ARM Cortex-M处理器家族发展至今(2020),已有8代产品 ...
- <c ss高效开发实战>看完了,Bootstrap学习是关键
Bootstrap果真给我们带来了很多便利,学习CSS,必须要掌握很多框架和快速学习的方法. 这本书看完了,也写过几篇读书笔记,墙裂推荐.不上书封面了,只上书的导图. 这里说几点学习CSS的心得 1. ...
- 终于把你必须知道的.NET看完了
终于把你必须知道的.NET看完了,第二步就是把精通ASP.NET MVC3框架这本书搞定,练习MVC3的使用,并把EF,LINQ也练习一下,期间要做一个项目“多用户微信公众平台”项目,最近微信公众平台 ...
- C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...
- 跌跌撞撞的看完了《jquery技术内幕》
今年2月20日买的书,今天是5月26,三个月来,除了周末休息一天,如果没有特殊情况,我都会每晚花两个小时看这本书,以及查各种与jquery源码相关的资料.今天总算是跌跌撞撞的看完了,有点小激动,也有点 ...
- 刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!
刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!
- JS框架设计之命名空间设计一种子模块
命名空间 1.种子模块作为一个框架的最开始,除了负责初始化框架的最基础部分. 2.种子模块作为框架的最开始,那么什么是种子框架的最开始呢?答案是IIFE(立即调用函数表达式); IIFE(立即调用函数 ...
- primer看完了
放假这将近十天吧,终于把C++ Primer中文版第五版大致看完了,然而第四部分(高级主题)还是没有看,感觉那是需要有足够的项目经验再看. 另外,看一遍肯定不够,忘得也会很快,我十分确认今后还会很多次 ...
随机推荐
- lesson5-图像检测-小象cv
R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...
- PTA——判断胖瘦
PTA 7-40 到底是不是太胖了 #include<stdio.h> #include<math.h> int main() { ,N; scanf("%d&quo ...
- python django day 3 页面,自动 跳转,参数传递
zqxt_views/urls.pypath('', calc_views.index, name='home'), calc/views.pydef index(request): return r ...
- url参数和字典的相互转化
目标url:https://www.baidu.com/s?&wd=python&ie=utf-8 将字典转成url参数 使用urllib.parse的urlencode方法,将字典对 ...
- ELFhash
字符串哈希算法(以ELFHash详解) 更多字符串哈希算法请参考:http://blog.csdn.net/AlburtHoffman/article/details/19641123 先来了解一 ...
- 更改MySQL数据库的编码为utf8mb4
原文:http://blog.csdn.net/woslx/article/details/49685111 utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3 ...
- SQL相关语句
1.分类 数据定义语言(DDL),用来定义数据库.表 列 ,用到的关键字:create.alter.drop. 数据操作语言(DML),数据库进行更行的操作, insert.delete.update ...
- drone 1.0 docker-compose 运行试用
drone 1.0 已经rc了,新的界面以及新的功能 github 客户端创建 docker-compose 文件 version: '3' services: drone-server: image ...
- Hasura GraphQL 内部表结构
Hasura 使用pg 数据库存储引擎的元数据信息,在hdb_catalog schema 下面,是在初始化的时候生成的 对于表的管理.权限的信息存储都在这个schema下 hdb_table 这个表 ...
- 解决jpgraph在php7.0版本下时,无法显示例子图表的问题
解决gpgraph4.02在php7.0显示空白框问题 Gpgraph类库强大的绘制图表的功能深受广大phper的喜爱,目前官方最新的版本是 jpgraph-4.0.2 ,适用于php5.0及7.0以 ...