我的工程实践选题是搜索引擎相关,所以我从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.开发时使用中文注释,发布时再写英文文档