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

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

为什么要调整?

  1. 主要是为了解决数据类程序不容易测试发现错误的现状。调整公共模块出错时抛出错误到业务层,便于报警模块上传错误信息到kafka,最后能主动发出报警邮件。以及方便加入报警之外的其他程序埋点。
  2. 调整所有Python数据统计分析程序满足pep8规范和Google Python风格规范,减少IDE提示。
  3. 完善代码注释和文档便于后续维护(之前的开发人员是Erlang风格,主张不写或者少写注释)。

认清程序当前现状

  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高级软件工程师、四年工作经验,拒绝咸鱼争当龙头的斜杠程序员。

听我说,进步多,程序人生一把梭

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

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

本人所有文章、回答都与版权保护平台有合作,著作权归职场亮哥所有,未经授权,转载必究!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容