zoukankan      html  css  js  c++  java
  • 分析一套源代码的代码规范和风格并讨论如何改进优化代码

      我的工程实践选题是搜索引擎相关,所以我从github上下载了一个python构建搜索引擎的项目,试图从此项目展开分析代码规范和原则。

    1. 目录结构及文件命名

     

    2.函数名和变量名等命名

      在python编程规范里,除类名使用驼峰法以外,其他模块、函数、方法、变量均使用全小写+下划线。项目中类的命名没有符合此项规范,函数和变量命名符合规范

       class Doc

    class IndexModule
    class RecommendationModule
    def is_number(self, s)
    def clean_list(self, seg_list)
    def write_postings_to_db(self, db_path)
    def construct_postings_lists(self)
    def write_k_nearest_matrix_to_db(self)
    def construct_dt_matrix(self, files, topK = 200)
    def construct_k_nearest_matrix(self, dt_matrix, k)
    def gen_idf_file(self)
    def find_k_nearest(self, k, topK)
    def get_news_pool(root, start, end)
    def crawl_news(news_pool, min_body_len, doc_dir_path, doc_encoding)

    3. 接口定义规范和单元测试组织形式

           在此项目中,使用unittest模块进行单元测试,TestCase 也就是测试用例,TestSuite 多个测试用例集合在一起,就是TestSuite,TestLoader是用来加载TestCase到TestSuite中的,TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了少,失败了多少等信息。

    4.  列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;

      项目中几乎没有注释文档,对后面读代码的人很不友好。开发者应该在编写代码的过程中加入必要清晰的注释,既帮助自己整理思路,也能方便后续的代码维护。部分模块没有使用面向对象的思想,个别变量命名只有一个单词,表意不够直观。接口不完全统一,无法直接生成接口帮助文档。此外,作者对代码的空格缩进和换行把握不好,没有符合python编程规范。

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

    a.只使用空格缩进
    b.使用UTF-8编码
    c.每行只写一条语句
    d.使用行末反斜杠折叠长行,限制每行最大79字符
    e.导入包:每行唯一、从大到小、绝对路径
    f.类内方法空1行分隔,类外空2行分隔
    g.运算符除 * 外,两边空1格分隔,函数参数=周围不用空格
    h.除类名使用驼峰法以外,其他模块、函数、方法、变量均使用全小写+下划线
    i.1个前导下划线表示半公开,2个前导下划线表示私有,与保留字区分使用单个后置下划线
    j.开发时使用中文注释,发布时再写英文文档

  • 相关阅读:
    Erlang 杂记 IV
    ASP.NET MVC的View是如何被呈现出来的?[设计篇]
    面向对象—在线文件管理模块
    软件开发中个人在团队里的效绩评定
    用go语言遍历文件夹
    磁盘缓存的算法:写算法
    一种Lua到C的封装
    从信息系统界面设计引发的思考
    基于Backbone.js的JavaScript MVC示例程序
    C和C++
  • 原文地址:https://www.cnblogs.com/zxy1122/p/11637937.html
Copyright © 2011-2022 走看看