编程思路感想(1)

第一个问题,处理数据过程中,经常会遇到数据格式不规范或者内容不符合逻辑等导致程序无法通过,这时候一般有两种想法:

1. 我要把错误的地方准确定位,具体到某个文件,某一行,某种错误,直接导致错误的变量的值。

2. 我要先略过该错误,进行与错误无关的处理,得到一个初步的处理结果,等有时间的时候再回过头来检查数据的问题。


怎么办呢?我用python编程,觉得可以用抛出与接收异常这种机制来处理:

1. 对于每个调用函数的命令,把它放在try里,即如果它出错,那就会抛出异常,然后在后边写接收异常后的处理。

2. 接收到异常后,首先log出该命令的作用,让我们知道是在做什么的时候出错了。然后继续抛出异常,返回到调用当前函数的函数,一层一层往上,这样,我们可以详细的看到错误是如何一步一步发生的,最底层的错误是什么,而不用去猜。同时,如果想要快速略过错误,进行下一条的处理,那么在适当的函数层那里停止抛出异常,什么都不做或者给一些需要的变量赋值一些default的值。

3. 在最底层的函数中,考虑多种可能导致异常的情况,用if语句,或者用不同的except语句来接收不同的异常,比如keyError或者valueError之类的,甚至可以自定义一个自己的异常类。


第二个问题,要区分功能性函数(底层和中层函数)和连接性函数(高级函数)

所谓功能性函数,是那种实现某一算法的函数,可能会被经常调用,它是用于实现一些思路的函数。连接性函数,则是指为了实现某个具体的问题而设置的函数,提供接口。比如,我想要计算数字的加减,那么我需要写两个函数,一个用于加法一个用于减法,然后我要计算5+6-4,那么我写一个具体的函数,调用加法和减法函数来计算该值。

对于功能性函数,考虑所有输入都是成型的数据结构,假设他们满足一定的格式和逻辑的要求,而不用在该函数里再进行数据提取、过滤、验证等操作,只需要进行运算。

对于连接性函数,则按照一定的步骤进行填写。首先,输入为具体的文件等内容,然后设置函数的变量,然后读取数据,验证数据,然后调用相关功能性函数,对具体的问题进行运算,得到结果并返回。


第三个问题,哪怕是自己写的程序,即使加了注释,过了两三周也会忘记如何实现,为何那样实现了。

怎么办?这要求我们每次解决问题去写程序的时候,要同时准备好两个辅助的文件:

1. 逻辑流程图,不但要有大体的流程图,对于具体的关键函数,要详细的画出其逻辑结构以及其要处理的或者要生成的数据结构图。

2. 主数据结构图(或文本描述):有些数据结构是核心,很多函数都会用到它,这种数据结构必须要描述清楚,每个数据的意义,可取值的范围等。

有了这两个说明文件,基本上可以很快的review自己以前的代码。如果小组内采用同样的规范来做这两个文件,那么也可以很快的看懂别人的代码。


以上都是血泪总结,虽然书中早看到类似的教导,然而不吃些亏是没有深层体会的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值