对程序的结构(如需要哪些类和函数)有一定的想法后,建议你实现一个功能可能极其有限的简单版本。

当你有了可运行的程序后,将发现接下来的工作容易得多。你可添加新功能,修改不喜欢的方面,等等。这样你才能够真正明白程序的工作原理,而不仅仅是设想或画草图。

无论你使用的是哪种编程语言,都可进行原型设计。
 
但Python的优点在于,使用它编写模型的投入很少,因此完全可以弃之不用
 
如果发现设计不够精巧,只需将原型丢弃,再重打锣鼓新开张。这个过程可能需要几小时或一两天,但如果你使用C++等语言编程,编写模型的工作量可能多得多,弃之不用将是个艰难的抉择。固守一个版本就会失去灵活性:你将受制于早期的决策,而根据你在实现过程中获得的经验,这些决策可能是错误的。

在本书后面的项目中,我将始终使用原型设计,不预先进行详细的分析和设计。每个项目都有两个实现。
 
第一个实现是摸着石头过河:拼凑出一个能够解决问题(或部分问题)的程序,以便了解需要的组件以及对优秀解决方案的要求。在这个过程中,最重要的可能就是看到程序的各种缺陷。
基于这些新的认识,再次尝试解决面临的问题,而此时我的判断力和洞察力可能更强。当然,你可以对代码进行修订,甚至开始第三次实现。
 
通常,推倒重来所需的时间没有你想中那么长。只要你对程序的实际情况有详尽的认识,输入代码应该不需要太长的时间。
 
虽然这里提倡使用原型,但务必对推倒重来持谨慎态度,在你为编写原型投入了不少时间和精力时尤其如此。更好的选择可能是,对原型进行重构和修改,让其变成功能上更好的系统。

《Python基础教程》第三版语录的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  2. Python基础教程(第2版 修订版) pdf

    Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...

  3. Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版

  4. 《python基础教程(第二版)》学习笔记 文件和素材(第11章)

    <python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...

  5. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  6. 《python基础教程(第二版)》学习笔记 函数(第6章)

    <python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params):  block  return values 记录函数:def f ...

  7. 《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)

    <python基础教程(第二版)>学习笔记 语句/循环/条件(第5章) print 'AB', 123 ==> AB 123 # 插入了一个空格print 'AB', 'CD' == ...

  8. 《python基础教程(第二版)》学习笔记 字典(第4章)

    <python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),(' ...

  9. 《python基础教程(第二版)》学习笔记 字符串(第3章)

    <python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...

  10. 《python基础教程(第二版)》学习笔记 基础部分(第1章)

    <python基础教程(第二版)>学习笔记 基础部分(第1章)python常用的IDE:Windows: IDLE(gui), Eclipse+PyDev; Python(command ...

随机推荐

  1. weixueyuan-Nginx在Kubernetes10

    https://www.weixueyuan.net/nginx/kubernetes/ Kubernetes(k8s)分布式容器管理系统简述 Kubernetes 是分布式容器管理系统,它提供了对容 ...

  2. 包装类(Wrapper) 的使用

    package com.ch.java2; import org.junit.Test; /* * 包装类的使用: * 1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特 ...

  3. BackupBuddy pg walkthrough Intermediate

    nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.189.43 Starting Nmap 7.94SVN ( https://nmap.org ...

  4. 自定义swagger扩展解析jsondoc

    需求规定 为了减少注释和swagger注解的重复定义, 通过规范注释, 让swagger可以通过javadoc来产生 替换@Api.@ApiOperation.@ApiModel.@ApiModelP ...

  5. Pyinstaller打包工具

    本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础避坑 在windows中使用pyinstaller工具打包时会出现一个问题,在打包列表会看到这样的警告信息: django. ...

  6. 解决当前标识(IIS APPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限的问题

    1.问题描述 在Windows Server2019数据中心版中搭建IIS项目,访问的时候出现如下所示的错误: 当前标识(IIS APPPOOL\XXXX)没有对"C:\Windows\Mi ...

  7. 『玩转Streamlit』--会话状态管理

    在Web应用开发中,会话管理是一个至关重要的概念,它能够帮助开发者追踪用户在应用中的行为和状态,从而为用户提供更加个性化.连贯且高效的交互体验. Streamlit作为一个简单而强大的用于快速构建和部 ...

  8. 旅行商问题(TSP)概述

    旅行商问题(TSP)概述 1. TSP问题的复杂性 定义:旅行商问题(Traveling Salesman Problem, TSP)是给定一系列城市及其之间的距离,要求找到一条最短路径,使得旅行商从 ...

  9. WPF IValueConverter and IMultiValueConverter

    1. 实现DataGrid column的显示和隐藏功能: (1). 定义ContextMenu ,该ContextMenu仅可使用于DataGrid的DataGridColumnHeader: &l ...

  10. 洛谷P11250 [GESP202409 八级] 手套配对 题解

    题目传送门. 非常简单的组合数学题. 首先从 \(n\) 对手套中恰好选出 \(k\) 对手套的方案数为 \(C_n^k\),然后由于我们要取出 \(m\) 只手套,那么取了 \(k\) 对手套后还要 ...