云上代码交付链
![](https://i-blog.csdnimg.cn/blog_migrate/55b436b54ec7e97239fc9e8119cbe867.png)
免责声明:由于我主要使用JavaScript ,因此可以从JavaScript的光环中看到本文,但这是一个普遍的问题,不应受一种语言的限制。 下面所说的全部适用于整个软件开发。
我们太着迷于如何编写代码
每个满月都会创建新的设计模式,新的框架和库,甚至是新的语言(TypeScript,Elm,Reason,ClojureScript,Dart),以帮助开发人员做同样的事情 - 写下应用程序逻辑。 我们以前是否已经有多种编写代码的方式? 我们是否真的需要再一个框架,该框架将比以前更好地帮助我们描述应用程序逻辑? 也许。 不要误会我的意思,我喜欢对现有框架进行不断的改进,也喜欢创建新的框架和工具,但是,我认为我们不应该花费所有精力,而应该全神贯注于此。 作为一个行业,我们非常着迷于如何编写代码,我们想使编写过程完美无缺,而我们如何读取代码却完全被抛在后面 。
观察#1:我们不是在真空中编写代码,几乎总是我们宁愿编辑或扩展现有代码库,也不愿在空白页上添加新功能。
必须先进行代码读取阶段
这意味着您计划进行的所有代码更改仅在您阅读并理解周围的代码后才适用 。 您可能会想:“他一定是在开玩笑,当然,我们在进行更改之前先了解了代码”。 我们要不要? 如此多次,我陷入了一个思考,即在更改代码时我的观点很狭窄 。 只是增加了一行,增加了一个属性,对已经存在的功能又增加了一个简单的行为,我可以立即编写该代码,对吗?
观察#2:我们做本地代码更改,完全错过了大局。
现在,将所有这些乘以编辑您的代码库而不绘制整个应用程序的团队成员的数量。 长期会发生什么?
还记得您从头开始构建的所有项目吗? 我们都有。 精美的架构,简洁的代码,独立的模块,封装的逻辑。 干净的代码,一年后看起来一样吗? 两年后? 答案可能是“否”,您可能已经开始怀疑,为什么呢? 我们要继续建造美观整洁的建筑有什么障碍? 这是一个简单的问题-我们已经在这里有了代码,这就是为什么。 我们需要做的就是: 阅读代码, 理解代码并进行适当的更改 ,而不仅仅是在“那里再进行一次方法调用” —仅因为代码行应在某一时刻执行,并不意味着代码行应该采用一种方法(但我知道,这样更容易)。
观察#3:如果我们需要在此之前阅读和理解现有代码,似乎我们很难正确编写代码。
阅读很难,这就是为什么……
“明天的截止日期”,“前任团队的旧遗产”,“今天我有点困” –所有这些以及许多其他借口,我们都是不阅读代码的 。 相反,我们做一些假设:“我相信我们还没有这个util方法,我会添加它”,“我认为这有点重复的逻辑,但是我现在无法重构所有内容”,“一行修复,它必须是有史以来最好的解决方案”。 这意味着我们仅根据对代码的猜测,而不是基于阅读和分析代码后的知识, 盲目地更改代码。
我们避免读代码不是因为我们是不好的工程师,而是因为它非常难。 这是您在编程中可以想象的最艰巨的任务。
您需要处理成千上万个小片段,并且需要将它们概括为更有意义和更不具体的事物,同时识别重复和模式,您正在尝试查看全局并理解所有这些 。
观察#4:我们要么花太多时间无效阅读代码,要么决定根本不阅读它。
“读取代码”甚至意味着什么?
好吧,首先,让我们最后描述一下阅读代码的含义。 与您最喜欢的小说书绝对不同,对吗? 但是让我们先定义代码本身。 如果您尝试用自己的语言提出应用程序代码的定义,则可能看起来像这样:
代码是一组指令(在文件之间传播),可根据用户行为和当前环境状态遵循和转换数据以进行预定义的旅程。
现在,当我们知道什么是代码时,更容易理解我们在阅读代码时试图达到的目标。 我们想:
- 找出应用程序中主要旅程的关键步骤(例如,用户注册,订单提交等)
- 找出可能影响特定旅程中数据流的指令
- 找出当前环境状况或可能影响环境状况的情况
我们希望很快找到答案。 并在我们心中永远拥有这些知识。 因为如果您有这样的想法,便可以看到整个应用程序逻辑被映射到codebase的概况 。 你感到那种力量,不是吗?
您有一个错误,并且您已经知道它为什么会发生,以及应该更改代码的哪一行,甚至都无需阅读代码。 或者,他们向您询问了有关新功能的信息,您已经知道应该预先对哪个文件进行什么重构以保持体系结构整洁。
然后你醒了。 听起来太贴心了,难以置信。 还是我们可以做到?
参与代码,而不仅仅是看它
现在您可能会想:“老兄,我在这里发脾气,您为什么要谈论这些显而易见的事情”。 好吧,显而易见的事情, 谁也不会打扰 。 您使用多少种工具或技术来阅读和理解代码? 有效。 这是一个关键词。 如果我们有很多时间,我们可以理解并理解任何代码,但通常情况下我们没有。 通常,我们只是在最喜欢的代码编辑器中打开代码库,然后开始混乱地从一个文件跳到另一个文件。 它困扰着我。 我们可以做得更好。
首先。 为了开始理解代码,仅阅读代码是不够的。 您需要深入了解它才能感觉到它。 您需要使用代码,它可以增强您的学习能力 。 这就是为什么重构对理解代码有很大帮助的原因-您可以并行阅读和进行调整。
但是,不仅重构可以做到这一点。 您可以通过编写注释来开始对代码进行无害的更改。 您可以开始在代码中留下面包屑 :在代码中标记您曾经去过的地方,您已经看过和分析过的地方,或者只是不想错过的地方,这是非常重要的。 您始终可以将它们用作找到走出代码迷宫之路的线索。
而且,由于我提到了代码迷宫,让我们考虑一下。 也许我们一直都在从错误的位置看代码? 当您已经迷宫深处时,很难从迷宫中找到出路(意思是,很难阅读代码行并在脑海中连接点)。 也许,我们应该退后一步。 想象一下,您不在迷宫中,而是从顶部看-不再是迷宫,您可以清楚地看到一切! 而且,既然您正在想象,就可以考虑甚至更疯狂的情况-如果整个迷宫都消失了,并且您已经被引导到应该去的地方以及要看什么文件,该怎么办? 想象一下,巨大的代码库的所有噪音刚刚消失了。
如果所有解决方案都可以解决……
敬请期待,更多即将推出。
如果您喜欢这篇文章,并希望获得有关我的下一篇文章的更新,请在twitter @bliashenko上关注我!
翻译自: https://hackernoon.com/how-to-stop-reading-code-and-start-delivering-part-1-6215dd64f507
云上代码交付链