5个代码规则

  维护代码和成为现代开发人员的理智的规则

  

5个代码规则

  Photo by Efe Kurnaz on Unsplash

  在过去的一段时间里,我整理了一份"命令"清单:作为现代开发人员,您必须做和不应该做的事情。 让我们浏览其中的五个,并讨论为什么您应该为自己和您的团队采用它们。

  1. Monorepos:单一代码仓库

  如果您不熟悉monorepo的概念(我很羡慕),请让我解释一下:monorepo概念是,在您的应用程序中,不使用多个源代码存储库,而是将所有内容都放在一个存储库中。

  这可以使为多个项目做出贡献变得容易,但这要付出一定的代价:您必须使用Subversion,而不能使用Git。 尽管Git具有所有优点,但它不支持像Subversion这样的稀疏Checkout。

  稀疏Checkout允许您checkout较大树的单个目录,而不是Git的整个树。 这意味着您可以让多个人或团队在树的各个部分上工作而不会重叠。

  使用Git不能做到这一点,因此在将Git用作源代码控件时,应该为离散的应用程序使用单独的存储库。

  2.首先是问题,然后是解决方案。

  每个人都喜欢使用他们喜爱的东西:Redis,MySQL等。没关系,有偏好是正常的。

  但是,当这些偏好成为要求时,我们就会遇到麻烦; 透过它可以观察到每个问题的透镜。 而且,别被欺骗了,这不仅仅是个人的罪恶,组织也为此感到内疚。

  许多公司要求使用某些技术,库或工具,而往往没有来自"地面上的靴子",开发人员和运营工程师的思考或投入,而这些人实际上必须使用或实施这些技术。

  这是我长期以来对企业体系结构团队,及其对真正编写代码的凡人的类神力量的不懈追求的一部分。

  通常,架构小组决定公司将使用某种技术或产品(Kubernetes,OpenShift,AWS等),而没有完全了解组织内部的问题,以及这些技术旨在解决什么问题。

  我在Capital One期间亲眼看到了这一点,当时我们的架构团队决定我们将成为Kubernetes公司,但对那些必须实际开发和实施系统的人并没有真正的意义。

  通常,架构(或其营养不良的继兄弟,企业安全性)是导致他们获得所需东西的许多障碍的原因。

  如果他们(体系结构和安全性)都先了解了需要先解决的问题,然后再决定使用哪种工具,那么事情可能会大相径庭,并且很有可能变得更加顺畅。

  3.提出问题

  听起来很简单。 很简单。 好幼稚,但是,这很难。 什么都不懂的时候,提问题。 想知道为什么是这样吗? 提问题。 想知道项目的方向吗? 提问题。

  仅仅因为您提出问题并不意味着您将得到想要的答案,或者根本没有任何答案,但是如果您不提出问题,那么您将永远找不到答案。

  进入新团队或开始新工作后,最好的事情之一就是问所有问题。

  提出以以下内容开头的问题:"嘿,我是游戏购买这一切的新手,所以让我问什么可能是一个愚蠢的问题……"是一种很棒的方式,可以找出您想知道的事情,同时也挑战现状。

  您会惊讶地发现有多少组织"以某种原因"以某种方式做事。 通常是因为有人在不久前以这种方式进行了设置,没有人愿意回去修复它。

  通过提出问题,挑战性假设和挖掘信息,我们使我们的团队,团队,我们自己以及我们的生活变得更好。 通过这样的问题,我已经能够从基础架构中切出整个层次。

  谁知道您将能够进行哪些修剪。

  4.方钉不要进入圆孔

  就像很多美好的事物,团队合作精神,精密螺纹的机器,螺丝钉,好的时候,一切都会轻松自在。 我们的生活充满反馈,无论是否明确。

  键入时,键盘在手指下的感觉,按下扁平的虚拟按钮时手机会产生轻微的"咔嗒"声,我每次决定吃冰淇淋时,我的不耐乳糖的胃部反抗的方式 ; 这些都是反馈形式。

  他们会告诉我们什么时候进展顺利,正常或非常非常糟糕,实际上一切都是一样的。 之前我们都去过那里,从事一个项目,那种胃的感觉,一直告诉我们应该更改数据库以更好地支持我们的数据模型。

  那就是,如果您只是使用关系数据库和ORM,则可以编写大量此类数据库内数据,而不用编写大量易碎的数据转换代码。 或者,在找到自己的新团队或新工作后,由于某种原因,您与同事之间不再相处。

  不是因为您不喜欢他们,也不是他们不喜欢您,有些人在一起工作比其他人更好。 不要强迫它。 找到更好的解决方案,然后继续。

  与您的经理谈谈更换团队。 找到一个ORM并开始工作。 停止您正在做的事情,然后做会变得轻松的事情。 将方形钉/圆孔问题留给NASA书呆子。

  5.使用最佳工具完成工作(除非使用Java)

  我可能会很讨厌这样说,但是我看不出在当今行业中使用Java的理由。

  Java确实有一些与之抗衡的优势,我不会否认,但是这些差异并不真正适用于当今的工程环境。 以下是使用Java的一些优点:

  它可以在任何地方运行。自动内存管理(及其垃圾回收器)。JVM堆栈的广泛社区和框架/库/插件。

  让我们聊一会现实:您看到有多少个使用Java的软件商店编写一个代码库,目的是在多个体系结构,操作系统等上运行它? 至少不是大多数。

  如今,Java在内存管理领域也不是那么独特。 Go和Rust都具有某种垃圾回收,Python使用引用计数,许多其他语言也是如此。

  到目前为止,Java并不是唯一一个拥有大量活跃社区的语言。 Rust和Python拥有非常活跃和有用的社区,Go的社区每天都在增加。

  但是,至少在我看来,使用Java进行的其他权衡是不值得的。 因为Java依赖JVM,所以每个Java应用程序都会产生自动大小调整的成本。

  在谈论具有千兆字节可用空间(几百MB的空间不多)的服务器时,这可能不是一个要考虑的问题,但是在高度容器化的世界中,几百MB是天文数字。 (请注意,Python也会遭受此不利影响。)

  使用Go和Rust(及其他)之类的经过编译的静态链接语言,您可以拥有非常小,非常精简的容器,这些容器中通常只有一个二进制文件,大小只有4 MB。

  这对于网络吞吐量非常重要的大型组织尤其重要,下载5MB的新容器很容易。

  同样,由于JVM和Java是JIT编译的,因此运行Java代码会降低性能。

  对于低延迟,高吞吐量的应用程序,或对服务器进行装箱打包非常重要的情况,将字节码转换为系统调用而导致的性能损失是不值得的。

  所有这些就是为什么使用正确的工具来完成当前工作很重要的原因。

  您不想使用BASIC来使某人登月,也不想使用Java进行高性能计算-找到与您要解决的问题相匹配的解决方案。

  结论

  知道我错过了什么吗? 有更多规则的想法吗? 在下面的评论中让我知道! 我很乐意看到您的反馈,并参与大家对文章的想法。

  (本文翻译自Peter Christian Fraedrich的文章《5 Rules of Code》

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值