• 分析一套源代码的代码规范和风格并讨论如何改进优化代码


    ---恢复内容开始---

    我的工程实践课题为“针对特定领域设计一套摘要自动生成系统”,我选取了github上一个同类型项目来分析代码规范。

    开源项目链接:https://github.com/physi-cs/TextRank4ZH

    1.(1)目录结构

    example给出了两个示例应用程序

    text为一个二级目录

     分别给出了整个程序测试用的文章与程序内各函数的测试函数

    textrank4zh为一个二级目录

     包含项目依赖的主要函数,分别实现了词的权重迭代,句向量的权重排序等功能

    HISTORY.md文件记录了此工程项目的版本更新内容与接口变化

    LINCESE文件声明了其他人使用此开源项目的权限

    README.md说明了此工程的安装方法,卸载方法,其依赖的库,对不同python版本的兼容性,简单介绍了textrank算法的工作原理, 并对关键词提取,关键短语和摘要生成分别进行了介绍,给出示例代码和运行结果,以及API

     (2)文件名/函数名/类名/变量名命名风格


    def sort_words(vertex_source, edge_source, window = 2, pagerank_config = {'alpha': 0.85,}):
      sorted_words = [] word_index = {} index_word = {} _vertex_source = vertex_source _edge_source = edge_source words_number = 0

      函数名变量名都遵循了命名代表含义,且下划线分隔语义使得关键信息一目了然。

     (3)接口定义规范

        def analyze(self, text, 
                    window = 2, 
                    lower = False,
                    vertex_source = 'all_filters',
                    edge_source = 'no_stop_words',
                    pagerank_config = {'alpha': 0.85,}):
            """分析文本
    
            Keyword arguments:
            text       --  文本内容,字符串。
            window     --  窗口大小,int,用来构造单词之间的边。默认值为2。
            lower      --  是否将文本转换为小写。默认为False。
            vertex_source   --  选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来构造pagerank对应的图中的节点。
                                默认值为`'all_filters'`,可选值为`'no_filter', 'no_stop_words', 'all_filters'`。关键词也来自`vertex_source`。
            edge_source     --  选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来构造pagerank对应的图中的节点之间的边。
                                默认值为`'no_stop_words'`,可选值为`'no_filter', 'no_stop_words', 'all_filters'`。边的构造要结合`window`参数。
            """
            
            # self.text = util.as_text(text)
    

      以对关键词分析的类中的一个成员函数为例,函数封装了功能实现,调用时给出指定参数即可,部分参数给出默认参数,缺省时可按默认值传入

    2.符合代码规范和风格一般要求之处

    注释规范清楚,详细记录了函数功能,版本更新的改动

    变量名函数名等名称能准确体现其含义

    不同类函数分成多个文件,使用时在主函数import

    3.同类编程语言或项目在代码规范和风格的一般要求

    ①标识符应当直观且可以拼读,下划线用来分隔变量名字中的作用域标注和变量的语义,可望文知意。

    ②代码不使用Tab而使用4个空格,在VS2005和其他的一些编辑工具中都可以定义Tab键扩展成为几个空格键。不用 Tab键的理由是Tab键在不同的情况下会显示不同的长度。

    ③不要把不同的变量定义在一行上

    ④所有的类型/类/函数名都用Pascal形式(所有单词的第一个字母都大写),所有的变量都用Camel形式(第一个单词全部小写,随后单词随Pascal格式)

    ⑤注释是用来解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方的。复杂的注释应该放在函数头,很多函数头的注释都是解释参数的类型等的,如果程序正文已经能够说明参数的类型in/out等,就不要重复。一个误导的(Misleading)注释往往比没有注释更糟糕

    ---恢复内容结束---

  • 相关阅读:
    alpha 冲刺 —— 十分之一
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    2018软工实践——团队答辩
    福大软工1816 · 第五次作业
    福大软工1816 · 第四次作业
    软工实践第四次作业--结队的第一次合作
    软工实践第二次作业--思索
    华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)
    华中农业大学第五届程序设计大赛网络同步赛解题报告(转)
  • 原文地址:https://www.cnblogs.com/avriiil/p/11653720.html
Copyright © 2020-2023  润新知