zoukankan      html  css  js  c++  java
  • 一步步实现cnblogs博客采集工具详细设计

    欢迎继续关注开源项目CnblogsFan, 如果你是首次看到这个项目, 点击此处查看有关该项目的详细介绍。

     

      在完成对项目的概述设计后, 就可以根据概述设计的内容对项目各个组成模块逐步细化, 也就是我们所说的详细设计。详细设计在项目开发的整个步骤中是十分重要的一步, 好的设计是项目成功的前提, 详细设计直接决定着软件的质量以及软件在以后维护过程中的难易程度。更多关于详细设计的介绍请点击这里

     

      同概述设计中介绍的那样, 由于项目的侧重点在对功能实现的分析上, 所以这里的详细设计也是属于简略版, 不涉及某个功能的具体算法, 而在规范的详细设计当中, 这些都是必要的, 对于功能模块的具体算法将在下一步的编码过程中配合代码以随笔的形式介绍。

     

      在这里我们主要介绍项目各模块的结构、工作流程, 以及编码过程中标识符命名协议、注释协议以及开发文档的描述协议, 同时, 对开发过程中可能使用到的参考资料进行说明。

     

    一、模块的结构

      1>. UI模块

        UI(User Interface, 用户界面), 是用户最能直接感受到的模块, UI模块设计的质量决定着软件操作难易程度, 以及用户对该软件的第一印象。在本项目中, 对UI模块的初步设计如下:

          1>. 采用单文档界面(SDI, Single Document Interface);

          2>. 允许调整窗口大小, 但有最小尺寸限制;

          3>. 能将窗口最小化到系统托盘。

     

      UI模块结构图示如下:

        关于CnblogsFan主界面的初步设计草图如下:

      2>. 随笔采集模块

        随笔采集模块是对网页信息收集的过程, 是从整体角度来说, 整个随笔采集模块是对随笔过滤模块、信息收集模块、数据分析模块、版权声明模块以及数据存储模块的一个组合。 下面对一个采集最小单位进行图示描述:

      3>. 数据分析处理模块

        数据分析处理模块用来处理网页上的随笔信息, 对随笔内容进行整理加工, 使其满足需求规定中的要求, 数据分析处理的流程为, 从符合采集的任务队列中获取网页 --> 分析随笔正文格式以及相关资源的链接 --> 得到采集结果 --> 调用版权声明模块对采集结果进行版权声明 --> 写入本地。相关图示如下:

      4>. 配置管理模块

        关于CnblogsFan配置管理的配置存储将使用Python自带的数据存储模块进行, 配置管理的相关图示如下:

      5>. 初始化模块

        初始化模块用于通过配置管理模块读取软件配置信息完成对软件的初始化, 这个过程相对较于简单, 不再进行图示说明。

     

     

    二、标识符命名协议

      1>. 局部变量命名

        采用*类Java*式风格命名法:首单词小写,其余单词首字母大写。

          > editBlack  

             badClock  

             isFile  

     

       2>. 全局变量命名

        采用去掉类型前缀的*Windows式*命名法:单词首字母大写。

          > AppName  

                  TimerCount  

            IsGameStarted

     

       3>. 成员变量名

        ①. 静态成员变量

          采用**全局变量命名**的方式。

     

        ②. 普通成员变量

          采用**局部变量命名**的方式,开头加一个下划线。

          > _editBlack  

             _isFile  

             _give

     

      4>. 控件变量名

        控件变量名采用控件缩写作为前缀的命名法。  

        各个控件的缩写:

    控件 缩写
    按钮 btn
    文本框 txt
    标签(StaticText) lbl
    列表框 lst
    组合框 cbo
    复选框 chk
    单选框 rdo
    列表控件 lstctl
    树形控件 tree
    box
    进度条(Gauge) gue
    动画控件 ani

      5>. 方法/函数命名

         ①. 独立函数

          采用*传统C风格*命名。

          > get_files()  

                set_global_text()

     

         ②. 成员方法

         采用*类Java式*命名。

         > getFiles()  

              setGlobalText()

     

        ③. 事件响应方法

         同成员方法相同,前面加上'on'。

        > onClick()  

                 onDocumentComplete()

     

      6>. 类型名

        采用单词首字母大写式命名。

       > class DirectUI:  

             class AbstractBase:

     

      7>. 模块名/文件名

       采用单词首字母大写式命名。

       > SearchingDlg  

            KumquatRoot

            MainDlg

     

     

     三、注释协议

      由于是对项目实现过程进行分析, 所以关于注释部分尽可能做到详细, 在规范上遵循一般的注释规范, 这里就不在重复。

     

     

    四、开发文档描述协议

      遵循 Markdown 语法。

     

     

    五、可能使用到的参考资料

      1>. Python基础教程(第2版)

        作者 : 赫特兰(MagnusLieHetland) 

     

      2>. wxPython in Action

       作者:Harri Pasanen、Robin Dunn

     

      3>. Python v2.6 documentation

     

      4>. wxPython reference

     

     

      经过详细设计的步骤后, 下一步就是进入项目的编码阶段了, 欢迎继续关注CnblogsFan开源项目的最新进展。

     

     

    项目地址: https://github.com/mrwid/CnblogsFan

     

    -------------------

     

    Wid, 2012.10.12

      

    上一篇: 开源->一步步实现cnblogs博客采集工具->概要设计

     

     

     
  • 相关阅读:
    HTTP请求行、请求头、请求体详解
    json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES
    php 使用fsockopen 发送http请求
    PHP与Nginx之间的运行机制以及原理
    用户对动态PHP网页访问过程,以及nginx解析php步骤
    sql优化的几种方法
    mysql锁2
    CentOS 7.4系统优化/安装软件
    Linux基本操作命令
    使用远程管理工具Xshell
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2724042.html
Copyright © 2011-2022 走看看