老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人工智能
    • 人生感悟
      • 共产主义
      • 能量哲学
      • 自然辩证法
    • 信息技术
      • C#笔记
      • LaTex
      • Linux
      • RIME
      • Ubuntu&Debian
      • WordPress
      • 基于Java的B/S系统构建
      • 开源开发
      • 病毒相关
      • 编程的坏习惯
      • 网上办公系统
    • 往事随风
      • 我在大学那几年
      • 童年趣事
      • 精彩生活
    • 情感随笔
    • 文学创作
      • 小说
    • 生活记录
      • 博士进行中
      • 美国一年
      • 老杨学游泳
    • 评论杂谈
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 信息技术
  3. 编程的坏习惯
  4. 正文

编程的坏习惯之百密一疏

2009年07月29日 5138点热度 0人点赞 12条评论

编程的坏习惯之百密一疏

程序是一种很严密的东西,美国航天局因为程序中的一个标点符号导致了一次航天的失败,这就是程序的严密性带给我们的警示。

程序的严密性在于程序的逻辑,不能有遗漏,更不能有错误,程序的错误相对于遗漏,更容易被发现,程序的逻辑遗漏总是在我们的编程当中给我们制造了很多的麻烦。

看一段很简单的代码,实现根据输入的数字,显示月份:

—
123456789101112

if(month==1)
{
  return  "January";
}else if (month==2)
{
  return "February";
}
...........
}else if(month==12)
{
  return "December"; 
}

这个程序再简单不过了,相信每个程序员不用三分钟就能写完,然而,上面的程序写完了吗?很显然没有,如果用户输入的是13应该如何?如果用户输入1.5,应该如何?可能你会说:谁会傻到输入13月啊!有人就会,程序员一定不要觉得某种情况永远不会发生而遗漏这种可能性,如果真的就有人输入13了,那么这个程序是没有返回结果的,也就是NULL,而调用它的程序很可能因为这个NULL导致崩溃,从而引发一系列的问题,所以,我们需要在这段代码最后,写上else {return "Error"}。

上述问题就属于百密一疏。你想到了一百种情况,可是遗漏了一种情况,那么程序也是错误的,这种错误带来的问题和语法错误同样致命,而且极难发现,要求程序员在编写程序时格外小心。

可能你会说:这么简单的逻辑谁会遗漏啊。如果逻辑再复杂一些呢?我总结这个问题是因为我遇到了很多次逻辑不严密的情况,最典型的就是JSP中的Get和Post方法。

在Servlet中,有两种处理函数,一种是doGet,一种是doPost,这两种方法处理客户端不同的请求,而我发现,很多人(不是一个),只写其中一个函数,也就是只写doPost,doGet函数是一片空白的。我问他说为什么不写doGet函数,他说我前台调用这个页面时就是用的Post方法啊,为什么要写Get方法?这是一种思维定势,他觉得自己不会用Get方法请求这个地址,理所当然其他人也不会,这就是典型的百密一疏,你在用自己的主观想法遗漏了程序本应该存在的逻辑。后来程序果然出问题了,我找到doGet函数,写上依据代码,那就是doPost(request,response);问题迎刃而解,而他也终于在焦头烂额之后意识到百密一疏的重要性。

像这种情况,一般我来写的时候,首先写上两个函数,然后在doGet函数里面直接写上doPost,然后再写doPost函数,我管你前台使用什么方式调用,我只用一段代码来回答你。

在编程的过程中还有很多这样的情况,而每次基本上都是直到最后百密一疏带来很多问题的时候我们才去认真的慎思程序的逻辑,为什么不在刚开始的时候就将这种潜在的隐患扼杀在摇篮里呢?其实如果稍微仔细一点,这种问题很容易避免,可是有人就是不在意。同样是写程序,有人写得好,有人写得差,区别就在于这点滴的细节。

标签: servlet 代码 坏习惯 开始 程序 编程
最后更新:2026年11月02日
老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞

评论(12)

写下你的评论
  1. chanthon
    chanthon2009年07月29日 16:52

    呵呵 程序员的要求就是逻辑严谨。

    1. 老杨
      老杨作者2009年07月29日 16:53

      @chanthon 你也写过程序么?

      1. chanthon
        chanthon2009年08月01日 15:47

        @老杨 没有。。呵呵我是程序门外汉。

  2. sunshineyxp
    sunshineyxp2009年07月30日 08:17

    “百密一疏”,总结得很到位哦~~大家很多时候总以细心或者粗心来简单的总结自己的失误或者遗漏,在我看来有一点点为自己找借口的嫌疑。看了你这篇文章,我得好好培养自己的习惯~~

    1. 老杨
      老杨作者2009年07月30日 10:18

      @sunshineyxp 你做的已经很不错了

  3. 卢松松
    卢松松2009年07月31日 16:09

    其实和设计网页是一样的,就像我上次提供的模板,就是因为少了一个CSS隐藏属性,如果评论字数过多,会导致错位是一样的道理

    1. 老杨
      老杨作者2009年07月31日 16:41

      @卢松松 是的,网页设计也是编程,不过语言不同而已,这种东西是一通百通的

  4. Hope
    Hope2009年07月31日 21:14

    "很多人(不是一个)"我就是其中之一。哈哈,谨记教诲!

    1. 老杨
      老杨作者2009年07月31日 21:15

      @Hope 在你之前我就遇到过,我看到你也犯这样的错误,才意识到问题的严重性

      1. Hope
        Hope2009年07月31日 21:30

        @老杨 嘿嘿,下不为例!

  5. xiaoman
    xiaoman2009年08月28日 13:33

    这个问题很多人都会遇到,通常一段程序完全可以暴露出一个人的思维过程以及这个人的性格习惯等等,不可小觑

    1. 老杨
      老杨作者2009年08月28日 14:12

      @xiaoman 使得,这也正是这个坏习惯难以克服的地方

发表评论

选择代码语言
选好后在光标处插入代码块,把示例文字换成你的代码即可。

老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
关于机器人的发展 遥遥领先 开源密码生成工具SimplePassword 痛苦根源 同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端) 别成为AI的奴隶 给阿嬷的情书 信息焦虑综合症 PUA 人的悲喜并不相通
为多用户安装Anaconda及其使用方法WordPress主题发布:kratos_YangLaTex中上划线\overline和\bar的使用说明LaTex中设置字体的正确方法那一年,2009使用Windows7自带Windows Media Center播放RMVB影片幼儿园:回味童年童年趣事之气门芯这几天的事儿无插件实现WordPress留言本
腊八吉兆年来到 吃豆腐 挣扎雅思 晴迷星途33原创 老杨首页图片幻灯实现方法 人性本恶 阳光温暖依然 华盛顿之行 胜利 说话的技巧
最近评论
  • 感谢支持。可以买个鸿蒙设备玩玩
    老杨·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 没有鸿蒙设备,吆喝一声支持老杨的产品
    乱云/Akay·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 先从减少手机使用时间开始。
    shanshan·1 月前·信息焦虑综合症
  • 所以必须得自己下定决心痛改前非,而不是跟自己讲条件。
    shanshan·1 月前·第二青春计划失败
  • 这种平台挺多的,但是应该没啥用,能有啥情绪价值比躺着刷手机更好呢?
    老杨·1 月前·第二青春计划失败
  • 已经遇到了,额外支付了170,托运登机行李,还不是托运行李。
    老杨·1 月前·春秋航空让人长见识
  • 那很好,恭喜你
    老杨·1 月前·PUA
  • 可以尝试改变。
    老杨·1 月前·信息焦虑综合症
  • 现在很多人离开AI已经不知道怎么工作了。
    老杨·1 月前·别成为AI的奴隶
  • 建议开发一个适合P人的工作生活计划平台,完不成没什么惩罚、但是完成了有大大的情绪…
    shanshan·1 月前·第二青春计划失败
  • 还有部分机型里20寸箱子应该上不了机,且没有免费行李托运额度。托运费超贵!
    shanshan·1 月前·春秋航空让人长见识
  • 这个世界精致利己主义者太多啦!
    shanshan·1 月前·人的悲喜并不相通
文章分类
选择分类
  • 人工智能13
  • 人生感悟121
    • 共产主义1
    • 能量哲学12
    • 自然辩证法12
  • 信息技术234
    • C#笔记6
    • LaTex12
    • Linux18
    • RIME4
    • Ubuntu&Debian21
    • WordPress1
    • 基于Java的B/S系统构建10
    • 开源开发2
    • 病毒相关3
    • 编程的坏习惯4
    • 网上办公系统9
  • 往事随风41
    • 我在大学那几年18
    • 童年趣事12
    • 精彩生活5
  • 情感随笔113
  • 文学创作69
    • 小说68
  • 生活记录220
    • 博士进行中6
    • 美国一年22
    • 老杨学游泳4
  • 评论杂谈169
关注公众号

COPYRIGHT © 2026 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号