IT培训网 - IT职场人学IT技术上IT培训网
Python最佳编程技巧解读
时间:2019-04-11 14:37:45 来源:编程网 作者:IT培训网 已有:名学员访问该课程
作为一名软件工程师,你在工作时应尽量少写代码。碰到问题时,你首先想到的不应该是“我怎么解决这个问题”,而是“其他人是不是已经解决了这个问题,我能使用他们的方案吗?”如果你自己去解决一个常见的问题,很有可能别人已经有了解决方案。先在网上检索解决办法,只有在确定没人解决过该问题之后,才开始自己动手解决。
在程序员编写代码的时候,能否将代码写的更为简洁易懂,运行效率高,体验了一个程序员的水平。生产代码是用户使用的产品中的代码,将软件部署到生产环境(Production)后,就意味着用户可以公开访问了。这里小编将介绍13个python最佳编程原则,有助于大家编写可部署于生产环境的代码。
Python最佳编程技巧有哪些?
1、DRY
DRY 是不要重复自己(Dont’t Repeat Yourself)的简称,指的是不要在程序中编写重复的或是基本相同的代码。正确的做法是将代码封装至函数中,后续可重复使用。
2、正交性
正交性(Orthogonality)是《The Pragmatic Programmer》中提倡并普及的另一个重要编程原则。亨特和托马斯认为,“该术语已经被用来表示某种独立性或解耦化。如果两个或多个事物之间的变化不会相互影响,那么它们之间就存在正交性。在设计优良的系统中,数据库代码与用户界面之间是正交的;调整用户界面不会影响数据库,替换数据库也不会改变用户界面。”实践中请牢记,“A 不应该影响 B”。假设我们有两个模块 module_a 和module_b,module_a 不应对 module_b 中的内容进行修改,反之亦然。如果设计的系统中 A 会影响到 B,而 B 又影响 C,很快就会失去控制,系统将变得无法管理。
3、每个数据都只应保存在一处
假设手上有一个数据,我们只需要将其存储在一个地方。例如,我们正在开发用来处理手机号码的软件,其中有两个函数要使用地区编号的列表,这里要确保程序中只有一个地区编号列表,而不是为每个函数重复创建。正确的做法是创建一个保存地区编号的全局变量。更好的解决方案则是将信息保存在文件或数据库中。
4、函数只做一件事
我们写的每个函数应该只做一件事。如果发现函数太长,请检查其是否在完成多个任务。将函数限制为只完成一个任务有很多好处。首先,代码可读性增强,因为函数名称可以直接说明其功能。如果代码出错,调试也将更加方便,因为每个函数只负责一个特定的任务,我们可以快速隔离并调试问题函数。用许多知名程序员的话来说:“软件的复杂性大多源自试图两件事当一件事做。”
5、若耗费时间过长,你的做法很可能就是错的
如果你不是在处理非常复杂的问题,比如处理大数据,但是程序却要花很长时间才能加载,这时可以认为你的做法很有可能错了。
6、第一次就要用最佳的方法完成
在编程时你可能会这样想:“我知道有一个更好的做法,但是我已经开始编码了,不想回头重写。”那我建议你停止编码,改用更好的方法来完成。
7、遵循惯例
学习新编程语言的惯例,能够提升阅读用该语言编写的代码的速度。PEP8 是一系列编写 Python 代码的指南,强烈建议阅读,可前往 https://www.python.org/dev/peps/ pep-0008/ 查看。
8、使用强大的 IDE
到目前为止,我们一直使用的是 Python 自带的 IDE——IDLE 来编码。但是 IDLE 只是众多可选 IDE 中的一个,而且我也不推荐长期使用它,因为其功能有限。例如,如果使用更强大的 IDE 打开 Python 项目,每个 Python 文件都会有不同的选项卡。在 IDLE 中则是每个文件新开一个窗口,操作烦琐且文件之间来回切换困难。
9、记录日志
记录日志(logging)指的是在软件运行时记录数据的做法。我们可通过日志来协助程序调试,更好地了解程序运行时的状态。Python 自带了一个 logging 日志模块,支持在控制台或文件中记录日志。
程序出错时,我们不希望没有感知——我们应该记录下相关信息,方便以后核查。记录日志也有助于收集和分析信息。例如,可以搭建一个 Web 服务器来记录数据,包括每次收到请求的日期和时间。我们可以将所有日志记录在数据库中,编写程序分析其中的数据,并生成图表展示访问网站的人次。
博客作者亨瑞克·沃纳(Henrik Warne)在博客中写过这样一段话:“伟大程序员与平庸程序员的区别之一,就是伟大的程序员会做日志记录,使得出错时的调试变得更简单。”
10、测试
程序测试指的是检查程序是否“达到了设计和开发要求,对各类输入返回正确的结果,功能执行耗时在可接受范围,可用性足够高,可在目标环境下安装和运行,并且实现了相关利益方所期待的效果。”为了进行程序测试,程序员要额外编写程序。
在生产环境中,测试是必须完成的。对于计划部署在生产环境的程序,我们应当认为在没有编写测试之前都是不完整的。但是,如果是一个不会再使用的临时程序,测试可能有些浪费时间。如果编写的是其他人也将使用的程序,则应该编写测试。很多知名程序员都曾说过:“未经测试的代码就是漏洞百出的代码。”
11、代码审查
在代码审查(Code Review)时,同事会阅读你的代码并提供反馈。建议尽可能多地进行代码审查,尤其对于自学成才的程序员来说。即使你遵守了本章中所列的所有最佳实践,也有可能存在错误的做法。你需要有经验的程序员对你的代码进行检查,指出所犯的错误,这样才有可能解决。
Code Review 是一个专注于代码审查的程序员社区。任何人都可以登入该网站,提交代码。社区的其他成员会审查代码,并反馈做得好的地方以及可以改进的地方。
12、安全
对于自学的程序员来说,安全是一个很容易忽视的问题。在面试时也很少会被问到安全问题,在学习编程时我们也不会去考虑安全问题。但是,在实际工作中,我们需要对自己代码的安全性负直接责任。本节将给出几个提高代码安全性的建议。
我们在本书中已经学习了使用 sudo 命令以根用户的身份执行命令。非必要情况下,务必不要在命令行使用 sudo 执行命令,因为如果有黑客侵入程序的话,将会获得根访问权限。如果你是服务器管理员,还应该禁止根用户登录。每个黑客都会盯着根账号,在攻击系统时是首要选择的目标。
另外,总是假设用户的输入是恶意的。部分恶意攻击的发生,就是利用了可接受用户输入的程序漏洞,因此我们要假设所有的用户输入都是恶意的,并以此为依据进行编码。
另一个提高代码安全性的策略,是最小化你的攻击面积(attack surface),即黑客可从程序中提取数据或攻击系统的相关区域。通过最小化攻击面积,可以减少程序出现漏洞的可能性。最小化攻击面积的几种常见做法包括:避免保存敏感信息,赋予用户最低的访问权限,尽可能少用第三方库(代码量越小,漏洞越少),剔除不再使用的功能代码(代码量越小,漏洞越少)等。
避免以根用户身份登录系统;不要信任用户输入;最小化攻击面积——是确保程序安全性的几个重要手段。但这还只是提升安全性的一小部分。我们应该试着从黑客的角度进行思考。他们会如何利用你的代码?这样可以帮助我们找到之前可能忽略的漏洞。有关安全的话题非常大,不是本书所能涵盖的,因此建议大家时刻思考并学习如何提升安全性。布鲁斯·舒奈尔(Bruce Schneier)对此的总结十分精辟:“安全是一种思维状态。”
13、术语表
生产代码:某个产品中被用户使用的代码。
生产:将软件投入生产,指的是对外正式发布。
DRY:一个编程原则,“不要重复自己”的英文简称。
正交性:该术语已经被用来表示某种独立性或解耦化。如果两个或多个事物之间的变化不会相互影响,那么它们之间就存在正交性。在设计优良的系统中,数据库代码与用户界面之间是正交的;调整用户界面不会影响数据库,替换数据库也不会改变用户界面。
调试器:调试器是支持中断代码执行,可逐行查看代码效果的程序。通过调试器,我们可以查看不同代码中变量的值。
日志记录:指的是在软件运行时记录数据的做法。
测试:检查程序是否“达到了设计和开发要求,对各类输入返回正确的结果,功能执行耗时在可接受范围,可用性足够高,可在目标环境下安装和运行,且实现了相关利益方所期待的效果。”
代码审查:他人阅读你的代码并给予反馈的过程。
攻击面积:黑客可从程序中提取数据或攻击系统的相关区域。
每期开班座位有限.0元试听抢座开始!
温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。
- 上一篇:机器人模型制作方法有哪些
- 下一篇:软件测试的目的究竟是什么