程序员低级错误大收集,各个痛心疾首。

Java程序员容易犯的10大低级错误 主要介绍了Java程序员容易犯的10大低级错误,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载

先汇总一下错误的分类吧
1 全角问题
2 =和==的问题
3 空格问题
4 拼写问题
5 疏忽,忘记做该做的事情
6 新东西,不是很熟悉


下面是明细,呵呵呵。

1 老紫竹(java2000_net)
我最难忘的一次,是自作聪明的在一个for循环后面加上了一个分号,而且是在大量的代码重构之后,运行时偶尔发生这个错误。
大概用了我近1周的时间。

从那之后,我的代码的大括号,就都放在代码行的后面了!

  1. for(int i=0;i<=10;i++);   
  2. {   
  3.   //   
  4. }  

 

  1. for(int i=0;i<=10;i++);{   
  2.   //   
  3. }  



编辑器格式化代码时,可以有很大的帮助。
说说大家曾经常犯的低级错误吧,也好让其它朋友有个心理准备,想拿块豆腐砸自己脑袋的冲动少几次。


2 jsp页面莫名的报空指针,而且有时出有时不出。最后发现是jsp代码里混了个全角的空格,排版比较乱的时候看不出来。然后那空格被当变量名的一部分了,偏偏那变量还不常用。悲剧啊( ̄(工) ̄)

3 当年用vc,貌似写个类似于jTable的东西,在我的机器上一切都好,在老板(小公司,cto也是老板之一)的机器上一跑就死。。。。。。。。然后发现,我的机器分辨率是640×480,老板的是800×600的,结果数组溢出。。。。。。。


4 写了2个preparestatement,一顿addbatch,然而最后只写了一个preparestatement.executeBatch();找了n长时间才看到问题所在。

5 三层架构里面的业务逻辑层比如:


  1. public bool Add(hLink.Model.FavoriteInfo model) {   
  2.   return dal.Add(model) > 0;   
  3. }  


写成了


  1. public bool Add(hLink.Model.FavoriteInfo model) {  
  2.   return Add(model) > 0;   
  3. }  


还好碰到了一次,以后报stackoverflow...异常就知道什么错了,呵呵、

6 struct CXTEST_DAT
{
...
WORD wLen;
...
}
int TestData(..., DWORD dwLen);
使用时:
CXTEST_DAT stData;
TestData(..., stData.wLen);
自动扩展为DWORD后,长度总是不对

7 我也经常犯低级错误,但我觉得并不可笑,每次发现自己犯低级错误后,自己的印象也更加深刻,重复犯错的机率就小了很多。

比如,我第一次使用Java枚举时是这样写:


  1. /** 
  2.  * SQLCommandType SQL命令类型枚举 
  3.  * @author CodingMouse 
  4.  * @version 1.0.0.1 
  5.  */  
  6. public enum SQLCommandType {  
  7.           
  8.     /** 
  9.      * SQL查询数据命令 
  10.      */  
  11.     SELECT,  
  12.     /** 
  13.      * SQL插入数据命令 
  14.      */  
  15.     INSERT,  
  16.     /**  
  17.      * SQL修改数据命令  
  18.      */  
  19.     UPDATE,  
  20.     /** 
  21.      * SQL删除数据命令 
  22.      */  
  23.     DELETE  
  24.       
  25. }  



当在方法中switch传入的枚举参数值时:


  1. switch(枚举变量) {  
  2.     case SQLCommandType.SELECT  
  3.         // 中间的逻辑处理  
  4.          break;  
  5.     case SQLCommandType.INSERT  
  6.         ......  
  7. }  



语法老报错,却不知道怎么回事,明明Java中的switch分支是支持枚举的啊?
后来摆渡了一下才知道原来switch分支中case枚举时是不需要加枚举类型前缀的。


8 oracle ,写sql 语句时候 怎么老是提示错误 ,语句老长 ,调试了一天 ,眼睛看花了 ,结果一看 ,掉了个冒号!!
老紫竹的家


9 又一次 装了个防火墙 运行myeclipse的时候 报错,说端口有问题 ,我还以为是被占用 或者tomcat的问题 弄了半天 百度 Google 都无果,猛然发现是被防火墙拦截了


10 struts.xml ------>sturts.xml


11 用C言语时
if(i=1)
{
}本来我是想判断真假
结果......


12 在修改配置文件的时候,就因为一个空格,而找了半天的错误

老紫竹的家
13 在维护公司一个比较老的项目的时候,自作聪明地写了这么一个类(主要是为了共用数据库连接)
public class DataQuery{
//静态的connection
private static Connection con=ConnectionFactory.getConnection();

private Collection <User> getUsers(int groupId){
Statement st=null;
ResultSet rs=null;
try{
st=con.createStatement();
String SQL="......";
......
}catch(Exception e){
e.printStackTrace();
}
}

//其他查询方法,共用一个connection......
}

因为这个项目已经运行了5年了,Struts1.1的时候就做的这个项目,老紫竹的家实在没有办法在里面配连接池,于是自作聪明在里面做了这种事
唉
后果很显然啊
要么是connection太多,要么是某个地方把connection关了导致其他方法抛空指针
还好,出问题的时候拿过来跟了一把马上意识到了这个愚蠢的问题
唉。。。


14 以前犯过一个错误,在while()中==写成=了。
因为开始的时候写的是正确的,后来不知道怎么不小心误操作删掉一个等号,结果程序死活不对了。当时是在一个嵌入式平台上,开发环境很垃圾,所以还老以为是编译环境的bug。

昨天写程序调出了n个bug,一个是在finally加返回语句了,程序输出的正好有别的异常,所以没往这考虑。搞了半个下午才发现问题。
还有指针的问题是最让人头疼的了。



15 用中文输入法输入全角的分号,结果编译不通过,还查不出原因

老紫竹的家
16 select * from a where a.idin(.....)


17 前10分钟写JAVA代码,写好后再写javascript代码
错误:
for(int i = 0 ; i < xxx.length; i++){
}
正确:
for(var i = 0 ; i < xxx.length; i++){
}
老紫竹备注:这个错误太长见了,我也经常如此


18 我的第一个错误是,UPDATE 是后面没有加条件,结果,所有数据全部,UPdate了,呵呵,老板猛劈!!!


19 有此写存储过程传进来的参数USERId, 有张涉及到的表有字段userId
存储过程有一个条件为 update *** where userId = USERID;
把数据库干翻了,后悔得要死。
不区分大小写啊!


20 把表单里面的input标签的类型写成了submit,本来这是正常的,但是我的目的是想在input类型中触发某一个方法,然后在页面上显示相应的数据,并不是想提交整个表单,结果我一点input中的按钮,页面始终没有反应,新数据就是不能够显示,搞了整整两天才发现这个简单的问题!


21 for (int i = 0,len = arr.size(); i < len; i++) {
temp = arr.get(0);
}
。。。循环下来都取的第一个元素。。。


22 改linux内核的时候缓冲区长度定义为128字节,后来改了方案,老紫竹的家需要512字节的缓冲区,忘了改定义,结果一赋值缓冲区溢出,内核崩溃,查了几个月才查出是什么原因


23 写SQL存储过程的时候拼接字符串的长度给的太小,导致多条件查询的时候总是出现bad results。。。


24 VB的代码
FOR I=1 to N
Next
忘记给I加一了

老紫竹的家
25 操作注册表是造成了溢出,把堆破坏了,造成了之后的代码,只要申请new,malloc就出错,查了半天才查出来。
主要是写注册表的函数的参数是传出参数,返回指超出了定义的长度。
还有就是c下,segment错误, 数组越界,很难查,都是运行时出错, 访问了不能访问或无效的地址。


26 嵌套循环用同一个变量:


  1. int i=0;  
  2. while(i<10){  
  3.   for(i=0;i<5;i++){  
  4.     ....  
  5.   }  
  6. }  




27 印象最深刻的就是c#的一个循环
if后面忘加{}

调了一个下午

28 引用窗体类指针是直接定义头文件用 没有在App中存放 造成指针不一样,调不出相应成员(VC)


29


  1. Sring date  = request.getParameter("date");   
  2.     
  3.  if(!"".equals("date")){   
  4.      .....   
  5.  }   
  6.     
  7.  ........   



最低级的错误......
老紫竹备注:我也犯过多次,习惯的就把双引号加上去了

30 循环变量搞错了
for( int i=0; i!=5; ++i )
{
for( int j=0 j!=5; ++i )
{


31 记得初学Delphi 的时候,把程序代码保存在了一个中文命名的目录下,按F9 编译加运行,
始终运行失败,到处找人帮忙看,整个项目组高手都找遍了,都觉得奇怪,折腾了好久,都解决不了,各种方法都用尽了,
就是不能正常运行,后来把程序重新抄了一遍,换了个文件夹,问题解决了。
从那以后再也不敢把程序放在中文文件夹了,这事过去五六年了还记得。


老紫竹的家
32 打包的时候不修改数据库配置文件,然用户在测试数据库上跑


33 昨晚写条件语句时把If()的括号输成了全角的格式。偏偏那个IF括号还是嵌套的,盛怒之下卸掉了所有中文输入法,今天又重新装上


34 一次用了ImageButton,结果又用js进行的提交,照成了冗余数据,后来才知道ImageButton是会submit的~

35 数据库时的case语句
case when then
后面总是忘了写end

36 写SQL语句用全角的逗号然后调试总是报sql语句错误动员很多同事帮我查错,最后发现被同事鄙视很久


37 我最近也在维护公司的一个网站,发现原来写程序的那个人也是用了全局的静态的连接,导致访问的人多时老是出现数据列不存在的错误,他竟然在数据层中用一个这样的变量,搞得上面说我写的程序有问题,自从修改后就没出现不存在数据列的问题了.呵呵.
老紫竹备注: static 这东西,老紫竹的家你一定要知道他到死是干啥的再用,否则你还是去掉比较保险,虽然浪费点内存。但问题出现的越早越好啊。


38 一个变量命名中的0写成O,不知道几个兄弟可以不戴眼镜找出来


39 form写成了from。。。。。。。

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码) 本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。 阅读详情

相关推荐

Gamma变换算法之Matlab&FPGA实现

Gamma映射原理 什么是Gamma曲线 人眼的感光与光强并不是呈线性关系的,而是呈非线性关系(指数型关系,如下图左-曲线。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增加,人眼不易分辨出亮度的变化。而图像传感器与输入光强呈线性关系(如下图左-直线)。从图中可见,当传感器感光在20%左右时,人眼感光响应达到了50%,人眼对低照度的变化更为敏感。从下图右侧可见,Reference Tone为人眼感光50%的亮度,而传感器在感光50%时则相对暗的多(见Select,近似中性灰)。这种将原始图像通过映射操

CrazyBingo的博客 7407

程序员低级错误大收集 各个痛心疾首

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先汇总一下错误的分类吧

jgfyyfd的博客 673

ArduSub深度调参指南:如何让水下机器人像鱼一样稳定游动

本文深入探讨了ArduSub水下机器人的深度调参策略,旨在解决ROV在水下晃动、响应迟钝等问题。文章系统解析了级联PID控制逻辑,并针对静水与水流环境,提供了具体的深度保持与姿态控制调参方法、实战日志分析技巧以及异常振荡处理方案,帮助用户实现水下机器人稳定、流畅的游动性能。

CAT789的专栏 373

开发人员经常犯一些低级错误如何解决

这种现象在开发流程不规范的团队里特别常见,尤其是一些“作坊式”的团队里。解决这种问题一般从两个方面入手: 1.开发管理入手 从根源来解决问题。可以制定规范的开发流程,甚至可以制定惩罚制度,还有就是软件开发前做好规划设计。 2.是加强测试 具体做法就是加强开发人员的自己测试,把这些问题“消灭”在开发阶段,这是比较好的做法 3.通过规范的缺陷管理来对开发人员进行控制 比如测试部门

sysu_lluozh 6807

芯片低功耗设计的两种常用EDA流程

如题。

EricWZY2008的专栏 5558

envi反演水质参数_遥感水质反演之反演模型

水质反演的框架图此为反演模型的章节第一部分,统计学基础:概率论、矩阵和数理统计的知识统计学知识框架# 1 基本统计概念知识在于应用,而非记忆!我们都是在样本的层面去操作数据的,以达到对总体性质的估计和推断,拿到一组数据首先进行基本的统计描述,常用的有:样本均值: 样本方差(调整方差)不是除以n,而是n-1, 标准差为样本方差开方即可皮尔逊积矩相关系数(简称相关系数): 相关系数范围在[-1,...

weixin_35275922的博客 3229

程序员低级错误大收集,各个痛心疾首

先汇总一下错误的分类吧 1 全角问题 2 =和==的问题 3 空格问题 4 拼写问题 5 疏忽,忘记做该做的事情 6 新东西,不是很熟悉 下面是明细,呵呵呵。 1 老紫竹(java2000_net) 我最难忘的一次,是自作聪明的在一个for循环后面加上了一个分号,而且是在大量的代码重构之后,运行时偶尔发生这个错误。 大概用了我近1周的时间。 从那之后,我的代码的大括号,就都放在代码行的

Falconapollo的专栏 587

华为交换机密码策略配置避坑指南:明文/密文、长度、复杂度,一个命令就出错

本文详细解析华为交换机密码策略配置的关键要点,包括密码长度、复杂度及等保合规要求。通过实战案例揭示常见配置误区,如明文/密文密码格式差异、复杂度检查联动机制等,帮助网络工程师避免安全漏洞。特别针对等保二级和三级要求,提供可直接落地的安全加固方案。

weixin_30879169的博客 371

软件编程低级错误总结

通过对《常见软件编程低级错误》资料的学习,了解到了编码中容易出现错误的地方,并且对代码编写的要求有了更深的认识。文中对“好”代码的要求是我们每个程序员应该达到的目标:“能工作的代码并不等于‘好’代码,‘好’代码的指标很多,包括可读性、可维护性、可移植性和可靠性等。出现网上问题的代码,大多是不良编程习惯引起的,不遵守编程规范的代码,往往也是最不可靠的代码。” 1    1      内存泄露

曾经(一卡通/支付/卡系统/POS/读卡器 c/c++/java/c#/android/sql) 现在 c++/golang后台/window客户端高级开发 1366

Python 爬虫反爬突破:浏览器指纹深度伪装技术

在当前网络安全与反爬虫技术日趋成熟的环境下,传统的请求头伪装、IP 代理已无法满足复杂站点的爬虫需求。浏览器指纹作为网站识别爬虫、区分真实用户与自动化程序的核心技术,成为爬虫进阶必须突破的关键壁垒。浏览器指纹通过采集浏览器环境、硬件信息、渲染特性等多维数据生成唯一标识,即使更换 IP、清除 Cookie,网站仍可精准识别爬虫程序。本文聚焦浏览器指纹深度伪装技术,从指纹生成原理、核心指纹类型、Python 实现方案、高匿伪装实战到风控绕过策略,全方位讲解浏览器指纹的突破方法。Selenium 官方文档。

2503_91057718的博客 641

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 550

程序员面试中,这5点低级错误不要犯

关注「实验楼」,每天分享一个项目教程   跳槽旺季到了,最近你面了几家公司了?都拿到多少offer了?如果你还没有拿到心仪的offer的话,想想自己是不是在面试中犯了错误,踩中面试官雷区了。正文共:1480 字 预计阅读时间:4 分钟跳槽旺季到了,最近你面了几家公司了?都拿到多少offer了?如果你还没有拿到心仪的offer的话,想想自己是不是在面试中犯了错误,踩中面试官雷区了。姑且不说面试迟到、

实验楼 1036

从底层结构开始学习FPGA(7)----进位链CARRY4

进位链CARRY4在FPGA实现加减法运算时扮演了什么角色?

孤独的单刀 1万+

Java程序员工作中千万不能犯的3个低级错误

常在河边走,哪有不湿鞋。Java工程师也是人,他们也会犯错误。但是千锋广州小编提醒大家有三个错误是万万不能犯的!工作中犯了这三个错误,今年的加薪就和你say goodbye了!快看看自己是不是中枪了。 java02.jpg​ 忽略访问修饰符 虽然有点莫名其妙,但忘记Java中protected访问修饰符的作用域真的是许多人的家常便饭。那么protected访问修饰符的作用域有哪些呢? · 可从子类...

weixin_43703144的博客 298

SAP B1中文培訓教材_SDK

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

addBatch使用方法

建立链接 Connection connection =getConnection(); 去掉自动提交功能 Commit connection.setAutoCommit(false); 预编译SQL语句,只编译一回哦,效率高啊。 PreparedStatement statement = connection.prepareStatement("INSERT INTO TABLEX ...

jdbfvhxx的博客 5860

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

低级错误

打算把自己犯过的低级错误都记下来: 1、makefile文件中把依赖文件写重了,编译出错,说static const member重定义了,在网上各种找答案,找到崩溃有木有,最后才发现原因(心中万千草泥马在奔跑啊) objects=test.o corpus.o crf_train.o cube.o example.o idMap.o labelMap.o \ labelMap.o mo

x_yz_的专栏 623

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

开发人员总是犯一些低级错误怎么解决?

要在开发的前期就制定好一些编码规范,这样子可以减少很多由于个人习惯引起的错误。同时,测试人员在发现开发人员犯一些低级错误的时候不可以指责他们,要耐心的给他们指出错误所在。然后在让开发人员自己进行测试,从而找出错误。 ...

Julyo_o的博客 1405

在PreparedStatement中设置空值

有些情况下,你需要在PreparedStatement中设置空值,这个时候如果你还使用设置具体类型的方法,如setInt(1,null),程序会毫不留情的报出空指针异常,所以你需要做的是使用setNull(index, type)方法来代替你原来的方法。                        例如:                                stmt.setNu

oneGeng的专栏 1万+
上一篇: 优快云的相册里如何圈人?圈人功能如何使用?
下一篇: 庆祝优快云的个人博客访问量排名进入50名
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 35
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值