设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

一些编程上的策略

2013-7-2 10:14| 发布者: 红黑魂| 查看: 1394| 评论: 0|来自: 外刊IT评论

摘要:   这里将向大家分享的是一些我对编程的思考总结,这些经验在我毕生编程生涯中曾帮助我在无数的事情上作出正确的决定。这些编程策略有些是很显然的,但实际编程中往往被人们忽略。  下面的例子是用Python写的,但 ...

下列情况时这个函数会被调用 -

  1. 这个后台程序启动时
  2. 这个后台程序停止时

每种情况时主函数要做的事 -

  • 启动时
    1. 如果pid文件存在,意味着后台程序中运行。这个程序自己会停止,会提示有另一个实例已经在运行。
    2. 读取这个文件时如果返回错误,这说明没有pid文件,说明这个程序没有运行(除非读取文件时发生意外)。这时就创建pid文件,启动程序。
  • 停止时
    1. 如果发现了pid文件,停止前删除这个文件。

    如果没有发现pid文件,那该怎么办?这说明后台程序根本没有运行。报告给用户。

  下面就是我们上面提到的主程序会调用的获取pid的代码。注意我们使用异常捕获和if-else语句来处理这些情况。

方法 1

01# 这种使用异常的方式不好,属于被动防御式编程。
02def read_pid_file():
03 
04    try:
05        = open('daemon.pid''r')
06 
07        pid = int(f.read())
08        return pid
09 
10    # 没有发现文件,也可能是IO错误
11    except IOError:
12        raise "Faild to Read file"
13 
14    # 有人在文件里放的不是数字,这能怪谁?
15 
16    except ValueError:
17        raise WrongPID
18 
19    # 捕获所有其它异常
20    # 这个有点像
21 
22    # 过度使用异常处理
23    except Exception:
24        raise SomeUnKnownError

方法 2

01# 使用If/else方法。主调函数需要检查无返回值情况
02# 异常情况
03 
04def read_pid_file():
05    if os.path.exists('daemon.pid'):
06 
07        try:
08            = open('file.pid''r')
09 
10            # 对于支持异常处理机制的编程语言,
11            # 如果有操作失败,抛出异常
12            # 这里跟C语言有区别
13            return int(f.read())
14 
15        except (ValueError, IOError):
16            pass

方法 3

01# 事实上,我们知道可能会发生什么,如果pid读文件
02 
03# 文件时有错误,主调函数会捕获它。
04# 我们使用的编程语言有异常处理机制。
05# 我们可以在这里利用上。
06 
07def read_pid_file():
08    = open('daemon.pid''r')
09 
10    return int(f.read())

我喜欢方法 3,因为它在大多数情况下都可行。如果极少的情况下出现了错误,主调函数里的异常处理会捕获这种情况。 

两种错误处理方式都是我们保证程序无误的重要途径。

何时使用if-else语句

  1. 当我们知道可能会有什么情况发生时。也许会分很多种情况。(C语言的错误码机制就是一个很好的例子)。
  2. 我们通常是基于输入值使用if-else来控制执行路径。

何时使用异常处理

  1. 你想捕获一个异常,或者捕获一些异常但自己不处理,交给系统去处理。支持异常机制的编程语言会在最顶层捕获这些异常,并报告给用户。

6. 忽略上面所有的策略  .

有时候事情就是这样!而且这样并不一定是坏事。我们编程时经常这样——当我们开发一个新原型,或针对一个特殊问题找一个解决方案,这时我们如何实现并不重要,重要的是在定型后我们如何完成它们。我想大多时候我们都是这样做的。谁都知道,先打草稿,后动真的。

请在评论里留下你对这些观点的想法。

[英文原文: Some Programming Strategies ]

外刊IT评论:http://www.aqee.net/

酷毙
2

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (2 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部