这个小网站终于成功上线,小白除了收获一笔不多的费用外,还得到女神小美的赞赏,心中满满的成就感。这一天下班后,他请老菜一起下馆子,兑现请吃饭的承诺,顺便让老菜点评一下。

  小白:老大,在你的指导下终于完成了我人生当中第一个项目,非常感谢。

  老菜:挺不错的,在这么短时间完成了一个项目,值得祝贺一下。

  小白:老大,代码你看了没有,你觉得有什么问题或需要改进的地方吗?

  老菜:你自己完成后,重新查看代码有什么想法?

  小白:嗯,我觉得有好多地方代码都是一样的,重复的,复制粘贴后改起来容易出错,其他的有些地方感觉代码写起来有点别扭,但说不上来。

  老菜:看来项目完成后,你的技术也长进了不少。代码重复是一个框架从无到有发展过程中必须经历的阶段,当然有不少人直接使用别人的框架进行修改可以跳过这个阶段,但他们的感悟就没那么深了。

  很多软件开发框架一开始都是很简单很简漏的,它能满足一般的需求,直接明了,一般来说只要严格遵循开发规范,这样的代码可读性也是最好的。

  而开发人员在整个项目实现的过程中一直在进步,当完成项目以后回头再看看你自己写的东西,就会发现它其实存在着很多不合理的地方,而自己在成长过程中也会学到很多新的知识,可以融入到现有体系中,让已开发出来的框架变得更好更成熟。在自己持续的学习成长过程中,通过对旧框架的重构升级,开发框架也会变得越来越成熟和强大起来。

  你这个框架代码我看了一下,存在以下几个问题:与数据交互的代码重复,没有进行合理封装;前后台系统接口没有分离,权限管理混乱;后台管理系统无权限管理模块,无法控制页面权限,容易引发安全问题;

  如果有时间的话,你可以抽空重构一下,将数据库读写操作单独分离出来,认真琢磨一下sql代码规律,封装成ORM统一管理;在接口与对数据操作之间加多一个逻辑层,用来放置各种对数据操作的逻辑函数,方便代码的封装与管理;后台与前台代码各自独立出来,分成各自独立的两大前后端系统,方便管理;后台管理系统增加权限管理模块等,暂时想到这些,你可以先弄弄。

  做好这些工作,这个开发框架就可以算得上比较成熟了。

  小白:好的,谢谢老大的指点,我会认真学习,再琢磨琢磨的。菜已经上了,我们边吃边聊。

  ......

  本系列的第一部分终于完成了,比预想中多花了不少时间,后半部分因为年底各种事情,加上参加了敏捷个人线上练习占用了大量的时间,所以没时间写,一直拖着,没想到拖了这么长时间。

  在开笔之前其实有很多想法,对于前端也想写的很细很细,但编写过程中总会遇到这个那个事情,有这样那样的各种顾虑,所以有时将就了一下,写的并不是太满意。没有前端基础的朋友可能看起来有点吃力,等这个系列全部完成以后,看看有没有可能录制一些视频,直接讲解可能会更容易理解,毕竟很多东西直接讲比较容易,用文字表达起来确实有点头痛。

  第二部分大纲初步整理了一下,大概30多章节,在年后会安排时间慢慢完善更新,大家如果有什么建议可以直接发信息给我。

一次XXX引起的安全小事故
项目版本控制与接口文档
代码审查与重构
什么是ORM
ORM基类开发
Nosql在ORM中的应用
逻辑层类开发与测试
接口代码重构
后台管理系统权限设计
权限数据库结构设计
后台菜单管理功能
后台主界面菜单实现
部门(角色组)管理功能
职位(角色)管理功能
管理员管理功能
后台接口权限访问控制处理
接口访问加密处理
后台操作日志处理
前后台分离与部署

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475(本群已满)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/

我的第一个python web开发框架(21)——小结的更多相关文章

  1. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  2. 我的第一个python web开发框架(41)——总结

    我的第一个python web开发框架系列博文从17年6.7月份开始写(存了近十章稿留到9月份才开始发布),到今天结束,一年多时间,想想真不容易啊. 整个过程断断续续,中间有段时间由于工作繁忙停了好长 ...

  3. 我的第一个python web开发框架(1)——前言

    由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...

  4. 我的第一个python web开发框架(3)——怎么开始?

    小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...

  5. 我的第一个python web开发框架(22)——一个安全小事故

    在周末的一个早上,小白还在做着美梦,就收到了小美的连环追魂call,电话一直响个不停. 小白打着哈欠拿起电话:早上好美女. 小美:出事了出事了,我们公司网站一早访问是一片空白,什么内容都没有了,你赶急 ...

  6. 我的第一个python web开发框架(6)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  7. 我的第一个python web开发框架(2)——第一个Hello World

    小白中午听完老菜讲的那些话后一直在思考,可想来想去还是一头雾水,晕晕呼呼的一知半解,到最后还是想不明白,心想:老大讲的太高深了,只能听懂一半半,看来只能先记下来,将明白的先做,不明白的等以后遇到再学. ...

  8. 我的第一个python web开发框架(2)——一个简单的小外包

    第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...

  9. 我的第一个python web开发框架(7)——本地部署前端访问服务器

    PS:本系列内容进度节奏会放的很慢,每次知识点都尽量少一点,这样大家接触的知识点少了,会更容易理解,因为少即是多.另外,对于后面代码部分,虽然尽量不用那些复杂的封装和类,但它并不表示看了就能全部记住, ...

随机推荐

  1. 深入理解 React JS 中的 setState

    此文主要探讨了 React JS 中的 setState 背后的机制,供深入学习 React 研究之用. 在课程 React.js入门基础与案例开发 中,有些同学会发现 React JS 中的 set ...

  2. SQL奇技淫巧

    1.SQL行列转换 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果): 姓名 ...

  3. css自适应

    一.顶部标题自适应 <html> <head> <title>顶部标题</title> <style> body{padding:0;mar ...

  4. HTML5发布的意义

    解决文档结构混乱 以前的文档结构过度依赖div,HTML5推出了多种语义化标签,使得文档更利于阅读器等理解,更利于SEO优化. 解决浏览器之间的兼容性问题 市场上浏览器种类繁多,每个浏览器厂商都在做自 ...

  5. margin和padding的区别和用法

    margin和padding的区别和用法 什么是margin.padding? marigin:就是外边距.padding:就是内边距.怎么就容易记住两者呢? 马蓉大家都知道吧,给王宝强带帽子的那位, ...

  6. 进程管理工具htop/glances/dstat的使用

    进程管理工具htop/glances/dstat的使用 Linux中进程的相关知识 1.什么是进程呢? 通俗的来说进程是运行起来的程序.唯一标示进程的是进程描述符(PID). 2.进程的分类 1)根据 ...

  7. 关于SPF记录的说明

    详细了解SPF记录的可以查看一下这篇博文:http://www.renfei.org/blog/introduction-to-spf.html 关于 SPF SPF:Sender Policy Fr ...

  8. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

  9. 8086cpu中的标志寄存器与比较指令

    在8086CPU中有一个特殊的寄存器--标志寄存器,该寄存器不同于其他寄存器,普通寄存器是用来存放数据的读取整个寄存器具有一定的含义,但是标志寄存器是每一位都有固定的含义,记录在运算中产生的信息,标志 ...

  10. 使用Three.js 基本组件以及流程

    1. 创建场景 var scene = new THREE.Scene(); 2. 创建相机,设置可视范围 var camera = new THREE.PerspectiveCamera(45,  ...