Python基础语法——函数(四)

函数抽象和逐步求精

在程序开发中函数的作用就是为了让程序的结构很直观清晰,让代码看起来很整洁,这对开发者自己或者其他调试者在审计代码时都很有帮助。
函数抽象:将函数的使用和函数的实现分离,用户在调用函数时只需要知道函数调用方式就可以直接使用函数,开发者对函数实现内容进行封装隐藏,在对函数进行改进或者填补都不会影响使用者的调用,只要函数名和调用方式不改变,这样的函数对于用户而言就是一个黑匣子。
函数抽象扩展到大程序开发:在开发大型程序时,基本不会有开发者能一步或者一个函数就实现完整功能,所以借用Python函数思想,开发者可以使用分治策略(逐步求精),将完整功能分割为多个小功能模块,将每个小功能模块实现之后进行拼接。

设计模式

在编写大程序中的每个子问题时,也就是将每个子问题用一个函数实现,而开始实现程序之前,按照软件工程的思想,不是马上动手实现功能,而是设计整个开发流程,将整个思绪理清之后,按照“填空式”的方法逐步实现每个函数。
以设计一个日历为例,实现日历效果如图:

calendar

自顶向下设计:
自顶向下的设计思想就像本身名字一样从“高处”俯瞰整个开发程序,从大模块实现的功能逐渐细分到小模块,从整体上对整个开发过程有个构图。
以日历程序为例,实现一个日历首先将日历分为两part:①:用户输入;②:月份日历呈现。
1.用户输入又分为两part:①:信息接收;②:信息合理性判断。
2.之后是日历呈现,可分为两part:①:日历标题;②:日历主体。
3.日历标题可由三部分组成:月份与年份、划分虚线、一周七天的星期名称,这里需要月份的判断,可以采用getMonthName函数实现。
4.实现日历主体可由月份天数以及该月第一天是星期几组成,而要知道该月第一天是周几可以通过已知的一天作判断依据进行推算(如2017年1月1日是周日),通过公式进行推算:(total_Day+0(7))%7,得到结果即周日到周六的表示,其中周日为0(7),total_Day表示距2017.1.1距离天数,由get_start_day函数实现。
5.月份天数需要对月份和年份进行判断。
自底向上设计:与自顶向下不同的设计模式,但是只是实现方式不同,思想还是大局观思想,只是自顶向下是逐步细分,程序中的函数都以“填补”的形式编写好,而自底向上是对小功能函数进行实现,之后再调用至需要整合的大函数中,这样可以保证每个小模块已经是不出错的实现对应功能的。
除了上述完整功能实现之后,对于一些健壮性的要求要进行一定补充,如上文提到的对用户输入信息有效性的检验判断,对2017年之前与之后的判断(因为计算方式稍有改变),实现以年为单位的日历等等,通过不断补充使得程序能满足更多需求,容错性更好。

逐步求精优势

无疑这种方式使程序更易于编写、重用、调试、测试以及维护,每一个小函数的使用使得核心代码更为简练,程序变得简化,函数的重用优势也在此体现,开发、调试、测试都可以对小函数进行,而不需要在众多功能中再逐一判断是哪部分的问题,将程序分割可更好实现团队合作,提高效率。
——————
附源码:
源码下载地址:http://download.csdn.net/detail/lin_not_for_codes/9770806

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值