Language agnostic 如何提高您对代码的阅读和理解?

Language agnostic 如何提高您对代码的阅读和理解?,language-agnostic,Language Agnostic,在过去的5年左右的时间里,我一直在处理各种不同的项目和系统。这些项目的代码在质量、风格和规模方面存在显著差异。我看到了这两个例子:干净又恶心的1000行函数和if条件代码 我仍然觉得自己在阅读别人的代码、理解系统的内部结构等方面不是很有能力 我想了解一下您使用了哪些技术来提高阅读和理解他人代码的技能,如何快速提高速度,常用的工具、方法等 让我给大家一个答案,很多人都会这么说:你可以通过阅读代码来提高阅读代码的技能 P>有一个相关的职位来提高编程技巧,这是有用的,并与这篇文章并驾齐驱: 帮助我的

在过去的5年左右的时间里,我一直在处理各种不同的项目和系统。这些项目的代码在质量、风格和规模方面存在显著差异。我看到了这两个例子:干净又恶心的1000行函数和if条件代码

我仍然觉得自己在阅读别人的代码、理解系统的内部结构等方面不是很有能力

我想了解一下您使用了哪些技术来提高阅读和理解他人代码的技能,如何快速提高速度,常用的工具、方法等

让我给大家一个答案,很多人都会这么说:你可以通过阅读代码来提高阅读代码的技能


<> P>有一个相关的职位来提高编程技巧,这是有用的,并与这篇文章并驾齐驱:

帮助我的东西,最重要的是重构。

拿一个项目(可以是工作项目、个人项目、开源项目等等),然后开始重构

随着时间的推移,你对别人的代码重构得越多,你就越能“进入他们的头脑”,更好地理解他们的思维方式,无论是好是坏。

你可以通过阅读代码来提高阅读代码的技能

读什么代码

任何吸引你的开源项目。大多数开源代码都非常好


但不要读随机代码。阅读你真正关心的东西。你越了解问题领域,你就越能欣赏你正在阅读的解决方案。

我个人相信

“任何傻瓜都能写出计算机能理解的代码。好的程序员能写出人类能理解的代码。”-马丁·福勒


所以我的方法是找到那个人,然后把他的头打掉,这样他/她就不会感染这种病毒

除了能够更好地阅读代码的简单经验之外,我建议在应用程序中附加一个调试器,添加一些断点,并在数据通过系统时进行分析。这样你就知道发生了什么,而不是(通过逻辑或任何其他方式)假定发生了什么。

帮助我的事情,比其他任何事情都多,是测试和重构。除非你知道如何通过测试打破它,否则你不能说:“我理解这段代码”

我同意阅读开源代码。这里有一本书,但在我看来很烂。我会推荐一些为编程面试做准备的书,这些书经常会被推荐(我放的所有链接都是Google books链接:

[Programming Pearls]是一个很好的版本(尽管概念相同,但获得更新的版本), [编程实践]是另一个经典

这些都是非常实用的书,有真实的代码示例


另外,练习为已有的项目编写测试代码。这会让你被迫准确理解函数的功能,从而帮助你解决问题。如果结果与你预期的不符,你就会被迫思考为什么此人的代码不能像你预期的那样用于这些测试。浏览StackOverflow并查看声誉高的人必须说的话也总是有帮助的。

不要仅仅阅读开源代码,加入其中。这样你可以问“为什么它是这样写的”而不是仅仅阅读它。通常,做一些不正常的事情有一个潜在的原因,不管它是否真实


此外,如果你积极参与,你将能够看到代码库的进展。你将熟悉不同人群的开发风格。当你遇到需要通读的非附属项目时,这可能会为你的大脑提供不同的途径。

你通过游泳学习游泳,你通过阅读来学习阅读。 首先,试着阅读别人在你喜欢的领域写的小代码片段

我是通过阅读我最喜欢的主题(数学、算法等)的Python代码开始的

优点:

  • Python代码更干净,因此您在第一次尝试时不会感到沮丧
  • 从可管理的小事情开始帮助(很多)
  • 使用像这样的工具来组织你的想法也会有所帮助
  • 然后,您可以继续使用更复杂、更脏的代码
2件特别的事情

重构 当你看到代码在你的IDE中变得晦涩难懂时,重构它,让它变得有意义,让它易于阅读

评论 使用重构来划分“如何”,但使用注释来说明原因

就像Steve McConnell在《代码完成2》中所说的那样,遵循Psuedocode编程过程(在本例中,在编写代码之后)。它将帮助您和任何未来的开发人员阅读代码