编程你想生活的世界!
编程你想生活的世界!
经过 安德烈斯·埃尔南德斯 ,Growth Acceleration Partners 技术总监
作为开发人员,我们花费数千小时通过数字世界中的代码镜头看世界。但是你有没有想过你是否应该在这个数字世界中提高自己的生活质量?
在我们的项目中,我们从事许多需要我们所有专业知识来实施新功能、调查和解决错误以及许多其他任务的任务。每天,我们深入调试和阅读代码,可能比实际键入新代码的频率更高。
我们花了很多时间学习代码的结构方式;遵循的好的或坏的做法;项目代码中存在的所有组件、模块和第三方;以及项目的所有技术方面。
我们花在项目上的时间越多,我们建造的东西就越多,并在那里拥有第二次生命。那么,让我问你,你居住的这个数字世界是不是……是一个可以花这么多时间的好地方吗?
让我们换个角度看。我们的项目源代码和架构就像一个社区、社区或城市——取决于项目的规模——它甚至可能看起来像一个整个世界。项目的每一部分都有其存在的功能和意义。所有的组件就像这个虚拟世界中的建筑物或功能结构。
如果我们考虑建筑,想象一个像中世纪的、坚固的、有围墙保护的城市这样的巨石城市,它连接到城外的其他服务,但大多数重要的问题都发生在内部。
面向服务的架构 (SOA) 项目可能更像布达佩斯市,我们将“Pest”连接到“Buda”,中间有一条河流,即多瑙河。 Pest 是别致和旅游的一面——有趣的地方——有很多互动,有点像前端世界。另一边的布达更加经典和住宅,实用但有条理。这是后端世界。这两部分通过桥梁、API 连接起来,就像著名而美丽的链桥一样。
微服务可能更像是一个群岛,有许多不同的岛屿,大小不同,所有这些岛屿都以不同的方式连接和通信。信息在公共汽车、船只或拖车中四处流动。
为什么我们生活在这个虚拟世界中的位置如此重要?嗯,每次我们构建一个新的组件,它就像代码城市中的一个新建筑物或一块基础设施。
如果你住在一个漂亮而现代的城市,有人在一个美丽的公园附近放置一个非常丑陋且没有吸引力的结构,它会脱颖而出。很明显,它不合适。然而,如果你把同样丑陋的、几乎倒塌的结构放在一个不安全或不发达的社区,它可能看起来就像那里的其他结构。
James Q. Wilson 和 George Kellin 著名的“破窗”理论说:
“社会心理学家和警察倾向于同意,如果建筑物中的一扇窗户被打破并且没有修理,那么所有其余的窗户很快就会被打破。在漂亮的社区和破败的社区中都是如此。破窗不一定会大规模发生,因为有些地区居住着坚定的破窗者,而另一些地区则居住着窗户爱好者;相反,一个未修复的破窗户是一个没有人关心的信号,因此打破更多的窗户没有任何成本 。” ( https://www.theatlantic.com/magazine/archive/1982/03/broken-windows/304465/ )
同样的事情也会发生在你的代码库中。如果您构建了一个非常不可接受或有缺陷的组件,那么另一个公民(队友)很可能会跟随您作为指导,并且很快就会有很多这样的。因此,我们的代码库决定了事情的完成和构建方式。
做正确的事很重要。在任何时候,有人——可以是任何开发人员、实习生,或者更糟糕的是,你未来的你——会抱怨他们花了多少时间来修复或理解写得不好的代码。
让我告诉你一个真实的经历和可怕的故事。我在一个大型项目上工作了很多年,该项目最初是一个普通的巨石。在某个时候,它变得如此之大,以至于它变成了一个怪物,一座由模块组成的大城市。每个模块都是一个自己的城市,有自己的规则和做事方式,但都与大应用程序相连。像纽约市一样,它分为五个区,它们之间都非常不同:布朗克斯区、布鲁克林区、曼哈顿区、皇后区和史泰登岛;但都通过地铁、街道和桥梁相连。
有一个特定的模块,当我被分配到那里工作时,我知道如果有人要我去参观一个非常危险的社区……贫民窟。为什么?因为我知道我会在那里被偷。我的时间,我的精神平静,我的富有成效的感觉,一切都会被偷走。
试想一下:大多数文件包含 4,000 行程序代码,其中包含大量硬编码的复杂 SQL 查询。确定修复的解决方案总是花费不少于一周的时间。代码很吓人,但也很脆弱。任何更改都意味着又需要很长时间的测试和重做,因为大多数时间都发生在编程中,事情不是第一次就可以正常工作。
另一方面,还有其他一些架构非常好的模块,我真的很喜欢在其中工作。在这里,就所有内容的创建方式而言,进行更改或添加新功能非常容易。一切都在使用正确的 ORM、MVC 模式并遵循良好的软件原则。
我们遵循了 Sandy Metz 对开发人员的建议和规则,一切都变得更容易了。 https://thoughtbot.com/blog/sandi-metz-rules-for-developers
- 类不能超过 100 行代码。
- 方法不能超过五行代码。
- 将不超过四个参数传递给一个方法。哈希选项是参数。
- 控制器只能实例化一个对象。因此,视图只能知道一个实例变量,并且视图应该只向该对象发送消息。
我们的代码库,就像城市一样,在不断发展和变化。我们添加组件、建筑物、桥梁、道路和人行道。但总有改进的余地。我们有瓶颈、交通拥堵、废弃的建筑物和污染,仅举几例。开发团队知道这些痛点,它们通常被称为“技术债务”,对吧?
如果您开始像我们居住的社区一样看到代码,那么您将只希望为您的环境提供最好的。因此,作为这个虚拟世界的公民,我们有责任确保没有破损的窗户、没有问题的社区或无法使用的部分。
所以,确保你正在建造一个你想居住的地方,或者至少是一个你未来的自己会健康、快乐和自豪的世界!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明