进来,让BUG远离你!

COD论文笔记VSCode: General Visual Salient and Camouflaged Object Detection with 2D Prompt Learning VSCode模型通过引入领域特定提示和任务特定提示,结合提示区分损失,成功地在单一模型中处理多个显著目标检测和伪装目标检测任务。这种方法不仅提高了模型的性能,还展示了其对未见任务的泛化能力。作者使用 Visual saliency transformer ICCV 2021 作为baseline model这张图展示了VSCode模型的整体框架,特别强调了2D提示学习方法。 阅读详情

笔者从开始学习C语言到现在,经历过大大小小的BUG不计其数,今天就来给大家分享几种常见的BUG.

 

(1)书写标识符时,忽略大小写

main()

{

    int c=5;

    printf("%d",C);

}

编译程序会出错。C语言区分大小写。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

(2)忽略变量类型,进行不合法运算

main()

{

    float a,b;

    printf("%d",a%b);

}

%是求余运算,得到a/b的整余数。整型变量可进行求余运算,而实型变量则不允许进行求余运算。

(3)将字符常量与字符串常量混淆

char a;

a="b";

字符常量是一对单引号括起来的常量,字符串常量是一对双引号括起来的常量。C语言规定以“\0”作为字符串结束标志,它是系统自动加上的,所以字符常量“b”其实包含两个字符'b' '\0',而把它赋给一个字符变量是不行的。

(4)忽略了“=”和“==”的区别

if(a==b)a=b;

C语言中,“=”是赋值运算符,“==”是关系运算符。在此代码中,前者是进行比较,后者是进行赋值。

(5)忘记加分号

c=1

b=2

几乎在所有编程语言中,都是用“;”代表一句或多句语句的结束。

(6)多加分号

{

    z=x/y;

    z=z%10;

    printf("%d",z);

};

if(a%2==0);

a+=a;

for(i=0;i<5;++i);

{

    a-=a;

    printf("%d",a);

}

(7)忘加地址运算符“&”

int a;

scanf("%d",a);

scanf函数的作用是:按照a在内存中的地址将a的值存进去。“&a”是指a在内存中的地址。

(8)输入数据的方式与要求不符

scanf("%a%b",&a,&b);

输入时不能用“,”将a,b隔开如:3,4;应该用空格

scanf("%a,%b",&a,&b);

此时应输入a,b 才是正确的

scanf("a=%d,b=%d",&a,&b);

此时应输入a=3,b=4

(9)输入字符的格式与要求不一致

在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。

scanf("%c%c%c",&c1,&c2,&c3);

如输入:a b c 字符“a”赋值给c1,字符“ ”赋值给c2,“b”赋值给c3。正确形式应输入:abc

(10)输入、输出的数据类型与所用格式说明符不一致

int a=1;

float b=1.2;

printf("%f%d",a,b);

这种错误要引起重视,编译器不会出现错误,但运行结果错误。

(11)输入数据时,规定精度

scanf("%6.2lf",&a);

输入数据时不能规定精度。

(12)switch语句中漏写break语句

switch(grade)

{

    case 'A':printf("90-100\n");

    case 'B':printf("75-89\n");

    case 'C':printf("60-74\n");

    case 'D':printf("<60\n");

    default:printf("put in error\n");

}

由于漏写了break语句,case只起标识的作用,而不起判断的作用。当grade的值为A时,程序会从上到下执行完,五个printf都输出。正确的写法应为:

switch(grade)

{

    case 'A':printf("90-100\n");break;

    case 'B':printf("75-89\n");break;

    case 'C':printf("60-74\n");break;

    case 'D':printf("<60\n");break;

    default:printf("put in error\n");break;

}

(13)忽视while和do-while语句区别

while语句

main()

{

    int a=0,i;

    scanf("%d",&i);

    while(i<=10)

    {

        a+=i;

        ++i;

    }

    printf("%d",a);

}

do-while语句

main()

{

    int a=0,i;

    scanf("%d",&i);

    do

    {

        a+=i;

        ++i;

    }while(i<=10);

    printf("%d",a);

}

当输入的i值小于等于10时,两者输出结果无区别。当输入的i大于10时,while语句不执行循环体,do-while语句执行一次循环题。因为while语句先判断后执行,do-while语句先执行后判断。

(14)忽略自增(自减)运算符的细节

第一个区别, i++ 返回原来的值,++i 返回加1后的值

main()

{

    int a=0,b=0,i;

    scanf("%d",&i);

    a=++i;

    --i;//保证i值没变化

    b=i++;

    print("a=%d,b=%d",a,b);

}

输出结果: a=i+1 b=i 。因为a=++i;是先把i加1再赋值给a,可以把此句分解为:i=i+1;a=i;;b=i++; 是先把i赋值给b再加1,可分解为:b=i;i=i+1; 。

第二个区别,i++ 不能作为左值,而++i 可以

左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。

int i = 1;

int *p1 = &(++i); //正确

int *p2 = &(i++); //错误

++i = 6; //正确

i++ = 8; //错误

(15)忽略sizeof()和strlen()的区别

char str[20]="Incredibly";

int  a=strlen(str); /* a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 */

int  b=sizeof(str); /* b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响*/

(16)在定义数组时,将定义的“元素个数”误认为是可使用的最大下标

main()

{

    int a[5]={0,1,2,3,4};

    printf("%d",a[5]);

}

C语言中,定义时用a[5],表示a数组中有5个元素。其下标是从0开始的,数组中最后一个元素是a[4],不存在a[5]。

(17)定义数组时误用变量

int i;

scanf("%d",#i);

int a[i];//错

数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组大小作动态定义。

(18)地址运算符&使用错误

char str[8];

scanf("%s",&str);//错

C中,数组名代表地址。正确的应为:

char str[8];

scanf("%s",str);

(19)同时定义了形参和函数中的局部变量

int x,y,z;

int max(x,y)

{

    z=x>y?x:y;

    return z;

}

形参应在函数体外定义,而局部变量应在函数体内定义。正确的应为:

int x,y;

int max(x,y)

{

    int z;

    z=x>y?x:y;

    return z;

}

大家还有哪些常见的易错点呢,欢迎留言。另外,你如果感觉自学C/C++语言有困难的话,我本身是一个C/C++出身的程序员,我整理了一些学习C语言的视频在扣裙,大家有兴趣可以一起来学习,893,154,,226。

026:vue+threeJS 设置地面铺砖的效果 BoxGeometry 是 Three.js 中用于创建立方体或长方体的几何体类。它允许你指定立方体的宽度、高度、深度以及这三个方向上的分段数,从而控制立方体的细分程度。width: 立方体的宽度(沿 x 轴方向)。height: 立方体的高度(沿 y 轴方向)。depth: 立方体的深度(沿 z 轴方向)。widthSegments: 可选参数,指定立方体在 x 轴方向上的分段数,默认值为 1。heightSegments: 可选参数,指定立方体在 y 轴方向上的分段数,默认值为 1。 阅读详情

相关推荐

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9060

C语言常见基础错误大全总结

1.语句分号错误,引号后忘记加逗号,大小写错误 scanf("%c",&a); 2.输入中的取地址符错误 int a; scanf("%d", &a); //&a 表示变量 a 的地址,&是取地址符 char a; scanf("%c",&a); char a[100]; scanf("%s",a); 3.类型及其范围是否错误。 这里只给整型。 前提:一个字节=8位 int、long、long long取值范围 short int 1个字节储存 short

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 9400

华为交换机链路聚合对接思科交换机链路聚合故障

2台华为交换机采用堆叠方式与思科交换机之间使用链路聚合,华为交换机与cisco交换机链路捆绑接口频繁UP/DOWN,业务中断。

网络工程师日常的博客 2116

C语言初学者常见错误

一.语言使用错误 在打代码的过程中,经常需要在中文与英文中进行转换,因此常出现一些符号一不小心就用错,用成中文。例如:“;”中文中的分号占用了两个字节,而英文中“;”分号只占用一个字节。编译器只能识别英文。因此会报错。在报错后检查这些字符时最需要眼力和时间的。因此打代码是需注意。 二.忘打分号 分号是C语言是语句的标志,在C中无分号不成语句,无语句不能识别。 在编译中如果没有分号,编译器就会将,b...

weixin_34377919的博客 1978

YOLO26涨点改进 | 损失函数改进篇 | 引入SlideLoss,适配尺度变化+遮挡+难易样本不平衡,手把手配置+实战案例

COCO-Hard是COCO数据集的复杂场景子集,包含80个类别,重点筛选多尺度、遮挡密集样本,其中小尺度目标(<32×32像素)占比42%,大尺度目标(>128×128像素)占比28%,遮挡目标占比57%,场景涵盖人群密集、车流拥堵、复杂工业环境,完美模拟真实复杂检测场景,适合验证SlideLoss的适配性。

qq_36130719的博客 157

黑猫带你学eMMC协议第4篇:eMMC概述

1 前言 声明: 本文依据eMMC JEDEC5.1协议及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 本文大约3000字,从emmc的内部结构框架、供电、总线、寄存器等各方面进行框架性的介绍,本章节内容不需要深入研究,读完本篇文章,只要能对emmc有个框架下的了解,就可以了。 2 内部结构框架 由图可以看出,emmc内部由两块组成:控制器 + 存储介质。emmc内部存储介质绝大部分为nand flash。 众所周知,我们需要存储数据到nand flash中,并

黑猫奥利奥的博客 3340

C语言编译错误汇总整理

C语言编译错误是指在编译C语言程序时,编译器检查出的源代码中的错误。

极客代码 3515

BMS控制板硬件设计核心要点与工程避坑指南

电池管理系统(BMS)硬件设计是保障锂电安全与寿命的关键环节,其本质是模拟前端精度、数字控制可靠性、电源完整性及电磁兼容性四大要素的系统协同。理解AFE芯片(如BQ76920)的物理层约束、MCU与专用监控IC的异构分工逻辑,是构建高鲁棒BMS的基础;而晶振布局、I²C总线匹配、MOSFET体二极管方向、开尔文采样等细节,直接决定量产良率与EMC合规性。在电动工具、储能系统、两轮电动车等中低功耗BMS应用中,成本敏感型方案常采用STM32F0+AFE架构,此时电源滤波电容选型、复位电路ESR控制、TVS/齐

weixin_30591519的博客 260

C语言错误类型汇总

int prime(int n){ //第一次声明在函数定义时!是素数返回1,不是素数返回0。而函数中,可以直接在 “函数原型” 中声明。,多次声名,就算声明类型相同,也是错误的。第二次声明在函数体内,重复!例如:写一个求素数函数。

m0_73528660的博客 9268

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

k8291121的博客 1099

c语言编程常见错误集锦

c语言常见错误集锦,从书写规范到知识细节。

wardseptember的博客 2万+

山羚羊优化算法(MGO)详解:从自然智慧到优化引擎

山羚羊优化算法(MGO)是一种新型元启发式算法,灵感来源于山羚羊的社会行为和等级制度。该算法模拟了四种核心行为:领地独居雄性(局部开发)、母系山瞪羚群(群体协作)、单身雄性山瞪羚(全局探索)和迁徙觅食(动态扰动)。MGO通过数学建模将这些生物行为转化为优化机制,在探索与开发间实现平衡。算法已成功应用于函数优化、无人机路径规划和支持向量机优化等领域,展现出优异的性能。未来研究将聚焦于参数自适应调整、混合算法设计等方向,以进一步提升算法性能。

qq_42212808的博客 202

致敬1024:程序员节快乐,愿代码如诗,Bug远离!

又是一年1024,作为程序员的我们,用键盘敲击着梦想,用代码构建着未来。无论是刚入行的新人,还是征战多年的老将,我们都在用自己的方式,让这个世界变得更美好。🎉 庆祝属于我们的节日💻 享受编程带来的乐趣🤝 感恩团队的并肩作战🚀 期待未来的无限可能🎉');1024程序员节快乐!愿代码如诗,Bug远离!🎊💻✨。

Chad的博客 810

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

商城网站带支付如何建设? 远离bug支付平台很重要!

可以说,开发一个新的商城,实现支付功能是难点也是重点,中间任何一个流程出现问题商城也就有了大bug,从而威胁到企业及用户的资产安全!   商城网站带支付如何建设?今天郑州易美科技小编就着重从在线支付讲述商城问题,一起来看看吧。   在完成首页显示,用户添加购物车,确认订单等功能后,下面就是支付功能的开发了。用户确认了订单后会直接跳转到支付页面进行在线支付,在线支付需要第三方的接口,下面

q744803399的博客 1213

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

程序猿,这个bug没解决怎么好好过节?

程序猿能解决千千万万的 bug 唯有这个 bug 无从下手 我们特地请来一位专业治 bug 的大夫 传授他的独门秘方 护士小姐姐 tips : 保持手机不动,跟着屏幕旋转头部。 凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字 对了,今天是1024 程序员节 ...

weixin_30613433的博客 96

深度学习工具包 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")

如何让bug远离你?

如何让bug远离你?规避bug技巧

石墨博客 1344

尽量远离这种人

阅读本文大概需要 2.1 分钟。前几天,有球友刚好问过我一个问题,大意是说,张哥作为摸爬滚打的过来人,如果说给一些后来者一个建议,只有一个建议的话,你会给出啥?我想了下,...

stormzhang的专栏 9900

让java代码性能"更高、更优雅、远离BUG

导读 所谓优雅的代码,或者恶心的代码,很多时候是仁者见仁,智者见智。 也同时是看个人喜好或者习惯的。当经验足,看的和谐的代码还不够多的时候,我们可能会追捧某个大神或者奉某本经典为圭臬。然后跟同学或者同事说,有空多看看《重构》和《设计模式》吧。在我看来优雅的代码并不是说这个代码写的有多神,多么让人惊叹。能够让人清晰的去阅读去理解就是好的代码。代码并不是艺术,更多的是严谨的表达出自己的思路。在这个过...

风雨之后见彩虹的博客 385

15项关键提示让您的软件远离Bug干扰

毫无疑问,bug检查是软件开发流程当中极为重要的一环。在今天的文章中,我们将分享15项关键性提示,旨在帮助软件彻底告别bug困扰。 1. 设计用于创建及维护规范及数据库交叉引用索引的工具。建立此类索引应当作为各个项目内QA功能的必要组成部分。 2. 建立一项术语词汇表标...

173

项关键提示让您的软件远离Bug干扰

 毫无疑问,bug检查是软件开发流程当中极为重要的一环。在今天的文章中,我们将分享15项关键性提示,旨在帮助软件彻底告别bug困扰。

. 162

珍爱生命,远离小米手机(上)

曾经用过多种不同品牌的手机,当时智能机在国内刚刚兴起,问题很多。一次偶然的机会用了小米,发现挺不错的。UI美观,容易操作,性价比高,这一用便是5年。尚且懵懂的我竟不知他们是披着羊皮的狼。用的过程中渐渐了解了小米手机,或者说是MIUI的邪恶之处。以后不再愿意使用小米手机,换成华为或者是Google的。珍爱生命,远离小米,远离MIUI。 写这篇文章没有人雇佣我,也不是故意、刻意、蓄意黑小米,而是根据...

神码不是浮云 2023

试着品评:远离你的电脑,代码写得更好!

试着品评:远离你的电脑,代码写得更好!

太阳火神的美丽人生 2146

小程序开发,远离bug

距离小程序发布还差几小时,B1号楼的庆功宴已经备好,一个意外小插曲发生了。 一个高校学生利用 bug 让自己的小程序提前上线了,曾经负责开发者工具、现在已经是 team leader 的 L 并没有感到不悦,只是告诉这位同学:“你很厉害哦,可是我们暂时要先把你下掉啦,拜拜。” 对于尚在襁褓的小程序来说,bug是一个严肃却被包容的存在。每一次版本发布,都意味着大量的bug反馈需要解决,但也意味着小程序有机会变得更加完美。 凌晨时分,小程序正式对外发布了。 谁都知道这只是一个起点。庆功宴之后,来不及休息,

qq_38454699的博客 215

【程序猿猴年金牌福利包】让你远离Bug,紧跟春天的脚步

春天到了,万物复苏又到了踏青赏花的季节朋友圈里认识的,不认识的一个个都出来了大家都赶趟儿似的开始晒照你不让我,我不让你但对于程序“猿”来说不论什么季节修bug才是最寻常的一修就是一整年...

netease_im的博客 99
上一篇: 我是程序员,我有对象,我还可以调用"别人"对象!
下一篇: C语言成为大学必修课!想要不挂科?你只需要这样做
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值