如何提高程序的可维护性?
在接手别人代码的时候。我们常常抱怨前任代码写的太差。导致维护行非常长.最后发现花在维护上的时间
多得足够自己重新写一个。有些人于是抱着奋起一击鱼死网破的态度,推倒重写.结果是浪费了一大票时间。而且
写完之后发现。自己写的代码可维护性往往不见的比前任好多少.
怎样才能提高程序的可维护性呢? 写文档应该是最容易想到的选择了,完备的文档能让人更易理解程序.
但编写文档有缺点:
1,文档和代码不同步.当代码做出变更时,文档却没有做出类似的变更。
2,开发时文档的重要性偏低。往往为了赶时间而放弃写文档
所以我们需要从python中找到一些办法,能够提供高质量的文档。同时又不至于带来过大的负担
我找到的第一个办法是doctest模块
看一段代码,知道它怎么使用。是干什么用的。最简单快捷的办法是看例子。有了例子。再想去用就是
照葫芦画瓢了. 所以如果在文档里写上例子.对理解代码会有很大的帮助。
这些例子用法就是doctest可以提供的
doctest干什么?
doctest 模块让您可以在文档字符串(docstrings)内嵌入注释以显示各种语句的期望行为,尤其是
函数和方法的结果。这样做很像是让文档字符串看起来如同一个交互式 shell 会话。
def big(i,j):
'''
doctest:
>>> big(12,13)
13
'''
return i if i > j else j
if __name__ == '__main__':
import doctest
doctest.testmod()
$python test.py -v
Trying:
big(12,13)
Expecting:
13
ok
1 items had no tests:
__main__
1 items passed all tests:
1 tests in __main__.big
1 tests in 2 items.
1 passed and 0 failed.
Test passed.
在函数下面定义了注释.使用交互式提示符 >>>。在后面写上python语句.就好像是从交互式shell里
拷贝粘贴的一样.然后在下面写出预期的输出. 比如调用big(12,13) 函数返回13。然后通过命令行调用。
就能完成一次单元测试。
对类的测试也差不多.测试代码如下
#coding:utf-8
class Bird:
"""
doctest:
>>> bird = Bird('kula')
>>> bird.song()
'kula'
"""
def __init__(self,name):
self.name = name
def song(self):
return self.name
if __name__ == '__main__':
import doctest
doctest.testmod()
$python test.py -v
Trying:
bird = Bird('kula')
Expecting nothing
ok
Trying:
bird.song()
Expecting:
'kula'
ok
3 items had no tests:
__main__
__main__.Bird.__init__
__main__.Bird.song
1 items passed all tests:
2 tests in __main__.Bird
2 tests in 4 items.
2 passed and 0 failed.
Test passed.
由此完成了对这个类的单元测试.同时注释里留下的单元测试教会了我们怎么使用这个类和函数.一举多得!
文档在代码里.每次查阅还要翻代码.也不方便.怎么办?
java里 有一个javadoc模块.可以自动从注释生成文档. python也有类似的模块.有一个模块叫epydoc。
能够根据注释生成非常详尽的文档.
只需要
$epydoc --html test.py
就能在目录下生成一份精美的html文档!
同时,epydoc有很多有用的标签.如 @type @rtype @param @return 等等.善于利用能制作出非常
漂亮的文档
分享到:
相关推荐
在函数式编程方面,书中的内容可能包括高阶函数、map、filter和reduce等概念,这些工具可以帮助你写出更简洁、更具可维护性的代码。 最后,可能会涉及到一些进阶话题,如异常处理、装饰器、生成器、协程,甚至是...
7. **模块化设计**:大型项目通常采用模块化设计,将不同功能封装成独立的模块或类,提高代码复用性和可维护性。Python的面向对象编程特性使得实现这一设计思想变得简单。 8. **文档和测试**:为了便于他人理解和...
对于初学者,分析已有的源代码有助于提高编程能力,而对进阶者,可以学习到如何编写更高效、可维护的代码。 实验报告是实践教学的反馈,它记录了学生在完成实验任务时的过程、遇到的问题以及解决方案。通过编写实验...
基于提供的文件内容,以下是有关Python程序设计考试系统的开发与应用的知识点详细说明: 1. Python语言的特点与应用领域: Python作为一种开放源代码的脚本编程语言,其诞生于20世纪90年代初。它的语法简洁而清晰,...
面向对象编程是现代软件开发的核心思想,通过它,开发者可以更好地组织和管理代码,提高代码的复用性和可维护性。 对于人工智能领域,本书可能会涵盖一些基础的算法和数据结构,如搜索算法(深度优先搜索、广度优先...
理解函数的使用有助于提高代码的可读性和可维护性。 5. **模块**:Python的模块化设计允许将代码组织在不同的文件中,通过import语句引入。学习如何创建和使用自定义模块,以及标准库中的各种模块,能提高编程效率...
模块和包是Python代码组织的重要方式,允许将相关功能分组在一起,提高代码的可维护性和重用性。通过import语句,我们可以导入并使用其他模块中的函数和类。 面向对象编程(OOP)是Python的一大特性,包括类的定义...
3. **面向对象编程**:Python支持面向对象编程,包括类的定义、对象的创建、继承、封装、多态等概念,这有助于编写复杂、可维护的代码。 4. **文件操作**:学习读取和写入文件,包括文本文件和二进制文件,以及文件...
通过面向对象编程,可以更好地组织和管理复杂代码,提高代码的复用性和可维护性。 7. 进阶主题:Python还包含许多进阶主题,如文件操作、正则表达式、网络编程、数据库接口、并发编程等。这些知识可以帮助开发者...
相比于Python2,Python3在语法、标准库等方面进行了大量的改进和优化,更加注重代码的简洁性和可维护性。 ### Python3程序开发指南核心知识点 #### 1. Python3环境搭建 - **安装Python3**:访问Python官网下载...
理解如何创建和使用自定义模块,以及如何处理模块间的依赖关系,是提高代码可维护性的重要技能。 5. **异常处理**:通过try-except语句,Python提供了异常处理机制,可以捕获并处理运行时错误。了解何时和如何使用...
理解这些内容对于编写复杂、可维护的代码至关重要。 4. 实验12:数据结构与算法 数据结构如列表、元组、字典和集合,以及基础算法的实现是Python编程的基础。8.8.py可能涉及了排序算法(如冒泡排序、快速排序)、...
通过实例,他们将理解如何利用OOP来解决复杂问题,提高代码的可读性和可维护性。 第3章:控制流与异常处理 本章深入讲解更复杂的控制流结构,如循环嵌套、break和continue语句。同时,会介绍Python的异常处理机制,...
此外,利用Python的面向对象特性,可以创建类来封装相关逻辑,提高代码的复用性和可维护性。 Python的另一个亮点是其丰富的社区和资源。开发者可以通过Stack Overflow、GitHub和Python官方文档等途径获取帮助和学习...
这有助于分离业务逻辑和表现层,提高代码的可维护性。 6. **文件管理**:在实现文件上传和下载时,需要对文件进行管理和组织。Django的模型层可以帮助定义文件的存储位置,可以是本地文件系统、云存储服务如AWS S3...
### Python程序和C程序的整合知识点 #### 一、引言 随着软件开发领域的不断发展,开发者面临着越来越多的挑战,如提高开发效率、优化程序性能等。Python作为一种高级编程语言,以其简洁明了的语法和丰富的第三方库...
在IT领域,跨语言调用是一个常见的需求,特别是在多种技术栈并存的项目中。...在实际开发中,这样的跨语言调用技术可以用于实现复杂任务的分解,充分利用各种语言的优势,提高软件的可维护性和可扩展性。
学会如何通过面向对象的方式组织代码,提高代码的可维护性和可扩展性。 5. **文件操作**:学习如何读写文件,包括文本文件和二进制文件,以及文件的打开、关闭和异常处理。 6. **数据结构**:深入理解Python的高级...
7. **可重用性与函数技巧**:学生将学习如何编写中间函数、装饰器和偏函数,这些是提高代码复用性和效率的重要工具。装饰器尤其有助于代码的扩展和维护,而偏函数则允许对函数进行部分参数绑定。 8. **文件处理**:...