关于python:坚持住啊还在代码屎山中爬行的同事们

38次阅读

共计 2049 个字符,预计需要花费 6 分钟才能阅读完成。

“There are only two hard things in Computer Science: cache invalidation and naming things.”

— Phil Karlton

在计算机领域只有两件艰巨的事件:缓存生效和对象命名。

这还真不是一个笑话。写代码是比拟容易的事件,然而浏览他人的代码,那就因人而异了。

好的工程师写进去的代码可读性很高,比方我上家公司的共事旭总。个别的工程师写进去的代码就像是一坨屎,比方之前某某几位共事。

所以我会常常去格式化他们的代码。如果可怜轮到你持续在屎代码下面开发,那就是屎上堆屎了。疼爱你。

当然有时候工期缓和,我本人也会写一些屎代码shit code,然而每次提交的时候都有一种强烈的愧疚感。心愿这些代码最多存活一个月就隐没,不要被人踩到了。

屎代码是怎么产生的?

要说怎么写屎代码,这个我就很拿手了。上面轻易列举一些常见的屎代码产生形式:

  1. 看不懂的命名
  2. 过长的类 | 函数
  3. 大段反复的代码
  4. 没有正文的 Magic number
  5. 100 多个参数的函数
  6. 一堆没有正文的 if-else 嵌套
  7. 业务适度耦合:领取订单和点餐订单能耦合在一起?谁重构谁苦楚
  8. 代码和文档拆散:几年前的业务齐全不晓得是个啥

很可怜,大多数人的我的项目中,这些常见的屎代码产生形式是随处可见的。

毕竟,几百个人写屎代码,就像几百个人沉积木。堆得歪歪扭扭,摇摇摆摆,乌七八糟,你千万不能抽外面的积木,指不定抽了一块就塌了。只能看见哪里感觉不可靠不停的往那边填积木。只有不倒就好了。这也是大部分程序员的谋求了。

不写屎代码从命名标准开始

如果想解决代码高耦合这坨屎,须要有比拟好的顶层解耦设计,划分分明各自服务的边界。

如果你始终都只是代码搬运工,传说中的 cv 工程师,那么到这一步还有一些内功须要你去修炼的。

然而好的命名标准的确每个人都能够做到的。不同的语言都有各自的标准,如果所有人都能正确理解那些标准,并且严格遵守,同时强制应用 ci 校验,就能够保障代码表面上是好看的。

这里就以 Go 语言的命名标准为例讲一下怎么写出人人都想闻的香代码。

go fmt能够对立不同人的编码标准,却没有方法格式化出一个好的命名。然而在 Go 社区中其实始终都存在着一些成文的或者不成文的命名规定,比方:

  1. 某个名称在包外是否可见,就取决于其首个字符是否为大写字母
  2. 应用驼峰命名而不是下划线
  3. 单个办法的接口名称应该是InterfaceName = MethodName + er
  4. Getter办法的命名不须要蕴含 Get,比方 cat.Owner() 办法不须要命名成 cat.GetOwner()
  5. 首字母缩写词应该放弃原有格局:应该应用 userID 而不是 userId,应该应用 userAPI 而不是 userApi
  6. 变量名须要尽可能的简略然而又能形容分明

总之,规定是有的。只是很多程序员抉择间接漠视。比方后面的五条。

还有一些规定是被过渡滥用了。比方第 6 条,很多共事的命名沿用以前的老格调,在一个 struct 中大量应用单字符的的变量或者得心应手的缩写。这样的代码是齐全没有方法浏览的。所谓有谋求的程序员,还是得谋求一下代码的品尝。

乐观的说,即便做到了这些也只是你一个人的代码是优雅的,然而你怎么能保障所有人都有这样的谋求呢?作为集体,除了提倡议之外,其实是没有太多无效的方法的。

怎么能力根治屎上堆屎?

想根治这个问题,只靠某个程序员始终放弃优雅代码是没什么用的。

你写 10 句优雅的代码,其余 10 个共事每个人都写 10 句屎代码。这样算起来,优雅代码的比例最多只有十分之一。

如果一个团队想要彻底解决屎上堆屎这个老大难问题,就须要贯彻执行上面两点办法:

  1. 招高质量的程序员:code sense 很重要,每个程序员都须要懂得奥卡姆剃刀原理:若无必要,勿增实体。
  2. 管理层须要有久远的视线而不仅仅是短期指标。

深度乐观的说,这两个办法真正执行起来的时候也是难度重重,根本不可能实现。

高质量无论是不是在互联网行业,都意味着价格昂贵,但又有几家公司能给得雇佣的起这么多低廉的程序员呢?

而久远的指标在资本的压力之下,也显得一文不值。代码标准晋升 10% 的重要性和“今天上线”这个命令比起来,也是低到尘埃的的。而后日复一日,今天又将是今天,规范性最终隐没殆尽,屎山越来越高。

说到底,这些都是钱的问题,也是最无解的问题,最终在某一天,屎山解体,所有回到原点。

最初,大胆猜想一下,昨天的 Google 服务解体也是因为屎太多了吧。


记得帮我点赞哦!

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

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

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

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

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

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

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

正文完
 0