老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人生感悟
    • 信息技术
    • 往事随风
    • 情感随笔
    • 文学创作
    • 生活记录
    • 评论杂谈
    • 人工智能
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 信息技术
  3. 编程的坏习惯
  4. 正文

编程的坏习惯之百密一疏

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

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

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

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

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 代码 坏习惯 开始 程序 编程
最后更新:2009年07月29日

老杨

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

点赞
订阅评论
提醒
guest

guest

12 评论
内联反馈
查看所有评论
xiaoman
xiaoman
游客
2009年8月28日 下午1:33

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

0
回复
老杨
老杨
作者
回复给  xiaoman
2009年8月28日 下午2:12

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

0
回复
Hope
Hope
游客
2009年7月31日 下午9:14

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

0
回复
老杨
老杨
作者
回复给  Hope
2009年7月31日 下午9:15

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

0
回复
Hope
Hope
游客
回复给  老杨
2009年7月31日 下午9:30

@老杨 嘿嘿,下不为例!

0
回复
卢松松
卢松松
游客
2009年7月31日 下午4:09

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

0
回复
老杨
老杨
作者
回复给  卢松松
2009年7月31日 下午4:41

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

0
回复
sunshineyxp
sunshineyxp
游客
2009年7月30日 上午8:17

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

0
回复
老杨
老杨
作者
回复给  sunshineyxp
2009年7月30日 上午10:18

@sunshineyxp 你做的已经很不错了

0
回复
chanthon
chanthon
游客
2009年7月29日 下午4:52

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

0
回复
老杨
老杨
作者
回复给  chanthon
2009年7月29日 下午4:53

@chanthon 你也写过程序么?

0
回复
chanthon
chanthon
游客
回复给  老杨
2009年8月1日 下午3:47

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

0
回复

老杨

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

搜索
最新 热点 随机
最新 热点 随机
中国是不是体育强国? 成功的必备因素 关于华为 别再侮辱我的智商 春秋航空让人长见识 第二青春计划失败 第二青春计划 模型训练错误RuntimeError: expected scalar type Half but found Float 加载onnx模型进行推理 PyTorch模型转onnx格式
我们应该靠什么吃饭? 准备换一种开发模式 魅族M8远程控制电脑 随波逐流08杀机 从Nexus 7看Goolge的Android战略 打折感恩节 雨 如果这个世界本没有答案 自然辩证法笔记八 编程的坏习惯之备份文件
最新评论
  • 关于华为上的老杨确实,苹果手机系统还是有优势的。
  • 关于华为上的乱云AKAY自从换了苹果手机后,对手机再没以前那样热爱研究了,主要是系统省心。
  • 第二青春计划失败上的老杨第二都失败了,第三就算了吧。
  • 春秋航空让人长见识上的老杨应该提供一点水,至少给不想买水的人一个选择的空间。
  • 别再侮辱我的智商上的老杨那个很好,很值得。
  • 关于华为上的老杨Next系统基本没广告。大部分广告都可以关掉吧,我记得我写过一个文章,…
  • 第二青春计划失败上的xqiushi开始第三青春计划吧。
  • 春秋航空让人长见识上的xqiushi那个桌板能放下小米多看电子书,还是不错的。 这个矿泉水市面上没有,特供…
  • 别再侮辱我的智商上的xqiushi只投了那100亿的项目。
  • 关于华为上的xqiushi今年我爸的手机也换成华为,家庭里手机基本都是华为。最不满意的一点就是广…

Google java jsp linux QQ wordpress 中国 习惯 人生 公司 决定 博士 博客 同学 国家 大学 学习 实验室 家 小说 工作 开始 思考 情感 手机 技术 推荐 插件 数据库 文件 晴迷星途 朋友 生活 电影 相声 程序 笔记 网站 网络 置顶 美国 评论 软件 音乐 项目

关注公众号

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

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号