`
xfei6868
  • 浏览: 69838 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

维护有感1--字符串拼接老问题

阅读更多
   上个月拿自己的一份大学时候的代码报名javaeye的招聘,但是被robbin指出了string直接相加的毛病。当然现在我一直都不是用直接用+号了,大学的时候没有考虑这么多问题。最近在维护一个项目,修改里面的功能和代码,发现问题多多,千奇百怪。
以后每天写出点供自己警惕,同时有没发现其“精髓”的地方大家讨论。

其中就象我以前一样 的错误  sql 语句用 + 号 大行其道
"select xmbh from wcrxx where xmbh='"
                + request.getParameter("cgbh") + "' and lx='2'";


有些代码知道自己应该用StringBuffer,但是看看下面,真是不知是怎么想的
 if (strBmbh != null && !("".equals(strBmbh)))
        {
            strQueryCondition = tempQuery.append(" and ").append(
                    " lwzz.bmbh like '").append(strBmbh).append(
                    "%' ").toString();
        }

        if (strCglbm != null && !("".equals(strCglbm)))
        {
            strQueryCondition = tempQuery.append(" and ").append(
                    " lwzz.cglbm like '%").append(strCglbm)
                    .append("%' ").toString();
        }
        if (strXklym != null && !("".equals(strXklym)))
        {
            strQueryCondition = tempQuery.append(" and ").append(
                    " lwzz.xklym like '%").append(strXklym)
                    .append("%' ").toString();
        }

        if (strXkml != null && !("".equals(strXkml)))
        {
            strQueryCondition = tempQuery.append(" and ").append(
                    " lwzz.xkml like '%").append(strXkml)
                    .append("%' ").toString();
        }


真可谓每if 必 toString(), 真不知其目的,难道是为了用了StringBuffer我也要创造对象?
呵呵 今天发牢骚先到这,毕竟以后还长,慢慢贴!
0
0
分享到:
评论
1 楼 xfei6868 2009-12-07  
而且有时候发现这样的语句:
sb.append("CGMC=" + request.getParameter("cgmc") + "',");


看上去好像是用了StringBuffer来连接字符串,但是同样的问题是里面用的是+号拼接,同样产生了很多的String对象。
可以看出这个语句的意图其实是想让相关联的写在一起。
其实可以这样编写
sb.append("CGMC='").append(request.getParameter("cgmc")).append("',");


如果你的代码中正有有着这样的问题,其实修改起来也很简单,用Eclipse的替换功能
把' + ' 替换成 ').append('(单引号内为替换部分,+两侧是否有空格,看具体代码)

相关推荐

    adv_bash_script_guide

    - **字符串操作**:如何利用各种内置命令进行字符串拼接、截取等操作。 ##### 2. 控制结构 - **条件语句**:`if...then...else`、`case`等用于根据不同条件执行不同的代码块。 - **循环结构**:`for`、`while`循环...

    JavaScript完全自学手册05.pdf

    使用字符串拼接和`eval`函数来动态构建和计算表达式,从而找到符合条件的解。这种方式虽然直观,但需要注意`eval`函数的安全性和性能问题,特别是在处理用户输入时。 #### 3. 条件判断与返回结果 在遍历过程中,...

    跑马灯效果源码

    1. **字符串拼接**:将文本拆分成单个字符,然后逐个移动字符的位置,直到回到起点,再重新排列。这种方法简单直观,但可能会造成视觉上的不连贯。 2. **滚动BufferedImage**:将文本绘制到`BufferedImage`上,然后...

    javascript-playground:我们可以用来展示最新ES功能和一般做法的区域

    2. **模板字符串**:ES6中的模板字符串允许开发者使用反引号(`)来创建字符串,并在其中嵌入变量,提供了更方便的字符串拼接方法。 3. **Promise**:Promise是处理异步操作的重要工具,它解决了回调地狱的问题,...

    SQL优化原则

    查询名为“Bill Clinton”的员工时,使用字符串拼接(`first_name || '' || last_name`)而不是单独使用`first_name`和`last_name`作为条件,可能导致优化器无法使用基于`last_name`的索引。 3. **带通配符(%)的LIKE...

    Greeting-App

    5. **字符串操作**:生成和显示问候语句可能涉及到字符串拼接和格式化。 6. **异常处理**:为了保证程序的健壮性,开发者可能使用了异常处理来捕获并处理可能出现的错误情况。 7. **国际化**:如果应用支持多语言...

    ArduinoStreaming:Arduino流库(来自Mikal Hart的网站http

    传统的方法可能涉及到大量的字符串拼接,这在代码量和运行效率上都不甚理想。而ArduinoStreaming库引入了流的概念,就像C++标准库中的`std::stringstream`,使得动态构建字符串变得轻松高效。 使用这个库,你可以...

    PHPeste_minicurso:吃Rapadura时在PHP中进行迷你课程编程-PHPeste

    3. **字符串和数组操作**:学习如何在PHP中处理字符串,包括拼接、查找子串、替换和格式化。同时,深入理解数组的创建、遍历、排序和操作,以及多维数组的应用。 4. **文件和目录操作**:了解如何读取、写入、创建...

    VanillaSlider:带有CSS3和JS(ES6)的光滑块

    箭头函数简化了回调函数的编写,模板字符串使得字符串拼接更加便捷,而类可以用于构建更易于理解和维护的组件结构。 VanillaSlider的亮点之一是其**轻量级**设计。由于主要依赖于CSS3和现代JavaScript,它的脚本...

    Delphi中时钟的应用,实现文字的上下摆动和滚动

    文字的滚动效果则更复杂一些,通常需要用到字符串截取和拼接的方法。每次OnTimer事件触发时,我们可以将Label的文字向右移动一定的像素,同时将文字的左侧部分截取出来并添加到右侧,以保持文字的完整。这样,就形成...

Global site tag (gtag.js) - Google Analytics