[转载]谈谈2011年度最佳代码

 

原文: http://blog.zhaojie.me/2011/08/from-the-code-of-no-matter-you-believe-it-or-not.html

作者:赵劼

 

这段代码是这样的:

 

try
{
    if (you.believe(it) == true || you.believe(it) == false)
    {
        I.believe(it);
    }
}
catch (Exception ex)
{
    throw new Exception("It's a miracle!");
}
finally
{
    it.justHappened();
}

 代码与原文的对应关系不言自明,从命名风格上看,我们默认其为Java代码。话题主要是围绕在if条件的写法上。

书写风格

先来看看它的书写风格问题。我说这段代码不是老鸟写的,因为老鸟不会把一个布尔表达式跟true和false直接判断,而会写成:

 

if (you.believe(it) || !you.believe(it))

 于是有朋友提出,把布尔表达式跟true或false相比较来的更清晰一些,我表示这话并没有什么道理,因为这种读代码的方式是把视角停留在“数据”层面上:一个布尔表达式返回了布尔型的“数据”,于是把它和另外一个“数据”进行比较。如今的编程都在不断强调“语义”,“语义”的清晰才是真的清晰。我说Java是一门糟糕的语言,主要原因就是指它的表达能力太差,导致写出来的代码体现不出问题的解决方式,让人们把目光都集中在具体每条语句上了,所谓“见木不见林”。javascript,ruby,python等现代语言都在强调“做什么”而不是“怎么做”,语义上就有很大提高了。

回到目前这个具体问题上,if里面的语义是“you.believe(it)”的返回结果,而不是它的值与另外一个布尔常量的比较结果。其实这个观点我从初中搞信息学竞赛时就被老师不断强调,今天我同样咨询了同事,他也赞同我的观点。如果您还继续坚持这种写法不太清晰的话,我只能说“这只是不适应而已,要让自己适应这类写法”,很多人还觉得LINQ不清晰呢,小学生还觉得高中数学的解法不清晰呢。

还有朋友认为,作为编码规范,应该要求这么写,例如:

 

if (10 == i)

 就是说,把常量写在比较操作的左边,并认为“这样更有普遍意义”。其实这也没有必要,这个习惯是从C语言时代遗传下来的“陋习”。在C语言里,如果把常量写在比较右侧,并且一不小心把“比较”操作符(两个等号)写成“赋值”操作符(一个等号),也可以编译通过,但是结果却大不相同,这给错误排查也会带来许多麻烦。但是,在如今的语言里已经比C语言做的安全多了,所以没必要制定这种规范。把一种语言的标准带入另一种语言不叫做“有普遍意义”,只是多余。

代码含义

然后要谈的便是代码与那句话的“映射”关系了,再来仔细读一下这个if子句:

 

if (you.believe(it) || !you.believe(it))
{
    I.believe(it);
}

 从“需求”上来理解,我认为代码应该保证if内部的代码一定会执行。那么现在这个需求肯定会满足吗?不一定,因为you.believe方法可能是有副作用的:如果它第一次调用返回false,而第二次调用时返回true,则if内部的代码就会整段略过,这显然不是铁道部王发言人的意图。因此,有同学提议代码应该是这样的:

 

 

if (true || you.believe(it))

 这么做的确可以忽略you.believe(it)的结果,因为它已经被短路了根本不会执行。可能它也能满足需求,但我想更合理的做法可能应该是:

 

 

if (you.believe(it) || true)

 这段代码与之前的区别就在于you.believe(it)一定会被调用一次,但是无所谓其结果是如何,这充分符合天朝某些部门喜欢装摸作样“咨询民意”的状况。

 

扩展思考

最后再来一道扩展思考题吧:有人把“你爱,或者不爱我,爱就在那里,不增不减”写成了一段java代码:

 

if (you.Love(me) || !you.Love(me))
{
    love++;
    love--;
}

 有人说,这段代码的if条件本身应该被编译器优化掉,因此会直接执行if内部的代码。还有人说,if内部的代码也会被编译器优化掉。您怎么看,为什么呢?

 

uniapp - 详细解决 H5 网页报错 Uncaught Error: Async component timed out after ? ms.(移动端h5页面白屏或加载缓慢失败,超时报错处理) uni-app,vue3,网页,h5,移动端,手机H5页面,浏览器,报错,uniapp报错,Asynccomponenttimedoutafter,如何解决这个问题,vue3Asynccomponenttimedoutafter,异步组件超时了怎么办,async,详细解决方案,AsyncComponents异步组件,导致页面打不开了,白屏什么也不显示,网页载入非常慢卡顿,vue3网站报错,超时,nuxt3,详细解决方案,浏览器控制台报错,爆红并且页面卡住了,依旧报错,找不到异步组件的报错 阅读详情

相关推荐

emwin与Modbus通信结合:项目实例

通过实际项目讲解emwin界面设计与Modbus通信协议的融合应用,深入剖析数据交互流程。掌握emwin在工业控制场景中的实用技巧,提升系统人机交互与稳定通信能力。

weixin_34618526的博客 482

不管你信不信,反正我信了。是这样实现的……

生活中的东西,都是可以用程序来模拟实现的。     今天code陈问我这样一个问题:             用程序表示“你回来了,你回来了我很高兴!”这句话。             我是这样写的:                                                boolean  isback =true;

jinzi12345678的专栏 1777

三角洲行动交易行自动化脚本

DFMarketBot - 三角洲行动自动交易助手 DFMarketBot是一款专为三角洲行动游戏设计的交易行自动化工具,通过OCR识别和鼠标模拟实现自动补卡、补子弹功能。项目采用Python开发,支持Windows平台,主要功能包括: 自动检测并购买指定物品(房卡/子弹) 价格监控与智能购买(低于设定价格自动下单) 自定义购买数量与次数限制 支持窗口/无窗口两种游戏模式 使用前需安装Tesseract OCR引擎并配置游戏为1920*1080分辨率。通过JSON文件可灵活配置监控物品清单、理想价格和购买策

愤怒的阿木木的博客 3万+

whether you believe it or not, i believe!!

try { if (you.believe(it) == true || you.believe(it) == false) { I.believe(it); } } catch (Exception e) { throw new Exception("It's a miracle!"); } f...

helpbs 231

5分钟搞定!用OpenCV实现全景图像柱面展开的保姆级教程(附完整代码)

本文提供了一份使用OpenCV实现全景图像柱面展开的详细教程。通过清晰的数学原理讲解和分步代码演示,指导读者快速掌握从等距柱状投影全景图到平面展开图的核心转换方法,并涵盖性能优化、参数调整及透视视图扩展等实用技巧,适合图像处理爱好者和开发者实践。

sony5的博客 571

西门子S7通信协议TSAP配置全攻略:从默认值到自定义修改(附各型号对照表)

本文深入解析西门子S7通信协议中TSAP配置的核心原理与实战方法。针对S7-200/300/400/1200/1500等主流PLC型号,提供了默认TSAP对照表,并详细阐述了如何根据机架号和插槽号计算或自定义Remote TSAP。文章结合常见连接失败案例,给出了系统化的排错流程,旨在帮助工程师快速打通S7通信链路,提升工业自动化现场调试效率。

weixin_29163797的博客 278

不管你信不信,反正我信了

很多程序员, 包括我自己, 在职业生业道路上前进时会陷入一个误区, 认为对程序员而言最重要的是技术,因而不断的提升技术水平来武装自己。 他们写代码是以技术为驱动的,比如说在项目中使用XX高端的技术,实现XX设计模式、精妙算法。 这没有什么问题,追求技术水平的提高是好事, 能更好的解决问题,能提升自身的行业竞争力。 但是, 在追求技术的过程中,不能忽略掉一样更加重要的事物。 程序员写代码的目的是什么

带你撸出一手好代码 820

5分钟搞定mmdetection3d多模态推理可视化:从KITTI数据集到3D检测结果展示

本文提供了一份快速上手MMDetection3D进行多模态推理可视化的实战指南。文章详细介绍了从环境搭建、KITTI数据集准备,到模型选择、配置解析,再到执行多模态推理并生成3D检测结果可视化的完整流程,旨在帮助开发者在30分钟内快速验证模型并直观展示检测效果。

weixin_29051149的博客 248

不管你信不信,这就是996的真实内幕!

7月,越来越热的天气,似乎让每一个码农内心越来越烦躁,因为996的加班让他们无法享受夏日凉凉的夜啤。更别提落日的激动(落日意味着下班啦!)一直很想深度剖析一下国内互联网996盛行的原因,总是借口忙、忙、忙而始终没有迈出第一步。作为一个互联网人,工作中天天要求自己小步快跑,不断迭代的工作方式,现实生活却不能推广开来,这或许是996带来的负面影响吧,因为996会让你痛恨所有与之相关的东西。网上关于99...

9万+

BarTender破解版风险与低成本正版替代方案全解析

在工业自动化和企业信息化领域,标签打印与条形码技术是连接物理世界与数字系统的关键环节。其核心原理是通过软件驱动打印设备,将可变数据(如序列号、生产日期)与固定模板结合,生成可追溯的标识载体。这项技术的价值在于实现生产流程可视化、供应链管理精细化与质量控制自动化,广泛应用于仓储物流、制造执行、零售门店等场景。然而,软件授权合规性常成为企业成本控制的痛点,尤其面对BarTender这类行业标准工具时,部分用户可能寻求破解方案。但破解版软件通常采用内存补丁、伪造许可证等技术手段绕过验证,不仅存在法律风险,更会引发

weixin_32736961的博客 728

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号

使用Google Earth Engine(GEE)的Python API,您可以将经纬度坐标转换为Landsat影像的路径/行号。在这个示例中,我们选择了一个位于加利福尼亚州旧金山市附近的点,其经度为-122.084,纬度为37.421998。首先,我们需要导入必要的库和模块。接下来,我们定义一个函数,该函数将接收经度和纬度作为输入,并返回对应的Landsat路径/行号。最后,我们提取路径和行号的值,并将它们作为结果返回。现在,我们可以使用这个函数来获取特定点的Landsat路径/行号。

VwajAlgorithm的博客 348

AQA 2011年度最佳博客

AQA 2011年度最佳博客: http://www.automationqa.com/uchome/space.php?uid=1&do=blog&id=526 转载于:https://www.cnblogs.com/preftest/archive/2011/12/31/2309186.html

weixin_30491641的博客 110

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux设备驱动开发核心原理与实战指南

Linux设备驱动是操作系统内核与硬件之间的关键协议栈,其本质是将物理寄存器、中断、DMA等硬件行为抽象为标准内核接口(如file_operations、sysfs、ioctl)。理解驱动需掌握三大基础:设备树(Device Tree)声明式硬件描述、内核态并发同步机制(mutex/spinlock/completion)、以及DMA与缓存一致性(dma_alloc_coherent/ioremap_nocache)。技术价值在于实现硬件资源的安全暴露与高效访问,广泛应用于嵌入式系统、工业控制、AI加速卡及

weixin_33858485的博客 166

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

2011年度最佳十款免费英文字体揭晓

 2011年就剩下一个月了,眨眼间,一年又要过去了。长期关注WDL的朋友可能知道,每到年末,WDL将发布一系列评选本年度最佳资源的文章。这些文章向读者展示那些可能错过的优秀资源,同时为这些资源的作者提供展示自己的机会。今天这篇文章是2011年度最佳系列第一篇,评选出的是2011年度最佳免费英文字体资源。InfinityOstrich SansFabricaWisdom Scr...

weixin_33806914的博客 97

时代周刊评选2011最佳50发明,Siri上榜

2011时代周刊年度50大最佳发明揭晓,一种堪称感冒杀手的药物DRACO入选榜单首位,苹果iPhone 4S上的一项语音控制功能Siri、英特尔3D芯片、在人机大战中战胜人类的IBM超级电脑沃森、美国新火星探测器好奇号、波音787梦想飞机等科技成果入选。 以下是具体名单: 01. 感冒杀手“双链RNA激活的切冬酶寡聚体”(DRACO) 02. 3D芯片 03. 从脂肪中提取干细胞

雷锋网 1379

转载2011年度最佳代码

try{ if(you.believe(it)==true || you.believe(it)==false){ i.believe(it) } } catch(Exception e){ throw new Exception("It's a miracle!") } finally{ it.justHappened(); }...

weixin_30388677的博客 155

AQA 2011年度 最佳性能测试资源 汇总

AQA 2011年度 最佳性能测试资源 汇总: http://www.automationqa.com/uchome/space.php?uid=4115&do=blog&id=568 转载于:https://www.cnblogs.com/preftest/archive/2012/01/10/2318436.html...

weixin_30468137的博客 79

2011年度最佳 jQuery 插件发布

近日,国外著名博客WDL发布了2011年度最佳 jQuery 插件。jQuery自2006年发布以来,经过五年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架。jQuery的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件,jQuery 插件不仅能够增强网站的可用性,有效的改善用户体验,还可以大大减少开发时间。 Isotope Isotype 是一款非常...

weixin_30505043的博客 67

2011年度最佳 JQuery 插件分享

国外著名博客WDL发布了2011年度最佳 jQuery 插件。jQuery 自2006年发布以来,经过五年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架。jQuery的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件,jQuery 插件不仅能够增强网站的可用性,有效的改善用户体验,还可以大大减少开发时间。 Isotope Isotype 是一款非常优秀的 ...

weixin_30361641的博客 118

2011年度最佳 jQuery 插件

近日,国外著名博客WDL发布了2011年度最佳jQuery插件。jQuery自2006年发布以来,经过五年的迅速发展,目前已是最流行和使用 最广泛的JavaScript框架。jQuery的易扩展性吸引了来自全球的开发者来共同编写jQuery插件,jQuery插件不仅能够增强网站的可用 性,有效的改善用户体验,还可以大大减少开发时间。 Isotope Isotype 是一款非常优秀的 jQue...

weixin_30481087的博客 65

2011年度最佳10款免费的 WordPress 主题

这篇文章与大家分享2011年度最佳10款免费的 WordPress 主题,这些漂亮的主题可以免费下载使用。WordPress 是一个功能非常强大的博客系统,插件众多,易于扩充功能,安装和使用都非常方便,而且有许多精美的免费主题资源。1.Swatch下载演示2.Wootique下载演示3.Diary / Notebook下载演示4.Balita ...

weixin_33724570的博客 144

11月Web技术最前沿:2011年度最佳jQuery插件揭晓(转载---只想收藏而已)

关注技术趋势,关注Web前端开发,每月30号我们会为您推荐本月Web技术最前沿。 51CTO技术沙龙:HTML 5应用开发经验分享 在11月26日51CTO成功举办的第17期51CTO技术沙龙,有幸请到了正益无线科技(北京)有限公司CTO赵庆华与北京神奇时代高级技术经理张哲,两位老师分别结合实际开发经验与大家分享HTML 5应用开发。 主题: 赵庆华: 《HTML5在移动开发领域的实践》PPT...

xiaoshengjinbu的博客 141

2011年度最佳jQuery插件

2011年度最佳jQuery插件 jQuery was first released in 2006. Nearly 5 years later, it’s still going strong – due largely in part to the community that’s been built up around it. This community of devel...

weixin_30760895的博客 121

让人期待的2011年度最佳 jQuery插件发布

近日,国外著名博客WDL发布了2011年度最佳 jQuery 插件。jQuery 自2006年发布以来,经过五年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架。jQuery 的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件,jQuery 插件不仅能够增强网站的可用性,有效的改善用户体验,还可以大大减少开发时间。 Isotope Isotype 是一款非常...

weixin_30352191的博客 125

让人期待的2011年度最佳 jQuery 插件发布啦

近日,国外著名博客WDL发布了2011年度最佳 jQuery 插件。jQuery自2006年发布以来,经过五年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架。jQuery的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件,jQuery 插件不仅能够增强网站的可用性,有效的改善用户体验,还可以大大减少开发时间。 Isotope Isotype 是一款非常...

weixin_30325793的博客 67
上一篇: 写给即将入行的程序员的一封信
下一篇: 海边的遐思 - 汪国真
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值