作者当然也不容易,要考虑各种兼容问题,要考虑效率问题(他真的考虑过吗,我表示强烈怀疑,貌似仅仅是风格上模仿其他源码)

相当无语。

本来我是知道的,代码 调试的过程中逐渐完善,逐渐与各种兼容问题和预想不到的bug打交道,原先严谨的结构都会渐渐腐烂,但是作者的结构,真的不是很严谨。

因为有些设计,完全是为兼容性而来的,所以有些即使没有理解,我也不去理解了,毕竟,我没有打算去维护这套代码。

我还是就这套代码的利弊进行一下总结吧。

1.命名一定要有意义,如果是临时起的无意义的名字,那么后期重构的时候要改成有意义的。有些如checkdeps,这是什么意思,有些代码基本上是为了解决兼容性问题的,起名字的时候,就不能按照代码内容来起,因为读者并不知道你所熟知的那些兼容性问题。有时候定义了若干重名的变量,比如id=xxx?id:yyyy之类的,然后又用url 作为复杂ID,又如闭包内外变量重名,造成了后来维护者的极大混淆。

如果你指望别人来维护这段代码,请不要出现ID,LIST,ARRAY这样的变量,哪怕是作为临时变量也不行。光看一个函数还可以,看多几个乱得一塌糊涂。

命名应根据功能,作用来命名,而不应根据细节来命名。

2.跟命名一致的,代码功能问题。 全局变量的使用,可能在所难免,但请务必一点,把兼容和非兼容的代码分开。正常代码考虑兼容问题,几乎必然会违背单一职责原则的。兼容代码里尤其会有各种拼凑写法,巧合写法,这些最好和正常的逻辑处理分开,尤其是复杂的逻辑。应设法使逻辑和兼容分离,逻辑独自封装一块。

数据结构的设计尤其不应考虑兼容问题。 否则你的框架就跟某个版本的浏览器高度相干了,后人想改都改不过来。代码的复杂是有序的,有限度的,兼容性的复杂是无穷无尽的,无规律的。没必要做什么url命名,多个不同版本报错问题,现在明摆着,你一个版本都还没做出来,那些使种子模块过早的陷入一种想象出来的复杂需求之中。

两个不同版本的模块加载,得不到正确结果,这是必然的,无法根除的。

你的代码要跟jquery拼效率那是不可能的事情,如果要后人还能维护,请一定不要跨若干个层级的函数调用全局变量。

有节制的使用全局变量和闭包,使用前一定要考虑好,为什么在这个位置要用,有什么好处,最大的好处莫过于可以封装一整块功能。

复杂结构最好一次性定义完,不要在程序流行过程中断断续续的添加。

mass种子模块看完了的更多相关文章

  1. mass种子模块之domready

    总结:由于IE6/7/8不支持DOMContentLoaded事件,虽然它支持onreadystatechange事件,但是readyState=complete几乎和onload事件一样,需要等页面 ...

  2. 痞子衡嵌入式:ARM Cortex-M内核那些事(3.2)- 安全模块看特性(M23/33/35P)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M功能模块,不过侧重点是三款安全特性处理器. ARM Cortex-M处理器家族发展至今(2020),已有8代产品 ...

  3. <c ss高效开发实战>看完了,Bootstrap学习是关键

    Bootstrap果真给我们带来了很多便利,学习CSS,必须要掌握很多框架和快速学习的方法. 这本书看完了,也写过几篇读书笔记,墙裂推荐.不上书封面了,只上书的导图. 这里说几点学习CSS的心得 1. ...

  4. 终于把你必须知道的.NET看完了

    终于把你必须知道的.NET看完了,第二步就是把精通ASP.NET MVC3框架这本书搞定,练习MVC3的使用,并把EF,LINQ也练习一下,期间要做一个项目“多用户微信公众平台”项目,最近微信公众平台 ...

  5. C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻

    C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...

  6. 跌跌撞撞的看完了《jquery技术内幕》

    今年2月20日买的书,今天是5月26,三个月来,除了周末休息一天,如果没有特殊情况,我都会每晚花两个小时看这本书,以及查各种与jquery源码相关的资料.今天总算是跌跌撞撞的看完了,有点小激动,也有点 ...

  7. 刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!

    刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!

  8. JS框架设计之命名空间设计一种子模块

    命名空间 1.种子模块作为一个框架的最开始,除了负责初始化框架的最基础部分. 2.种子模块作为框架的最开始,那么什么是种子框架的最开始呢?答案是IIFE(立即调用函数表达式); IIFE(立即调用函数 ...

  9. primer看完了

    放假这将近十天吧,终于把C++ Primer中文版第五版大致看完了,然而第四部分(高级主题)还是没有看,感觉那是需要有足够的项目经验再看. 另外,看一遍肯定不够,忘得也会很快,我十分确认今后还会很多次 ...

随机推荐

  1. lesson5-图像检测-小象cv

    R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...

  2. PTA——判断胖瘦

    PTA 7-40 到底是不是太胖了 #include<stdio.h> #include<math.h> int main() { ,N; scanf("%d&quo ...

  3. python django day 3 页面,自动 跳转,参数传递

    zqxt_views/urls.pypath('', calc_views.index, name='home'), calc/views.pydef index(request): return r ...

  4. url参数和字典的相互转化

    目标url:https://www.baidu.com/s?&wd=python&ie=utf-8 将字典转成url参数 使用urllib.parse的urlencode方法,将字典对 ...

  5. ELFhash

    字符串哈希算法(以ELFHash详解)   更多字符串哈希算法请参考:http://blog.csdn.net/AlburtHoffman/article/details/19641123 先来了解一 ...

  6. 更改MySQL数据库的编码为utf8mb4

    原文:http://blog.csdn.net/woslx/article/details/49685111 utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3 ...

  7. SQL相关语句

    1.分类 数据定义语言(DDL),用来定义数据库.表 列 ,用到的关键字:create.alter.drop. 数据操作语言(DML),数据库进行更行的操作, insert.delete.update ...

  8. drone 1.0 docker-compose 运行试用

    drone 1.0 已经rc了,新的界面以及新的功能 github 客户端创建 docker-compose 文件 version: '3' services: drone-server: image ...

  9. Hasura GraphQL 内部表结构

    Hasura 使用pg 数据库存储引擎的元数据信息,在hdb_catalog schema 下面,是在初始化的时候生成的 对于表的管理.权限的信息存储都在这个schema下 hdb_table 这个表 ...

  10. 解决jpgraph在php7.0版本下时,无法显示例子图表的问题

    解决gpgraph4.02在php7.0显示空白框问题 Gpgraph类库强大的绘制图表的功能深受广大phper的喜爱,目前官方最新的版本是 jpgraph-4.0.2 ,适用于php5.0及7.0以 ...