乐趣区

关于python:思考一次整体调整Python项目规范性的过程

本篇文章次要是记录整体调整 Python 数据统计分析我的项目规范性的过程,以及本人的一些思考。

为什么要调整?

  1. 次要是为了解决数据类程序不容易测试发现错误的现状。调整公共模块出错时抛出谬误到业务层,便于报警模块上传错误信息到 kafka,最初能被动发出报警邮件。以及不便退出报警之外的其余程序埋点。
  2. 调整所有 Python 数据统计分析程序满足 pep8 标准和 Google Python 格调标准,缩小 IDE 提醒。
  3. 欠缺代码正文和文档便于后续保护(之前的开发人员是 Erlang 格调,主张不写或者少写正文)。

<!–more–>

认清程序以后现状

  1. 我的项目构造:目前整个数据统计分析我的项目的整体模式是各个以数据业务为导向的统计分析程序之间相互独立。各个数据统计分析程序简直都依赖于底层的各个公共模块。包含数据库模块,日志模块,cdn 相干模块、心跳模块、封装的阿里云各个产品的模块,封装的网宿云各个产品模块等等。
  2. 各个公共模块和各个统计分析程序前前后后通过熟人编写,格调齐全不同,有 C ++ 格调,有 Erlang 格调,有 Python,在 IDE 中呈现各种不符合规范的提醒。
  3. 对于公共模块中呈现的谬误,为了不影响业务层(起因是猜的),通常在本模块就间接捕捉掉了,并没有抛出到业务层,也没有做过多解决,导致谬误十分难以被发现。
  4. 有不少函数的返回值在解决胜利和解决失败时,返回值的个数并不统一,导致低概率程序呈现各种 unpack 谬误。这类多返回值语言常见的 bug 谬误全副须要调整。

确定程序调整准则

  1. 底层公共模块返回值须要放弃个数统一。
  2. 和外界交互(数据库,oss,日志服务等等)的公共模块必须返回是否执行胜利的状态,如果谬误须要返回谬误状态和谬误起因到上一层。
  3. 公共模块封装的时候能够应用类,然而对外提供的性能接口优先应用函数模式。
  4. 所有的类对立调整成旧式类。
  5. 删除公共模块中的有效代码。
  6. 欠缺正文。
  7. 欠缺文档。

记录程序调整过程

  1. qk_agent_praser 改名为 qk_agent_parser,须要在应用到此模块的中央进行一个调整。起因:拼写错误须要及时调整。qk_agent_praser 对外函数接口没有调整,只有外部调整(缩小 split 解析次数),对外无影响。
  2. check_up 只改变大量格局(因为应用 loop 调度,程序退出后,存在 sock 绑定的 addr 没有开释的问题,导致下次单元测试时须要期待 sock 回收)。
  3. qk_email 提供函数式对外接口,因而须要批改监控程序中应用到邮件的局部代码。
  4. qk_heartbeat 减少两个函数式对外接口。批改心跳距离为可配置,因而应用心跳模块须要调整调用形式。
  5. qk_ipdb 调整类名和返回值,应用到 ip 数据库对应办法的中央都须要批改(ip 查问以及数据统计程序)。
  6. 数据库连接池初始化返回值改变(返回连接池是否胜利创立标记和创立失败的返回)。mysql_query 的返回值有批改,查问失败时不是返回空列表而是返回 False, str(e)。
  7. aliyun_oss:oss 相干的返回格局,全副批改(对应的应用到 oss 的程序改变较大)。
  8. aliyun_cdn:返回值中返回申请状态码,申请 text。
  9. aliyun_kafka:生产和生产都有返回值。
  10. aliyun 其余各个模块返回值都有批改。
  11. 网宿查问带宽模块减少指定时间段查问,但工夫不宜过长,否则会呈现数据不齐全(网速接口导致)。
  12. 依据布告模块批改对应的调用办法
  13. 调整所有的模块、类、办法、函数的正文,明确参数含意和返回值
  14. 补全文档

思考与感悟

或者以上的这些调整在当初看来是天经地义,是一开始写程序的时候就应该全副思考到的,然而事实却因为各种起因,导致程序成为一个须要整体调整的鬼样子。

在调整的过程中,也会发现之前指定的一些调整准则存在某种程度的问题,导致最初弃用。比方其中的一个准则:

  • 业务层须要全副封装成类的模式,不能是纯函数,不便 MixIn 新增的额定性能,比方数据埋点接口、增加日志、属性查看等等任何你想 MixIn 的性能

乍一想来这个准则带来的益处很多,然而实际上带来的改变很大,这包含整个程序结构以及程序的表现形式和调用办法。最终还是弃用了这项准则。

最初,所有的开发人员都应该尽可能的参加需要剖析,了解需要,明确本人要做的目标,牢记需要剖析时女神李若彤的模样,而不是到验收交付时小笼包陈妍希的模样。


参考:

Google-Python 格调标准


记得帮我点赞哦!

精心整顿了计算机各个方向的从入门、进阶、实战的视频课程和电子书,依照目录正当分类,总能找到你须要的学习材料,还在等什么?快去关注下载吧!!!

朝思暮想,必有回响,小伙伴们帮我点个赞吧,非常感谢。

我是职场亮哥,YY 高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。

听我说,提高多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。

职场亮哥文章列表: 更多文章

自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!

退出移动版