首页 > 编程语言 >笨办法学 Python · 续 练习 3:质量

笨办法学 Python · 续 练习 3:质量

时间:2023-04-13 12:39:28浏览次数:63  
标签:笨办法 镜子 错误 绘画 Python 代码 练习 程序员 缺陷


练习 3:质量

原文:Exercise 3: On Quality

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

我将提出一个关于认知的科学理论,我并不能证明它:

你所做事情的记忆,会让你思考最终产品,这是正确的行为。

这基于我所做的,几乎每一个创造性的事情的观察,它是这样:

  • 你创造的东西需要很长一段时间。这可能是软件,绘画,写作或任何需要时间的东西。
  • 你“完成”了它,然后当一个朋友过来之后,退后一步并且惊叹于它有多好。
  • 你的朋友然后指出了一个明显的问题,突然间,你对你所创造的东西改变了看法。
  • 现在你看到的是你朋友指出的这个错误,你不知道怎么可能错过了它。

我相信这种现象会发生,是因为你记得你如何实现了它,它影响着你所认知的概念。创造的行为往往是一个积极的思想和工作流,所以你的回忆更积极或中立。这样就会使你对作品的看法变得模糊,让你认为它比实际更棒,但也隐藏了许多缺陷和细节。自从你创造它,并且记住了所做的事情,还有一种对作品的情感依恋,这影响了您对作品的判断。然而,你的朋友没有任何回忆,能够更客观地看待作品,这使其更容易看到这些缺陷。这就是为什么复制编辑者发现的错误比作者多。或者,为什么安全专业人员比作者发现更多的缺陷。

在绘画世界中,这是很常见的,画家有很多技巧来颠覆现象。莱昂纳多·达·芬奇(Leonardo Da Vinci)在他的笔记本中甚至提到了这些技巧,他们的设计目的是,让画家站在他们挑剔的朋友的角度上:

  • 将画面颠倒下来,从更远的地方看。这表明了颜色和对比度的明显问题,同时也显示出您需要改变的重复形状。在一个优秀的作品中,重复的形状是不受欢迎的。
  • 在镜子中看着一幅画,将其水平翻转,所以你的大脑没有如何创造的概念。水平翻转将它变成一个你从未见过的全新的画,然后突然间你是一个讨厌的挑剔的朋友。
  • 通过红色玻璃或黑色镜子来看这幅画,它可以去除颜色,使其只能以黑色和白色显示。这显示了绘画太亮或太暗的区域,这使得它在颜色上看起来奇怪。
  • 通过放在他们前额上的镜子来看待绘画和主体,向上看镜子,使镜子和主体上下翻转,以便比较两者。这显示了绘画的明显问题,并使场景和绘画看起来像抽象的形状,你的大脑没有记忆。
  • 把画放几个月,所以你忘了你怎么做了,然后再次看它。
  • 请你讨厌的朋友看看它,让他们告诉你他们看到什么。

一些画家甚至在他们的画后面放了一面镜子,所以他们可以简单地转过来检查他们的进度。我经常使用黑色镜子(或者只是将你的手机的屏幕关闭)放在我的额头上来检查绘画。

在其他创意学科中,没有这么多的自我批评技巧,并且在软件中也只有很少。事实上,我发现程序员由于他们使用“程序员的方式”来完成代码而声名狼藉。“程序员的方式”,指程序员 Hack 一小段代码,然后改一改,直到通过编译,之后宣城他们完成了工作,并继续。事实上,在这之后有很多事情要做,例如清理代码,执行质量保证检查,添加不变量和断言,编写测试,编写文档,并在整个系统的大环境中确认是否工作。但是没有,程序员经常在编译器(或测试套件)没有错误时就停止了。

在这本书中,你将学习如何执行自己的一套检查,类似于画家使用的检查。他们是看待你的代码的方法,并断开了你如何制作它的历史,秘密就变成了检查清单。颠覆你的工作记忆的方式,是强制自己遵循一套检查,它假设你写的东西有缺陷。我交给你的质量过程不会捕获到所有的东西,但它会帮助你发现你能发现的,尽可能多的错误,也可以帮助你跟踪正在犯下什么样的错误,所以你可以在将来避免他们。之后,我会鼓励让其他人审核您的代码,并审核其他人的代码,以便您可以擦亮眼睛,找到更多的缺陷。

缺陷减少的理念是一种概率。你永远不能删除所有的缺陷。相反,您将致力于降低出现缺陷的可能性,并能够粗略估计其概率。这样可以避免您不知道您的代码是否有缺陷,并帮助您摆脱,不知道你的代码是否存在缺陷的恐慌。你不再使用“程序员的方式”,反之,当你完成并准备复查时,你会拥有很好的概念。你不再不断地担心每一个不可能的边界情况,你将能够评估这些边界情况的可能性,并处理最可能的情况。

研究性学习

在这个练习中,你需要找到一段你在几个月前写的代码,然后再回顾一下。您可能不知道如何审核一段代码,但只要浏览代码,并对任何您不喜欢的内容编写评论即可。关键是逐行并逐个文件查看每一行代码。然后,标记您发现的令人反感的代码,并写出原因。它不一定是一个非常大的软件,只是你之前写的一些东西。

深入学习

编写您发现的所有缺陷的列表,并尝试对其进行分类。您可以查看正式的缺陷类别,但是一个很好的基本集合是:逻辑,数据类型,调用。逻辑错误是,你写的if语句或循环是错误的。数据类型错误是,您使用变量,并假定它是错误的类型。调用错误是,你调用一个函数并且犯了错误。这些不是正式类别,但是这是一个很好的开始。


标签:笨办法,镜子,错误,绘画,Python,代码,练习,程序员,缺陷
From: https://blog.51cto.com/wizardforcel/6187854

相关文章

  • 笨办法学 Python · 续 练习 9:`sed`
    练习9:sed原文:Exercise9:sed译者:飞龙协议:CCBY-NC-SA4.0自豪地采用谷歌翻译使用这些小型项目来研究你自己是有用的,但让我们来看看你主要关注的主题:开始工作的启动流程,例如你的文本编辑器,你可以打字打的多好,以及计算机内部发生的其他事情。心理状态,当你开始工作时,建议将日志作为......
  • 笨办法学 Python · 续 练习 7:`grep`
    练习7:grep原文:Exercise7:grep译者:飞龙协议:CCBY-NC-SA4.0自豪地采用谷歌翻译find命令在45分钟内应该可能是一个挑战,但它是一个很好的挑战。到了这个时间,你应该可以去掉尽可能多的,阻止你开始的障碍。你可能会发现,当你清除一些障碍时,你的技能会变得更糟。例如,我以前在开始工作......
  • 笨办法学 Python · 续 练习 8:`cut`
    练习8:cut原文:Exercise8:cut译者:飞龙协议:CCBY-NC-SA4.0自豪地采用谷歌翻译希望你正在深入学习Python,甚至了解你自己和你的工作方式。在本书的这一部分,通过学习如何优化你的流程,你学到了流程和创造力的一些事情。的确,有阻碍的情况下你不能发挥创造力,但是你应该意识到,改善自己......
  • 笨办法学 Python · 续 练习 4:处理命令行参数
    练习4:处理命令行参数原文:Exercise4:DealingwithCommandLineArguments译者:飞龙协议:CCBY-NC-SA4.0自豪地采用谷歌翻译在你能处理本书的第一部分之前,你需要完成一些简单的黑魔法,教你如何使用Python中的命令行参数。传统上我们称这种黑魔法为“spike”。该术语来自于一个小......
  • 笨办法学 Python · 续 练习 11:`uniq`
    练习11:uniq原文:Exercise11:uniq译者:飞龙协议:CCBY-NC-SA4.0自豪地采用谷歌翻译在最后两个练习的开始,没有什么可说的了。你应该知道如何思考你的工作环境,你如何开始,你如何坐下来,影响你开始的任何事情。你也应该使用这些小小的45分钟的项目,突破了起始状态。如果你还没有弄清楚......
  • python
    关于做题过程中不熟悉的函数进行的总结基础语法深浅拷贝python基于值管理,如a=2表明a指向值为2的内存空间,若a+=1,则a改变指向,也就是取出a的值加一放于新内存,a指向新内存变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象a=b=1:a是b的别名(可以理解为ab存放同一个......
  • 深度学习检测不准确智能电表:一个案例研究 python源代码
    深度学习检测不准确智能电表:一个案例研究python源代码,代码按照高水平文章复现,保证正确根据用电情况检测出故障的智能电表,并针对其进行更换,可以节省大量的资源。为此,我们开发了一种基于长短期记忆(long-termmemory,LSTM)和改进的卷积神经网络(convolutionalneuralnetwork,......
  • 电力系统的物理信息神经网络python源代码 介绍了一种在电力系统中应用物理信息神经网
    电力系统的物理信息神经网络python源代码代码按照高水平文章复现介绍了一种在电力系统中应用物理信息神经网络的框架。利用控制电力系统的基本物理定律,并受到机器学习领域最新发展的启发,我们提出了一种神经网络训练程序,它可以利用广泛的数学模型来描述电力系统的行为,包括稳态和......
  • 基于大数据的人工神经网络高效发电预测系统 python源代码 提出了一种发电预测方案,该方
    基于大数据的人工神经网络高效发电预测系统python源代码,代码按照高水平文章复现,保证正确提出了一种发电预测方案,该方案能够以接近耗电量的速度预测所需的电量。该方案使用大数据分析来处理每个州在过去20年收集的电力管理数据。然后使用神经网络(NN)模型训练系统,根据收集的数......
  • 利用插电式电动汽车提高电网暂态稳定性 python联合PSS E源代码
    利用插电式电动汽车提高电网暂态稳定性python联合PSSE源代码,代码按照高水平文章复现,保证正确插电式电动汽车(pev)在放电模式下可以作为分布式能源和电力资源,作为车到网(V2G)设备运行;在充电模式下可以作为负载或网到车(G2V)设备运行。已有文献证明,pev作为V2G系统可以为可再生......