小白弄完代码版本管理和接口文档后,兴奋的找到老菜。python
小白:老大,我已经按你讲的要求,将代码版本管理和接口文档都搞好了。从项目开始到如今,除了代码编写,感受学会好多东西啊。sql
老菜:嗯嗯,实战确实须要掌握不少代码之外的东西。若是你只是想安静的作一位码农,别人安排什么你就作什么,其余事情别人搞定,那你只会写代码并无什么问题。可是,若是你不安于现状,想要作的更好,熟悉开发整流程,从需求、产品、原型、文档、架构、数据库、编码、测试、服务器部署、调优......都有所了解,遇到问题都能信手拈来,那你就得多学学各类工具的应用与配置,去练手使用了。数据库
小白:是啊,这个项目开发过程当中就遇到了太多的坑了,不少很简单的事情,因为没有经验花了大量的时间就是搞不定,好在有你帮忙指导,否则也不知可否交付了。为何你能一眼就看出问题在哪里呢?设计模式
老菜:嘿嘿...由于这些坑多数咱们这些工做多年的几乎都遇到过,碰多了天然就懂了。在遇到问题时,最好不要立刻去问人,先自行研究解决,养成自行解决问题的能力,之后再遇到其余问题时就能轻松解决了。若是不是,下次遇到一样问题或相似问题,有可能仍是解决不了,还得去请教别人,这样一方面你本身不会有多大的长进,另外一方面别人的时间也是时间,别人也不欠你什么必定要为你解答是吧。因此说经历很重要,你对不少技术都不熟悉,须要去踩坑,去研究,找出你本身的答案与解决办法。安全
小白:好的,我会继续努力的。如今系统要重写,还须要注意些什么?要怎么作呢?可否详情的讲解一下。服务器
老菜:系统重构,对于新系统、旧系统,或者开发过程当中,都是屡见不鲜,常常要作的事情。架构
代码重构主要是为了提升代码的重用性,改善软件的质量,提高软件的性能,使软件架构或框架的设计更加合理,进而提升软件的可读性、可扩展性和可维护性。相关书籍都有不少介绍了,好比《重构:改善既有的代码的设计》、《大话重构》等,这里就不深刻说明,只针对本系统简单讲解一下。并发
正常来讲,你在开发过程当中发现存在重复代码时,就须要考虑将这部分代码重构了,而不是等升级版本或重大改造时才进行的,由于重复代码越多,维护起来就会越复杂,越有可能出错。好比说你有个功能是进行字段串转整形变量的,代码一开始并无进行封装,而后不少地方都使用int()进行转换,有一天测试时发现,用户输入带小数的数字字符串,这时程序抛出异常,须要进行改造。你花了半天时间将全部转换的地方进行了修改,作了判断处理。过了一段时间又发现,有些客户不遵照规则,直接输出无心义的字符串,又出现了异常,你又得花时间进行改造,万一有些地方没有改到遗漏了,说不定那天又会蹦出一个异常来。若是你在开发过程当中,有及时进行重构,将这个重复代码封装成一个转换函数,那么你只须要修改这个转换函数就能够了。app
除了重复代码须要进行封装外,对于一些相似的功能也须要从新进行改造,好比说小白你这个项目,对数据库操做这一块就能够看到好多差很少的代码,不少数据查询差异只是数据表不一样或查询条件不一样而已,这就须要进行重构,抽象出来写成ORM。框架
固然除了这些以外,针对功能需求的变动,对高并发、高可用、安全性、大数据、海量存储等不一样的非功能需求时,有可能还须要对整个框架、架构进行从新设计,以适应新需求的须要。
在重构时必须遵循面向对象的七大原则,学好设计模式。具体能够多看看书,多研究别人写的源码,多学习多思考就明白了。
小白:这个知识量有点大,听着有点晕...重复代码重构这个我明白了,工具包里的那些工具函数大多都是重构出来的吧。刚刚讲到数据库操做要重构,能讲讲什么是ORM吗?要怎么处理?
老菜:ORM(英文全称:Object Relational Mapping)简称对象关系映射,直白点说就是将对象(能够是dict、list、元组等各类对象)经过转换,生成对应的sql语句,从而实现对数据库的增、删、改、查等操做。也就是说,原来咱们对数据库操做时,须要写sql语句的,咱们会发现常常会出现重复的代码维护起来不方便,如今只须要将要操做的字段或内容,存储(赋值)到相关对象中(dict、list、元组),而后这些值扔给ORM类中,ORM类会对赋的值进行对应分析进处理,最终生成可执行的sql语句。
ORM的优缺网上已经有各类描述了,你能够去查查。这里我想说的是,它对于咱们开发人员来讲最大的优势是能够极大的提高咱们的开发效率,减小bug的发生,让代码更容易维护。相对于所谓的性能损耗,在当今的高性能硬件下,能够直接忽略不计。对于一个项目或公司的生命期与成原本说,人力成本、时间成本与机会成本才是最重要的。
python的ORM有不少成熟的包能够直接安装调用,不过我建议本身开发会好一点,一方面写一个简单的ORM很是简单,另外一方面,本身开发的ORM要升级、开发、维护也会更加的驾轻就熟,想怎么改就怎么改。你能够当它是sql的翻译模块就能够了,咱们只须要处理好重复的、简单的语句翻译,对于复杂的就不须要使用ORM,直接写sql执行,这样既灵活,又方即可控。
接下几个章节会详细介绍一个ORM是如何从0到1的。
版权声明:本文原创发表于 博客园,做者为 AllEmpty 本文欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然视为侵权。
python开发QQ群:669058475(本群已满)、733466321(能够加2群) 做者博客:http://www.cnblogs.com/EmptyFS/